Browse Source

Check that all threads on the device that called get_work are waiting on getwork before considering the pool lagging.

nfactor-troky
Con Kolivas 13 years ago
parent
commit
b0de3edeb8
  1. 25
      cgminer.c

25
cgminer.c

@ -3632,11 +3632,26 @@ retry: @@ -3632,11 +3632,26 @@ retry:
goto out;
}
if (requested && !newreq && !requests_staged() && requests_queued() >= mining_threads &&
!pool_tset(pool, &pool->lagging)) {
applog(LOG_WARNING, "Pool %d not providing work fast enough", pool->pool_no);
pool->getfail_occasions++;
total_go++;
if (!pool->lagging && requested && !newreq && !requests_staged() && requests_queued() >= mining_threads) {
struct cgpu_info *cgpu = thr->cgpu;
bool stalled = true;
int i;
/* Check to see if all the threads on the device that called
* get_work are waiting on work and only consider the pool
* lagging if true */
for (i = 0; i < cgpu->threads; i++) {
if (!cgpu->thr[i]->getwork) {
stalled = false;
break;
}
}
if (stalled && !pool_tset(pool, &pool->lagging)) {
applog(LOG_WARNING, "Pool %d not providing work fast enough", pool->pool_no);
pool->getfail_occasions++;
total_go++;
}
}
newreq = requested = false;

Loading…
Cancel
Save