Browse Source

Reinstate check for system queueing lag when the current pool's queue is maxed out, there is no staged work, and the work is needed now.

nfactor-troky
Con Kolivas 12 years ago
parent
commit
1a041668a5
  1. 9
      cgminer.c

9
cgminer.c

@ -3712,17 +3712,25 @@ bool queue_request(struct thr_info *thr, bool needed)
{ {
int cq, cs, ts, tq, maxq = opt_queue + mining_threads; int cq, cs, ts, tq, maxq = opt_queue + mining_threads;
struct workio_cmd *wc; struct workio_cmd *wc;
bool lag = false;
cq = current_queued(); cq = current_queued();
cs = current_staged(); cs = current_staged();
ts = total_staged(); ts = total_staged();
tq = global_queued(); tq = global_queued();
if (needed && cq >= maxq && !ts && !opt_fail_only) {
/* If we're queueing work faster than we can stage it, consider
* the system lagging and allow work to be gathered from
* another pool if possible */
lag = true;
} else {
/* Test to make sure we have enough work for pools without rolltime /* Test to make sure we have enough work for pools without rolltime
* and enough original work for pools with rolltime */ * and enough original work for pools with rolltime */
if (((cs || cq >= opt_queue) && ts >= maxq) || if (((cs || cq >= opt_queue) && ts >= maxq) ||
((cs || cq) && tq >= maxq)) ((cs || cq) && tq >= maxq))
return true; return true;
}
/* fill out work request message */ /* fill out work request message */
wc = calloc(1, sizeof(*wc)); wc = calloc(1, sizeof(*wc));
@ -3733,6 +3741,7 @@ bool queue_request(struct thr_info *thr, bool needed)
wc->cmd = WC_GET_WORK; wc->cmd = WC_GET_WORK;
wc->thr = thr; wc->thr = thr;
wc->lagging = lag;
applog(LOG_DEBUG, "Queueing getwork request to work thread"); applog(LOG_DEBUG, "Queueing getwork request to work thread");

Loading…
Cancel
Save