Skip to content

Commit

Permalink
Fix max-nonce auto-adjustment logic to actually work
Browse files Browse the repository at this point in the history
  • Loading branch information
Jeff Garzik authored and Jeff Garzik committed Feb 4, 2011
1 parent 51eb1b4 commit e47076c
Showing 1 changed file with 8 additions and 10 deletions.
18 changes: 8 additions & 10 deletions cpu-miner.c
Expand Up @@ -54,7 +54,7 @@ static const char *algo_names[] = {

bool opt_debug = false;
bool opt_protocol = false;
bool opt_quiet = false;
static bool opt_quiet = false;
static int opt_retries = 10;
static int opt_fail_pause = 30;
static int opt_scantime = 5;
Expand Down Expand Up @@ -258,12 +258,12 @@ static void *miner_thread(void *thr_id_int)
int failures = 0;
static const char *rpc_req =
"{\"method\": \"getwork\", \"params\": [], \"id\":0}\r\n";
uint32_t max_nonce = 0xffffff;

while (1) {
struct work work __attribute__((aligned(128)));
unsigned long hashes_done;
struct timeval tv_start, tv_end, diff;
uint32_t max_nonce = 0xffffff;
json_t *val;
bool rc;

Expand Down Expand Up @@ -360,14 +360,12 @@ static void *miner_thread(void *thr_id_int)
/* adjust max_nonce to meet target scan time */
if (diff.tv_sec > (opt_scantime * 2))
max_nonce /= 2; /* large decrease */
else if (diff.tv_sec > opt_scantime)
max_nonce -= 1000; /* small decrease */
else if (diff.tv_sec < (opt_scantime - 1))
max_nonce += 1000; /* small increase */

/* catch stupidly slow cases, such as simulators */
if (max_nonce < 1000)
max_nonce = 1000;
else if ((diff.tv_sec > opt_scantime) &&
(max_nonce > 1500000))
max_nonce -= 1000000; /* small decrease */
else if ((diff.tv_sec < opt_scantime) &&
(max_nonce < 0xffffec76))
max_nonce += 100000; /* small increase */

/* if nonce found, submit work */
if (rc)
Expand Down

0 comments on commit e47076c

Please sign in to comment.