Browse Source

Merge pull request #313 from kanoi/main

API stats add some pool getwork difficulty stats
nfactor-troky
Con Kolivas 12 years ago
parent
commit
a63ecf63f0
  1. 2
      API-README
  2. 5
      api.c
  3. 17
      cgminer.c
  4. 5
      miner.h

2
API-README

@ -401,6 +401,8 @@ Modified API commands:
'pools' - add 'Proxy Type', 'Proxy', 'Difficulty Accepted', 'Difficulty Rejected', 'pools' - add 'Proxy Type', 'Proxy', 'Difficulty Accepted', 'Difficulty Rejected',
'Difficulty Stale', 'Last Share Difficulty' 'Difficulty Stale', 'Last Share Difficulty'
'config' - add 'Queue', 'Expiry' 'config' - add 'Queue', 'Expiry'
'stats' - add 'Work Diff', 'Min Diff', 'Max Diff', 'Min Diff Count',
'Max Diff Count' to the pool stats
---------- ----------

5
api.c

@ -2789,6 +2789,11 @@ static int itemstats(int i, char *id, struct cgminer_stats *stats, struct cgmine
root = api_add_bool(root, "Work Can Roll", &(pool_stats->canroll), false); root = api_add_bool(root, "Work Can Roll", &(pool_stats->canroll), false);
root = api_add_bool(root, "Work Had Expire", &(pool_stats->hadexpire), false); root = api_add_bool(root, "Work Had Expire", &(pool_stats->hadexpire), false);
root = api_add_uint32(root, "Work Roll Time", &(pool_stats->rolltime), false); root = api_add_uint32(root, "Work Roll Time", &(pool_stats->rolltime), false);
root = api_add_diff(root, "Work Diff", &(pool_stats->last_diff), false);
root = api_add_diff(root, "Min Diff", &(pool_stats->min_diff), false);
root = api_add_diff(root, "Max Diff", &(pool_stats->max_diff), false);
root = api_add_uint32(root, "Min Diff Count", &(pool_stats->min_diff_count), false);
root = api_add_uint32(root, "Max Diff Count", &(pool_stats->max_diff_count), false);
} }
if (extra) if (extra)

17
cgminer.c

@ -2047,6 +2047,7 @@ static double DIFFEXACTONE = 269599466671506397946670150870196306736371444225405
*/ */
static void calc_diff(struct work *work) static void calc_diff(struct work *work)
{ {
struct cgminer_pool_stats *pool_stats = &(work->pool->cgminer_pool_stats);
double targ; double targ;
int i; int i;
@ -2057,6 +2058,22 @@ static void calc_diff(struct work *work)
} }
work->work_difficulty = DIFFEXACTONE / (targ ? : DIFFEXACTONE); work->work_difficulty = DIFFEXACTONE / (targ ? : DIFFEXACTONE);
pool_stats->last_diff = work->work_difficulty;
if (work->work_difficulty == pool_stats->min_diff)
pool_stats->min_diff_count++;
else if (work->work_difficulty < pool_stats->min_diff || pool_stats->min_diff == 0) {
pool_stats->min_diff = work->work_difficulty;
pool_stats->min_diff_count = 1;
}
if (work->work_difficulty == pool_stats->max_diff)
pool_stats->max_diff_count++;
else if (work->work_difficulty > pool_stats->max_diff) {
pool_stats->max_diff = work->work_difficulty;
pool_stats->max_diff_count = 1;
}
} }
static void get_benchmark_work(struct work *work) static void get_benchmark_work(struct work *work)

5
miner.h

@ -314,6 +314,11 @@ struct cgminer_pool_stats {
bool canroll; bool canroll;
bool hadexpire; bool hadexpire;
uint32_t rolltime; uint32_t rolltime;
double min_diff;
double max_diff;
double last_diff;
uint32_t min_diff_count;
uint32_t max_diff_count;
}; };
struct cgpu_info { struct cgpu_info {

Loading…
Cancel
Save