mirror of
https://github.com/GOSTSec/ccminer
synced 2025-01-22 20:44:49 +00:00
summer is close, start conditional mining
add params --max-temp 75, --max-rate 112.5M and --max-diff 5.0 (best for solo mining) Note: not all the wallets are reporting the network mining difficulty and hashrate
This commit is contained in:
parent
051ba521be
commit
477d3bfd7c
72
ccminer.cpp
72
ccminer.cpp
@ -237,6 +237,11 @@ uint64_t global_hashrate = 0;
|
|||||||
double global_diff = 0.0;
|
double global_diff = 0.0;
|
||||||
uint64_t net_hashrate = 0;
|
uint64_t net_hashrate = 0;
|
||||||
uint64_t net_blocks = 0;
|
uint64_t net_blocks = 0;
|
||||||
|
// conditional mining
|
||||||
|
bool conditional_state = true;
|
||||||
|
double opt_max_temp = 0.0;
|
||||||
|
double opt_max_diff = 0.0;
|
||||||
|
double opt_max_rate = 0.0;
|
||||||
|
|
||||||
int opt_statsavg = 30;
|
int opt_statsavg = 30;
|
||||||
// strdup on char* to allow a common free() if used
|
// strdup on char* to allow a common free() if used
|
||||||
@ -329,7 +334,12 @@ Options:\n\
|
|||||||
--cpu-priority set process priority (default: 3) 0 idle, 2 normal to 5 highest\n\
|
--cpu-priority set process priority (default: 3) 0 idle, 2 normal to 5 highest\n\
|
||||||
-b, --api-bind IP/Port for the miner API (default: 127.0.0.1:4068)\n\
|
-b, --api-bind IP/Port for the miner API (default: 127.0.0.1:4068)\n\
|
||||||
--api-remote Allow remote control\n"
|
--api-remote Allow remote control\n"
|
||||||
|
#ifdef ADVANCED_HELP
|
||||||
|
"\
|
||||||
|
--max-temp=N Only mine if gpu temp is less than specified value\n\
|
||||||
|
--max-rate=N[KMG] Only mine if net hashrate is less than specified value\n\
|
||||||
|
--max-diff=N Only mine if net difficulty is less than specified value\n"
|
||||||
|
#endif
|
||||||
#ifdef HAVE_SYSLOG_H
|
#ifdef HAVE_SYSLOG_H
|
||||||
"\
|
"\
|
||||||
-S, --syslog use system log for output messages\n\
|
-S, --syslog use system log for output messages\n\
|
||||||
@ -373,6 +383,9 @@ static struct option const options[] = {
|
|||||||
{ "interactive", 1, NULL, 1050 }, // scrypt
|
{ "interactive", 1, NULL, 1050 }, // scrypt
|
||||||
{ "launch-config", 0, NULL, 'l' }, // scrypt
|
{ "launch-config", 0, NULL, 'l' }, // scrypt
|
||||||
{ "lookup-gap", 0, NULL, 'L' }, // scrypt
|
{ "lookup-gap", 0, NULL, 'L' }, // scrypt
|
||||||
|
{ "max-temp", 1, NULL, 1060 },
|
||||||
|
{ "max-diff", 1, NULL, 1061 },
|
||||||
|
{ "max-rate", 1, NULL, 1062 },
|
||||||
{ "pass", 1, NULL, 'p' },
|
{ "pass", 1, NULL, 'p' },
|
||||||
{ "protocol-dump", 0, NULL, 'P' },
|
{ "protocol-dump", 0, NULL, 'P' },
|
||||||
{ "proxy", 1, NULL, 'x' },
|
{ "proxy", 1, NULL, 'x' },
|
||||||
@ -1266,6 +1279,39 @@ void restart_threads(void)
|
|||||||
work_restart[i].restart = 1;
|
work_restart[i].restart = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool wanna_mine(int thr_id)
|
||||||
|
{
|
||||||
|
bool state = true;
|
||||||
|
|
||||||
|
if (opt_max_temp > 0.0) {
|
||||||
|
#ifdef USE_WRAPNVML
|
||||||
|
struct cgpu_info * cgpu = &thr_info[thr_id].gpu;
|
||||||
|
float temp = gpu_temp(cgpu);
|
||||||
|
if (temp > opt_max_temp) {
|
||||||
|
if (conditional_state && !opt_quiet)
|
||||||
|
applog(LOG_INFO, "GPU #%d: temperature too high (%.0f°c), waiting...",
|
||||||
|
device_map[thr_id], temp);
|
||||||
|
state = false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
if (opt_max_diff > 0.0 && global_diff > opt_max_diff) {
|
||||||
|
if (conditional_state && !opt_quiet)
|
||||||
|
applog(LOG_INFO, "network diff too high, waiting...");
|
||||||
|
state = false;
|
||||||
|
}
|
||||||
|
if (opt_max_rate > 0.0 && net_hashrate > opt_max_rate) {
|
||||||
|
if (conditional_state && !opt_quiet) {
|
||||||
|
char rate[32];
|
||||||
|
format_hashrate(opt_max_rate, rate);
|
||||||
|
applog(LOG_INFO, "network hashrate too high, waiting %s...", rate);
|
||||||
|
}
|
||||||
|
state = false;
|
||||||
|
}
|
||||||
|
conditional_state = state;
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
static void *miner_thread(void *userdata)
|
static void *miner_thread(void *userdata)
|
||||||
{
|
{
|
||||||
struct thr_info *mythr = (struct thr_info *)userdata;
|
struct thr_info *mythr = (struct thr_info *)userdata;
|
||||||
@ -1423,6 +1469,12 @@ static void *miner_thread(void *userdata)
|
|||||||
work_restart[thr_id].restart = 0;
|
work_restart[thr_id].restart = 0;
|
||||||
pthread_mutex_unlock(&g_work_lock);
|
pthread_mutex_unlock(&g_work_lock);
|
||||||
|
|
||||||
|
/* conditional mining */
|
||||||
|
if (!wanna_mine(thr_id)) {
|
||||||
|
sleep(5);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
/* adjust max_nonce to meet target scan time */
|
/* adjust max_nonce to meet target scan time */
|
||||||
if (have_stratum)
|
if (have_stratum)
|
||||||
max64 = LP_SCANTIME;
|
max64 = LP_SCANTIME;
|
||||||
@ -2375,6 +2427,24 @@ void parse_arg(int key, char *arg)
|
|||||||
show_usage_and_exit(1);
|
show_usage_and_exit(1);
|
||||||
opt_priority = v;
|
opt_priority = v;
|
||||||
break;
|
break;
|
||||||
|
case 1060: // max-temp
|
||||||
|
d = atof(arg);
|
||||||
|
opt_max_temp = d;
|
||||||
|
break;
|
||||||
|
case 1061: // max-diff
|
||||||
|
d = atof(arg);
|
||||||
|
opt_max_diff = d;
|
||||||
|
break;
|
||||||
|
case 1062: // max-rate
|
||||||
|
d = atof(arg);
|
||||||
|
p = strstr(arg, "K");
|
||||||
|
if (p) d *= 1e3;
|
||||||
|
p = strstr(arg, "M");
|
||||||
|
if (p) d *= 1e6;
|
||||||
|
p = strstr(arg, "G");
|
||||||
|
if (p) d *= 1e9;
|
||||||
|
opt_max_rate = d;
|
||||||
|
break;
|
||||||
case 'd': // CB
|
case 'd': // CB
|
||||||
{
|
{
|
||||||
int ngpus = cuda_num_devices();
|
int ngpus = cuda_num_devices();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user