mirror of
https://github.com/GOSTSec/sgminer
synced 2025-09-03 01:32:33 +00:00
Take into account average getwork delay as a marker of pool communications when considering work stale.
This commit is contained in:
parent
f32ffb8718
commit
c20a89d998
25
cgminer.c
25
cgminer.c
@ -2158,25 +2158,34 @@ static bool workio_get_work(struct workio_cmd *wc)
|
|||||||
static bool stale_work(struct work *work, bool share)
|
static bool stale_work(struct work *work, bool share)
|
||||||
{
|
{
|
||||||
struct timeval now;
|
struct timeval now;
|
||||||
|
time_t work_expiry;
|
||||||
struct pool *pool;
|
struct pool *pool;
|
||||||
|
int getwork_delay;
|
||||||
|
|
||||||
if (work->mandatory)
|
if (work->mandatory)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (share)
|
||||||
|
work_expiry = opt_expiry;
|
||||||
|
else if (work->rolls)
|
||||||
|
work_expiry = work->rolltime;
|
||||||
|
else
|
||||||
|
work_expiry = opt_scantime;
|
||||||
|
pool = work->pool;
|
||||||
|
/* Factor in the average getwork delay of this pool, rounding it up to
|
||||||
|
* the nearest second */
|
||||||
|
getwork_delay = pool->cgminer_pool_stats.getwork_wait_rolling * 5 + 1;
|
||||||
|
work_expiry -= getwork_delay;
|
||||||
|
if (unlikely(work_expiry < 5))
|
||||||
|
work_expiry = 5;
|
||||||
|
|
||||||
gettimeofday(&now, NULL);
|
gettimeofday(&now, NULL);
|
||||||
if (share) {
|
if ((now.tv_sec - work->tv_staged.tv_sec) >= work_expiry)
|
||||||
if ((now.tv_sec - work->tv_staged.tv_sec) >= opt_expiry)
|
|
||||||
return true;
|
|
||||||
} else if (work->rolls) {
|
|
||||||
if ((now.tv_sec - work->tv_staged.tv_sec) >= work->rolltime)
|
|
||||||
return true;
|
|
||||||
} else if ((now.tv_sec - work->tv_staged.tv_sec) >= opt_scantime)
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (work->work_block != work_block)
|
if (work->work_block != work_block)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
pool = work->pool;
|
|
||||||
if (opt_fail_only && !share && pool != current_pool() && pool->enabled != POOL_REJECTING)
|
if (opt_fail_only && !share && pool != current_pool() && pool->enabled != POOL_REJECTING)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user