mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-10 14:58:01 +00:00
Replace gettimeofday usage in cgminer.c with cgtime
This commit is contained in:
parent
3d7f824363
commit
bb964b4b99
108
cgminer.c
108
cgminer.c
@ -321,7 +321,7 @@ static bool should_run(void)
|
|||||||
if (!schedstart.enable && !schedstop.enable)
|
if (!schedstart.enable && !schedstop.enable)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
gettimeofday(&tv, NULL);
|
cgtime(&tv);
|
||||||
const time_t tmp_time = tv.tv_sec;
|
const time_t tmp_time = tv.tv_sec;
|
||||||
tm = localtime(&tmp_time);
|
tm = localtime(&tmp_time);
|
||||||
if (schedstart.enable) {
|
if (schedstart.enable) {
|
||||||
@ -1660,7 +1660,7 @@ static void update_gbt(struct pool *pool)
|
|||||||
if (rc) {
|
if (rc) {
|
||||||
applog(LOG_DEBUG, "Successfully retrieved and updated GBT from pool %u %s",
|
applog(LOG_DEBUG, "Successfully retrieved and updated GBT from pool %u %s",
|
||||||
pool->pool_no, pool->rpc_url);
|
pool->pool_no, pool->rpc_url);
|
||||||
gettimeofday(&pool->tv_idle, NULL);
|
cgtime(&pool->tv_idle);
|
||||||
} else {
|
} else {
|
||||||
applog(LOG_DEBUG, "Successfully retrieved but FAILED to decipher GBT from pool %u %s",
|
applog(LOG_DEBUG, "Successfully retrieved but FAILED to decipher GBT from pool %u %s",
|
||||||
pool->pool_no, pool->rpc_url);
|
pool->pool_no, pool->rpc_url);
|
||||||
@ -1681,7 +1681,7 @@ static void gen_gbt_work(struct pool *pool, struct work *work)
|
|||||||
unsigned char *merkleroot;
|
unsigned char *merkleroot;
|
||||||
struct timeval now;
|
struct timeval now;
|
||||||
|
|
||||||
gettimeofday(&now, NULL);
|
cgtime(&now);
|
||||||
if (now.tv_sec - pool->tv_lastwork.tv_sec > 60)
|
if (now.tv_sec - pool->tv_lastwork.tv_sec > 60)
|
||||||
update_gbt(pool);
|
update_gbt(pool);
|
||||||
|
|
||||||
@ -1730,7 +1730,7 @@ static void gen_gbt_work(struct pool *pool, struct work *work)
|
|||||||
work->getwork_mode = GETWORK_MODE_GBT;
|
work->getwork_mode = GETWORK_MODE_GBT;
|
||||||
work->work_block = work_block;
|
work->work_block = work_block;
|
||||||
calc_diff(work, 0);
|
calc_diff(work, 0);
|
||||||
gettimeofday(&work->tv_staged, NULL);
|
cgtime(&work->tv_staged);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool gbt_decode(struct pool *pool, json_t *res_val)
|
static bool gbt_decode(struct pool *pool, json_t *res_val)
|
||||||
@ -1831,7 +1831,7 @@ static bool work_decode(struct pool *pool, struct work *work, json_t *val)
|
|||||||
json_t *res_val = json_object_get(val, "result");
|
json_t *res_val = json_object_get(val, "result");
|
||||||
bool ret = false;
|
bool ret = false;
|
||||||
|
|
||||||
gettimeofday(&pool->tv_lastwork, NULL);
|
cgtime(&pool->tv_lastwork);
|
||||||
if (!res_val || json_is_null(res_val)) {
|
if (!res_val || json_is_null(res_val)) {
|
||||||
applog(LOG_ERR, "JSON Failed to decode result");
|
applog(LOG_ERR, "JSON Failed to decode result");
|
||||||
goto out;
|
goto out;
|
||||||
@ -1848,7 +1848,7 @@ static bool work_decode(struct pool *pool, struct work *work, json_t *val)
|
|||||||
|
|
||||||
memset(work->hash, 0, sizeof(work->hash));
|
memset(work->hash, 0, sizeof(work->hash));
|
||||||
|
|
||||||
gettimeofday(&work->tv_staged, NULL);
|
cgtime(&work->tv_staged);
|
||||||
|
|
||||||
ret = true;
|
ret = true;
|
||||||
|
|
||||||
@ -2498,10 +2498,10 @@ static bool submit_upstream_work(struct work *work, CURL *curl, bool resubmit)
|
|||||||
applog(LOG_DEBUG, "DBG: sending %s submit RPC call: %s", pool->rpc_url, s);
|
applog(LOG_DEBUG, "DBG: sending %s submit RPC call: %s", pool->rpc_url, s);
|
||||||
s = realloc_strcat(s, "\n");
|
s = realloc_strcat(s, "\n");
|
||||||
|
|
||||||
gettimeofday(&tv_submit, NULL);
|
cgtime(&tv_submit);
|
||||||
/* issue JSON-RPC request */
|
/* issue JSON-RPC request */
|
||||||
val = json_rpc_call(curl, pool->rpc_url, pool->rpc_userpass, s, false, false, &rolltime, pool, true);
|
val = json_rpc_call(curl, pool->rpc_url, pool->rpc_userpass, s, false, false, &rolltime, pool, true);
|
||||||
gettimeofday(&tv_submit_reply, NULL);
|
cgtime(&tv_submit_reply);
|
||||||
free(s);
|
free(s);
|
||||||
|
|
||||||
if (unlikely(!val)) {
|
if (unlikely(!val)) {
|
||||||
@ -2735,7 +2735,7 @@ static void get_benchmark_work(struct work *work)
|
|||||||
memcpy(work, &bench_block, min_size);
|
memcpy(work, &bench_block, min_size);
|
||||||
work->mandatory = true;
|
work->mandatory = true;
|
||||||
work->pool = pools[0];
|
work->pool = pools[0];
|
||||||
gettimeofday(&(work->tv_getwork), NULL);
|
cgtime(&work->tv_getwork);
|
||||||
memcpy(&(work->tv_getwork_reply), &(work->tv_getwork), sizeof(struct timeval));
|
memcpy(&(work->tv_getwork_reply), &(work->tv_getwork), sizeof(struct timeval));
|
||||||
work->getwork_mode = GETWORK_MODE_BENCHMARK;
|
work->getwork_mode = GETWORK_MODE_BENCHMARK;
|
||||||
calc_diff(work, 0);
|
calc_diff(work, 0);
|
||||||
@ -2754,7 +2754,7 @@ static bool get_upstream_work(struct work *work, CURL *curl)
|
|||||||
|
|
||||||
url = pool->rpc_url;
|
url = pool->rpc_url;
|
||||||
|
|
||||||
gettimeofday(&(work->tv_getwork), NULL);
|
cgtime(&work->tv_getwork);
|
||||||
|
|
||||||
val = json_rpc_call(curl, url, pool->rpc_userpass, pool->rpc_req, false,
|
val = json_rpc_call(curl, url, pool->rpc_userpass, pool->rpc_req, false,
|
||||||
false, &work->rolltime, pool, false);
|
false, &work->rolltime, pool, false);
|
||||||
@ -2767,7 +2767,7 @@ static bool get_upstream_work(struct work *work, CURL *curl)
|
|||||||
} else
|
} else
|
||||||
applog(LOG_DEBUG, "Failed json_rpc_call in get_upstream_work");
|
applog(LOG_DEBUG, "Failed json_rpc_call in get_upstream_work");
|
||||||
|
|
||||||
gettimeofday(&(work->tv_getwork_reply), NULL);
|
cgtime(&work->tv_getwork_reply);
|
||||||
timersub(&(work->tv_getwork_reply), &(work->tv_getwork), &tv_elapsed);
|
timersub(&(work->tv_getwork_reply), &(work->tv_getwork), &tv_elapsed);
|
||||||
pool_stats->getwork_wait_rolling += ((double)tv_elapsed.tv_sec + ((double)tv_elapsed.tv_usec / 1000000)) * 0.63;
|
pool_stats->getwork_wait_rolling += ((double)tv_elapsed.tv_sec + ((double)tv_elapsed.tv_usec / 1000000)) * 0.63;
|
||||||
pool_stats->getwork_wait_rolling /= 1.63;
|
pool_stats->getwork_wait_rolling /= 1.63;
|
||||||
@ -2991,7 +2991,7 @@ static void push_curl_entry(struct curl_ent *ce, struct pool *pool)
|
|||||||
{
|
{
|
||||||
mutex_lock(&pool->pool_lock);
|
mutex_lock(&pool->pool_lock);
|
||||||
list_add_tail(&ce->node, &pool->curlring);
|
list_add_tail(&ce->node, &pool->curlring);
|
||||||
gettimeofday(&ce->tv, NULL);
|
cgtime(&ce->tv);
|
||||||
pthread_cond_broadcast(&pool->cr_cond);
|
pthread_cond_broadcast(&pool->cr_cond);
|
||||||
mutex_unlock(&pool->pool_lock);
|
mutex_unlock(&pool->pool_lock);
|
||||||
}
|
}
|
||||||
@ -3014,7 +3014,7 @@ static inline bool should_roll(struct work *work)
|
|||||||
|
|
||||||
/* We shouldn't roll if we're unlikely to get one shares' duration
|
/* We shouldn't roll if we're unlikely to get one shares' duration
|
||||||
* work out of doing so */
|
* work out of doing so */
|
||||||
gettimeofday(&now, NULL);
|
cgtime(&now);
|
||||||
if (now.tv_sec - work->tv_staged.tv_sec > expiry)
|
if (now.tv_sec - work->tv_staged.tv_sec > expiry)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -3087,7 +3087,7 @@ static struct work *make_clone(struct work *work)
|
|||||||
struct work *work_clone = copy_work(work);
|
struct work *work_clone = copy_work(work);
|
||||||
|
|
||||||
work_clone->clone = true;
|
work_clone->clone = true;
|
||||||
gettimeofday((struct timeval *)&(work_clone->tv_cloned), NULL);
|
cgtime((struct timeval *)&(work_clone->tv_cloned));
|
||||||
work_clone->longpoll = false;
|
work_clone->longpoll = false;
|
||||||
work_clone->mandatory = false;
|
work_clone->mandatory = false;
|
||||||
/* Make cloned work appear slightly older to bias towards keeping the
|
/* Make cloned work appear slightly older to bias towards keeping the
|
||||||
@ -3131,7 +3131,7 @@ out_unlock:
|
|||||||
static void pool_died(struct pool *pool)
|
static void pool_died(struct pool *pool)
|
||||||
{
|
{
|
||||||
if (!pool_tset(pool, &pool->idle)) {
|
if (!pool_tset(pool, &pool->idle)) {
|
||||||
gettimeofday(&pool->tv_idle, NULL);
|
cgtime(&pool->tv_idle);
|
||||||
if (pool == current_pool()) {
|
if (pool == current_pool()) {
|
||||||
applog(LOG_WARNING, "Pool %d %s not responding!", pool->pool_no, pool->rpc_url);
|
applog(LOG_WARNING, "Pool %d %s not responding!", pool->pool_no, pool->rpc_url);
|
||||||
switch_pools(NULL);
|
switch_pools(NULL);
|
||||||
@ -3193,7 +3193,7 @@ static bool stale_work(struct work *work, bool share)
|
|||||||
if (unlikely(work_expiry < 5))
|
if (unlikely(work_expiry < 5))
|
||||||
work_expiry = 5;
|
work_expiry = 5;
|
||||||
|
|
||||||
gettimeofday(&now, NULL);
|
cgtime(&now);
|
||||||
if ((now.tv_sec - work->tv_staged.tv_sec) >= work_expiry) {
|
if ((now.tv_sec - work->tv_staged.tv_sec) >= work_expiry) {
|
||||||
applog(LOG_DEBUG, "Work stale due to expiry");
|
applog(LOG_DEBUG, "Work stale due to expiry");
|
||||||
return true;
|
return true;
|
||||||
@ -3570,7 +3570,7 @@ int restart_wait(unsigned int mstime)
|
|||||||
|
|
||||||
tdiff.tv_sec = mstime / 1000;
|
tdiff.tv_sec = mstime / 1000;
|
||||||
tdiff.tv_usec = mstime * 1000 - (tdiff.tv_sec * 1000000);
|
tdiff.tv_usec = mstime * 1000 - (tdiff.tv_sec * 1000000);
|
||||||
gettimeofday(&now, NULL);
|
cgtime(&now);
|
||||||
timeradd(&now, &tdiff, &then);
|
timeradd(&now, &tdiff, &then);
|
||||||
abstime.tv_sec = then.tv_sec;
|
abstime.tv_sec = then.tv_sec;
|
||||||
abstime.tv_nsec = then.tv_usec * 1000;
|
abstime.tv_nsec = then.tv_usec * 1000;
|
||||||
@ -3614,7 +3614,7 @@ static void set_curblock(char *hexstr, unsigned char *hash)
|
|||||||
swap256(block_hash_swap, hash + 4);
|
swap256(block_hash_swap, hash + 4);
|
||||||
|
|
||||||
cg_wlock(&ch_lock);
|
cg_wlock(&ch_lock);
|
||||||
gettimeofday(&block_timeval, NULL);
|
cgtime(&block_timeval);
|
||||||
free(current_hash);
|
free(current_hash);
|
||||||
current_hash = bin2hex(hash_swap + 2, 8);
|
current_hash = bin2hex(hash_swap + 2, 8);
|
||||||
free(current_fullhash);
|
free(current_fullhash);
|
||||||
@ -4168,7 +4168,7 @@ void zero_stats(void)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
gettimeofday(&total_tv_start, NULL);
|
cgtime(&total_tv_start);
|
||||||
total_mhashes_done = 0;
|
total_mhashes_done = 0;
|
||||||
total_getworks = 0;
|
total_getworks = 0;
|
||||||
total_accepted = 0;
|
total_accepted = 0;
|
||||||
@ -4621,7 +4621,7 @@ static void *api_thread(void *userdata)
|
|||||||
|
|
||||||
void thread_reportin(struct thr_info *thr)
|
void thread_reportin(struct thr_info *thr)
|
||||||
{
|
{
|
||||||
gettimeofday(&thr->last, NULL);
|
cgtime(&thr->last);
|
||||||
thr->cgpu->status = LIFE_WELL;
|
thr->cgpu->status = LIFE_WELL;
|
||||||
thr->getwork = false;
|
thr->getwork = false;
|
||||||
thr->cgpu->device_last_well = time(NULL);
|
thr->cgpu->device_last_well = time(NULL);
|
||||||
@ -4651,7 +4651,7 @@ static void hashmeter(int thr_id, struct timeval *diff,
|
|||||||
/* Update the last time this thread reported in */
|
/* Update the last time this thread reported in */
|
||||||
if (thr_id >= 0) {
|
if (thr_id >= 0) {
|
||||||
thr = get_thread(thr_id);
|
thr = get_thread(thr_id);
|
||||||
gettimeofday(&(thr->last), NULL);
|
cgtime(&(thr->last));
|
||||||
thr->cgpu->device_last_well = time(NULL);
|
thr->cgpu->device_last_well = time(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4681,7 +4681,7 @@ static void hashmeter(int thr_id, struct timeval *diff,
|
|||||||
struct timeval now;
|
struct timeval now;
|
||||||
struct timeval elapsed;
|
struct timeval elapsed;
|
||||||
|
|
||||||
gettimeofday(&now, NULL);
|
cgtime(&now);
|
||||||
timersub(&now, &thr->cgpu->last_message_tv, &elapsed);
|
timersub(&now, &thr->cgpu->last_message_tv, &elapsed);
|
||||||
if (opt_log_interval <= elapsed.tv_sec) {
|
if (opt_log_interval <= elapsed.tv_sec) {
|
||||||
struct cgpu_info *cgpu = thr->cgpu;
|
struct cgpu_info *cgpu = thr->cgpu;
|
||||||
@ -4701,7 +4701,7 @@ static void hashmeter(int thr_id, struct timeval *diff,
|
|||||||
|
|
||||||
/* Totals are updated by all threads so can race without locking */
|
/* Totals are updated by all threads so can race without locking */
|
||||||
mutex_lock(&hash_lock);
|
mutex_lock(&hash_lock);
|
||||||
gettimeofday(&temp_tv_end, NULL);
|
cgtime(&temp_tv_end);
|
||||||
timersub(&temp_tv_end, &total_tv_end, &total_diff);
|
timersub(&temp_tv_end, &total_tv_end, &total_diff);
|
||||||
|
|
||||||
total_mhashes_done += local_mhashes;
|
total_mhashes_done += local_mhashes;
|
||||||
@ -4710,7 +4710,7 @@ static void hashmeter(int thr_id, struct timeval *diff,
|
|||||||
if (total_diff.tv_sec < opt_log_interval)
|
if (total_diff.tv_sec < opt_log_interval)
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
showlog = true;
|
showlog = true;
|
||||||
gettimeofday(&total_tv_end, NULL);
|
cgtime(&total_tv_end);
|
||||||
|
|
||||||
local_secs = (double)total_diff.tv_sec + ((double)total_diff.tv_usec / 1000000.0);
|
local_secs = (double)total_diff.tv_sec + ((double)total_diff.tv_usec / 1000000.0);
|
||||||
decay_time(&rolling, local_mhashes_done / local_secs);
|
decay_time(&rolling, local_mhashes_done / local_secs);
|
||||||
@ -5165,10 +5165,10 @@ retry_stratum:
|
|||||||
applog(LOG_DEBUG, "No GBT coinbase + append support found, using getwork protocol");
|
applog(LOG_DEBUG, "No GBT coinbase + append support found, using getwork protocol");
|
||||||
}
|
}
|
||||||
|
|
||||||
gettimeofday(&tv_getwork, NULL);
|
cgtime(&tv_getwork);
|
||||||
val = json_rpc_call(curl, pool->rpc_url, pool->rpc_userpass,
|
val = json_rpc_call(curl, pool->rpc_url, pool->rpc_userpass,
|
||||||
pool->rpc_req, true, false, &rolltime, pool, false);
|
pool->rpc_req, true, false, &rolltime, pool, false);
|
||||||
gettimeofday(&tv_getwork_reply, NULL);
|
cgtime(&tv_getwork_reply);
|
||||||
|
|
||||||
/* Detect if a http getwork pool has an X-Stratum header at startup,
|
/* Detect if a http getwork pool has an X-Stratum header at startup,
|
||||||
* and if so, switch to that in preference to getwork if it works */
|
* and if so, switch to that in preference to getwork if it works */
|
||||||
@ -5202,7 +5202,7 @@ retry_stratum:
|
|||||||
total_getworks++;
|
total_getworks++;
|
||||||
pool->getwork_requested++;
|
pool->getwork_requested++;
|
||||||
ret = true;
|
ret = true;
|
||||||
gettimeofday(&pool->tv_idle, NULL);
|
cgtime(&pool->tv_idle);
|
||||||
} else {
|
} else {
|
||||||
applog(LOG_DEBUG, "Successfully retrieved but FAILED to decipher work from pool %u %s",
|
applog(LOG_DEBUG, "Successfully retrieved but FAILED to decipher work from pool %u %s",
|
||||||
pool->pool_no, pool->rpc_url);
|
pool->pool_no, pool->rpc_url);
|
||||||
@ -5481,7 +5481,7 @@ static void gen_stratum_work(struct pool *pool, struct work *work)
|
|||||||
work->work_block = work_block;
|
work->work_block = work_block;
|
||||||
calc_diff(work, work->sdiff);
|
calc_diff(work, work->sdiff);
|
||||||
|
|
||||||
gettimeofday(&work->tv_staged, NULL);
|
cgtime(&work->tv_staged);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct work *get_work(struct thr_info *thr, const int thr_id)
|
static struct work *get_work(struct thr_info *thr, const int thr_id)
|
||||||
@ -5570,7 +5570,7 @@ void submit_nonce(struct thr_info *thr, struct work *work, uint32_t nonce)
|
|||||||
struct timeval tv_work_found;
|
struct timeval tv_work_found;
|
||||||
int valid;
|
int valid;
|
||||||
|
|
||||||
gettimeofday(&tv_work_found, NULL);
|
cgtime(&tv_work_found);
|
||||||
*work_nonce = htole32(nonce);
|
*work_nonce = htole32(nonce);
|
||||||
|
|
||||||
mutex_lock(&stats_lock);
|
mutex_lock(&stats_lock);
|
||||||
@ -5641,9 +5641,9 @@ static void hash_sole_work(struct thr_info *mythr)
|
|||||||
uint32_t max_nonce = drv->can_limit_work(mythr);
|
uint32_t max_nonce = drv->can_limit_work(mythr);
|
||||||
int64_t hashes_done = 0;
|
int64_t hashes_done = 0;
|
||||||
|
|
||||||
gettimeofday(&getwork_start, NULL);
|
cgtime(&getwork_start);
|
||||||
sdiff.tv_sec = sdiff.tv_usec = 0;
|
sdiff.tv_sec = sdiff.tv_usec = 0;
|
||||||
gettimeofday(&tv_lastupdate, NULL);
|
cgtime(&tv_lastupdate);
|
||||||
|
|
||||||
while (42) {
|
while (42) {
|
||||||
struct work *work = get_work(mythr, thr_id);
|
struct work *work = get_work(mythr, thr_id);
|
||||||
@ -5652,7 +5652,7 @@ static void hash_sole_work(struct thr_info *mythr)
|
|||||||
mythr->work_restart = false;
|
mythr->work_restart = false;
|
||||||
cgpu->new_work = true;
|
cgpu->new_work = true;
|
||||||
|
|
||||||
gettimeofday(&tv_workstart, NULL);
|
cgtime(&tv_workstart);
|
||||||
work->blk.nonce = 0;
|
work->blk.nonce = 0;
|
||||||
cgpu->max_hashes = 0;
|
cgpu->max_hashes = 0;
|
||||||
if (!drv->prepare_work(mythr, work)) {
|
if (!drv->prepare_work(mythr, work)) {
|
||||||
@ -5663,7 +5663,7 @@ static void hash_sole_work(struct thr_info *mythr)
|
|||||||
work->device_diff = MIN(drv->max_diff, work->work_difficulty);
|
work->device_diff = MIN(drv->max_diff, work->work_difficulty);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
gettimeofday(&tv_start, NULL);
|
cgtime(&tv_start);
|
||||||
|
|
||||||
timersub(&tv_start, &getwork_start, &getwork_start);
|
timersub(&tv_start, &getwork_start, &getwork_start);
|
||||||
|
|
||||||
@ -5695,13 +5695,13 @@ static void hash_sole_work(struct thr_info *mythr)
|
|||||||
}
|
}
|
||||||
pool_stats->getwork_calls++;
|
pool_stats->getwork_calls++;
|
||||||
|
|
||||||
gettimeofday(&(work->tv_work_start), NULL);
|
cgtime(&(work->tv_work_start));
|
||||||
|
|
||||||
thread_reportin(mythr);
|
thread_reportin(mythr);
|
||||||
hashes = drv->scanhash(mythr, work, work->blk.nonce + max_nonce);
|
hashes = drv->scanhash(mythr, work, work->blk.nonce + max_nonce);
|
||||||
thread_reportin(mythr);
|
thread_reportin(mythr);
|
||||||
|
|
||||||
gettimeofday(&getwork_start, NULL);
|
cgtime(&getwork_start);
|
||||||
|
|
||||||
if (unlikely(hashes == -1)) {
|
if (unlikely(hashes == -1)) {
|
||||||
applog(LOG_ERR, "%s %d failure, disabling!", drv->name, cgpu->device_id);
|
applog(LOG_ERR, "%s %d failure, disabling!", drv->name, cgpu->device_id);
|
||||||
@ -5714,7 +5714,7 @@ static void hash_sole_work(struct thr_info *mythr)
|
|||||||
if (hashes > cgpu->max_hashes)
|
if (hashes > cgpu->max_hashes)
|
||||||
cgpu->max_hashes = hashes;
|
cgpu->max_hashes = hashes;
|
||||||
|
|
||||||
gettimeofday(&tv_end, NULL);
|
cgtime(&tv_end);
|
||||||
timersub(&tv_end, &tv_start, &diff);
|
timersub(&tv_end, &tv_start, &diff);
|
||||||
sdiff.tv_sec += diff.tv_sec;
|
sdiff.tv_sec += diff.tv_sec;
|
||||||
sdiff.tv_usec += diff.tv_usec;
|
sdiff.tv_usec += diff.tv_usec;
|
||||||
@ -5927,7 +5927,7 @@ void hash_queued_work(struct thr_info *mythr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
hashes_done += hashes;
|
hashes_done += hashes;
|
||||||
gettimeofday(&tv_end, NULL);
|
cgtime(&tv_end);
|
||||||
timersub(&tv_end, &tv_start, &diff);
|
timersub(&tv_end, &tv_start, &diff);
|
||||||
/* Update the hashmeter at most 5 times per second */
|
/* Update the hashmeter at most 5 times per second */
|
||||||
if (diff.tv_sec > 0 || diff.tv_usec > 200) {
|
if (diff.tv_sec > 0 || diff.tv_usec > 200) {
|
||||||
@ -6133,7 +6133,7 @@ retry_pool:
|
|||||||
|
|
||||||
wait_lpcurrent(cp);
|
wait_lpcurrent(cp);
|
||||||
|
|
||||||
gettimeofday(&start, NULL);
|
cgtime(&start);
|
||||||
|
|
||||||
/* Update the longpollid every time, but do it under lock to
|
/* Update the longpollid every time, but do it under lock to
|
||||||
* avoid races */
|
* avoid races */
|
||||||
@ -6153,7 +6153,7 @@ retry_pool:
|
|||||||
val = json_rpc_call(curl, lp_url, pool->rpc_userpass,
|
val = json_rpc_call(curl, lp_url, pool->rpc_userpass,
|
||||||
lpreq, false, true, &rolltime, pool, false);
|
lpreq, false, true, &rolltime, pool, false);
|
||||||
|
|
||||||
gettimeofday(&reply, NULL);
|
cgtime(&reply);
|
||||||
|
|
||||||
if (likely(val)) {
|
if (likely(val)) {
|
||||||
soval = json_object_get(json_object_get(val, "result"), "submitold");
|
soval = json_object_get(json_object_get(val, "result"), "submitold");
|
||||||
@ -6169,7 +6169,7 @@ retry_pool:
|
|||||||
* only see this as longpoll failure if it happens
|
* only see this as longpoll failure if it happens
|
||||||
* immediately and just restart it the rest of the
|
* immediately and just restart it the rest of the
|
||||||
* time. */
|
* time. */
|
||||||
gettimeofday(&end, NULL);
|
cgtime(&end);
|
||||||
if (end.tv_sec - start.tv_sec > 30)
|
if (end.tv_sec - start.tv_sec > 30)
|
||||||
continue;
|
continue;
|
||||||
if (failures == 1)
|
if (failures == 1)
|
||||||
@ -6212,7 +6212,7 @@ static void reap_curl(struct pool *pool)
|
|||||||
struct timeval now;
|
struct timeval now;
|
||||||
int reaped = 0;
|
int reaped = 0;
|
||||||
|
|
||||||
gettimeofday(&now, NULL);
|
cgtime(&now);
|
||||||
|
|
||||||
mutex_lock(&pool->pool_lock);
|
mutex_lock(&pool->pool_lock);
|
||||||
list_for_each_entry_safe(ent, iter, &pool->curlring, node) {
|
list_for_each_entry_safe(ent, iter, &pool->curlring, node) {
|
||||||
@ -6246,7 +6246,7 @@ static void *watchpool_thread(void __maybe_unused *userdata)
|
|||||||
|
|
||||||
if (++intervals > 20)
|
if (++intervals > 20)
|
||||||
intervals = 0;
|
intervals = 0;
|
||||||
gettimeofday(&now, NULL);
|
cgtime(&now);
|
||||||
|
|
||||||
for (i = 0; i < total_pools; i++) {
|
for (i = 0; i < total_pools; i++) {
|
||||||
struct pool *pool = pools[i];
|
struct pool *pool = pools[i];
|
||||||
@ -6275,14 +6275,14 @@ static void *watchpool_thread(void __maybe_unused *userdata)
|
|||||||
|
|
||||||
/* Test pool is idle once every minute */
|
/* Test pool is idle once every minute */
|
||||||
if (pool->idle && now.tv_sec - pool->tv_idle.tv_sec > 30) {
|
if (pool->idle && now.tv_sec - pool->tv_idle.tv_sec > 30) {
|
||||||
gettimeofday(&pool->tv_idle, NULL);
|
cgtime(&pool->tv_idle);
|
||||||
if (pool_active(pool, true) && pool_tclear(pool, &pool->idle))
|
if (pool_active(pool, true) && pool_tclear(pool, &pool->idle))
|
||||||
pool_resus(pool);
|
pool_resus(pool);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pool_strategy == POOL_ROTATE && now.tv_sec - rotate_tv.tv_sec > 60 * opt_rotate_period) {
|
if (pool_strategy == POOL_ROTATE && now.tv_sec - rotate_tv.tv_sec > 60 * opt_rotate_period) {
|
||||||
gettimeofday(&rotate_tv, NULL);
|
cgtime(&rotate_tv);
|
||||||
switch_pools(NULL);
|
switch_pools(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6311,7 +6311,7 @@ static void *watchdog_thread(void __maybe_unused *userdata)
|
|||||||
RenameThread("watchdog");
|
RenameThread("watchdog");
|
||||||
|
|
||||||
memset(&zero_tv, 0, sizeof(struct timeval));
|
memset(&zero_tv, 0, sizeof(struct timeval));
|
||||||
gettimeofday(&rotate_tv, NULL);
|
cgtime(&rotate_tv);
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
int i;
|
int i;
|
||||||
@ -6337,7 +6337,7 @@ static void *watchdog_thread(void __maybe_unused *userdata)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
gettimeofday(&now, NULL);
|
cgtime(&now);
|
||||||
|
|
||||||
if (!sched_paused && !should_run()) {
|
if (!sched_paused && !should_run()) {
|
||||||
applog(LOG_WARNING, "Pausing execution as per stop time %02d:%02d scheduled",
|
applog(LOG_WARNING, "Pausing execution as per stop time %02d:%02d scheduled",
|
||||||
@ -6419,7 +6419,7 @@ static void *watchdog_thread(void __maybe_unused *userdata)
|
|||||||
thr->rolling = cgpu->rolling = 0;
|
thr->rolling = cgpu->rolling = 0;
|
||||||
cgpu->status = LIFE_SICK;
|
cgpu->status = LIFE_SICK;
|
||||||
applog(LOG_ERR, "%s: Idle for more than 60 seconds, declaring SICK!", dev_str);
|
applog(LOG_ERR, "%s: Idle for more than 60 seconds, declaring SICK!", dev_str);
|
||||||
gettimeofday(&thr->sick, NULL);
|
cgtime(&thr->sick);
|
||||||
|
|
||||||
dev_error(cgpu, REASON_DEV_SICK_IDLE_60);
|
dev_error(cgpu, REASON_DEV_SICK_IDLE_60);
|
||||||
#ifdef HAVE_ADL
|
#ifdef HAVE_ADL
|
||||||
@ -6435,13 +6435,13 @@ static void *watchdog_thread(void __maybe_unused *userdata)
|
|||||||
} else if (cgpu->status == LIFE_SICK && (now.tv_sec - thr->last.tv_sec > WATCHDOG_DEAD_TIME)) {
|
} else if (cgpu->status == LIFE_SICK && (now.tv_sec - thr->last.tv_sec > WATCHDOG_DEAD_TIME)) {
|
||||||
cgpu->status = LIFE_DEAD;
|
cgpu->status = LIFE_DEAD;
|
||||||
applog(LOG_ERR, "%s: Not responded for more than 10 minutes, declaring DEAD!", dev_str);
|
applog(LOG_ERR, "%s: Not responded for more than 10 minutes, declaring DEAD!", dev_str);
|
||||||
gettimeofday(&thr->sick, NULL);
|
cgtime(&thr->sick);
|
||||||
|
|
||||||
dev_error(cgpu, REASON_DEV_DEAD_IDLE_600);
|
dev_error(cgpu, REASON_DEV_DEAD_IDLE_600);
|
||||||
} else if (now.tv_sec - thr->sick.tv_sec > 60 &&
|
} else if (now.tv_sec - thr->sick.tv_sec > 60 &&
|
||||||
(cgpu->status == LIFE_SICK || cgpu->status == LIFE_DEAD)) {
|
(cgpu->status == LIFE_SICK || cgpu->status == LIFE_DEAD)) {
|
||||||
/* Attempt to restart a GPU that's sick or dead once every minute */
|
/* Attempt to restart a GPU that's sick or dead once every minute */
|
||||||
gettimeofday(&thr->sick, NULL);
|
cgtime(&thr->sick);
|
||||||
#ifdef HAVE_ADL
|
#ifdef HAVE_ADL
|
||||||
if (adl_active && cgpu->has_adl && gpu_activity(gpu) > 50) {
|
if (adl_active && cgpu->has_adl && gpu_activity(gpu) > 50) {
|
||||||
/* Again do not attempt to restart a device that may have hard hung */
|
/* Again do not attempt to restart a device that may have hard hung */
|
||||||
@ -6559,7 +6559,7 @@ static void clean_up(void)
|
|||||||
libusb_exit(NULL);
|
libusb_exit(NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
gettimeofday(&total_tv_end, NULL);
|
cgtime(&total_tv_end);
|
||||||
#ifdef HAVE_CURSES
|
#ifdef HAVE_CURSES
|
||||||
disable_curses();
|
disable_curses();
|
||||||
#endif
|
#endif
|
||||||
@ -7585,8 +7585,8 @@ begin_bench:
|
|||||||
cgpu->rolling = cgpu->total_mhashes = 0;
|
cgpu->rolling = cgpu->total_mhashes = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
gettimeofday(&total_tv_start, NULL);
|
cgtime(&total_tv_start);
|
||||||
gettimeofday(&total_tv_end, NULL);
|
cgtime(&total_tv_end);
|
||||||
get_datestamp(datestamp, &total_tv_start);
|
get_datestamp(datestamp, &total_tv_start);
|
||||||
|
|
||||||
// Start threads
|
// Start threads
|
||||||
@ -7640,8 +7640,8 @@ begin_bench:
|
|||||||
algo_names[opt_algo]);
|
algo_names[opt_algo]);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
gettimeofday(&total_tv_start, NULL);
|
cgtime(&total_tv_start);
|
||||||
gettimeofday(&total_tv_end, NULL);
|
cgtime(&total_tv_end);
|
||||||
|
|
||||||
watchpool_thr_id = 2;
|
watchpool_thr_id = 2;
|
||||||
thr = &control_thr[watchpool_thr_id];
|
thr = &control_thr[watchpool_thr_id];
|
||||||
|
Loading…
Reference in New Issue
Block a user