api: add meminfo query to debug mem storages
This commit is contained in:
parent
6a9b8a5ab2
commit
047e79a9fc
22
api.cpp
22
api.cpp
@ -225,6 +225,25 @@ static char *gethistory(char *params)
|
||||
return buffer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Some debug infos about memory usage
|
||||
*/
|
||||
static char *getmeminfo(char *params)
|
||||
{
|
||||
uint64_t smem, hmem, totmem;
|
||||
uint32_t srec, hrec;
|
||||
|
||||
stats_getmeminfo(&smem, &srec);
|
||||
hashlog_getmeminfo(&hmem, &hrec);
|
||||
totmem = smem + hmem;
|
||||
|
||||
*buffer = '\0';
|
||||
sprintf(buffer, "STATS=%u;HASHLOG=%u;MEM=%llu|",
|
||||
srec, hrec, totmem);
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
static char *gethelp(char *params);
|
||||
struct CMDS {
|
||||
const char *name;
|
||||
@ -232,7 +251,8 @@ struct CMDS {
|
||||
} cmds[] = {
|
||||
{ "summary", getsummary },
|
||||
{ "threads", getthreads },
|
||||
{ "histo", gethistory },
|
||||
{ "histo", gethistory },
|
||||
{ "meminfo", getmeminfo },
|
||||
/* keep it the last */
|
||||
{ "help", gethelp },
|
||||
};
|
||||
|
27
hashlog.cpp
27
hashlog.cpp
@ -43,7 +43,7 @@ static uint64_t hextouint(char* jobid)
|
||||
/**
|
||||
* @return time of a job/nonce submission (or last nonce if nonce is 0)
|
||||
*/
|
||||
extern "C" uint32_t hashlog_already_submittted(char* jobid, uint32_t nonce)
|
||||
uint32_t hashlog_already_submittted(char* jobid, uint32_t nonce)
|
||||
{
|
||||
uint32_t ret = 0;
|
||||
uint64_t njobid = hextouint(jobid);
|
||||
@ -61,7 +61,7 @@ extern "C" uint32_t hashlog_already_submittted(char* jobid, uint32_t nonce)
|
||||
/**
|
||||
* Store submitted nonces of a job
|
||||
*/
|
||||
extern "C" void hashlog_remember_submit(struct work* work, uint32_t nonce)
|
||||
void hashlog_remember_submit(struct work* work, uint32_t nonce)
|
||||
{
|
||||
uint64_t njobid = hextouint(work->job_id);
|
||||
uint64_t key = (njobid << 32) + nonce;
|
||||
@ -78,7 +78,7 @@ extern "C" void hashlog_remember_submit(struct work* work, uint32_t nonce)
|
||||
/**
|
||||
* Update job scanned range
|
||||
*/
|
||||
extern "C" void hashlog_remember_scan_range(struct work* work)
|
||||
void hashlog_remember_scan_range(struct work* work)
|
||||
{
|
||||
uint64_t njobid = hextouint(work->job_id);
|
||||
uint64_t key = (njobid << 32);
|
||||
@ -120,7 +120,7 @@ extern "C" void hashlog_remember_scan_range(struct work* work)
|
||||
* Returns the range of a job
|
||||
* @return uint64_t to|from
|
||||
*/
|
||||
extern "C" uint64_t hashlog_get_scan_range(char* jobid)
|
||||
uint64_t hashlog_get_scan_range(char* jobid)
|
||||
{
|
||||
uint64_t ret = 0;
|
||||
uint64_t njobid = hextouint(jobid);
|
||||
@ -149,7 +149,7 @@ extern "C" uint64_t hashlog_get_scan_range(char* jobid)
|
||||
* Search last submitted nonce for a job
|
||||
* @return max nonce
|
||||
*/
|
||||
extern "C" uint32_t hashlog_get_last_sent(char* jobid)
|
||||
uint32_t hashlog_get_last_sent(char* jobid)
|
||||
{
|
||||
uint32_t nonce = 0;
|
||||
uint64_t njobid = hextouint(jobid);
|
||||
@ -167,7 +167,7 @@ extern "C" uint32_t hashlog_get_last_sent(char* jobid)
|
||||
/**
|
||||
* Remove entries of a job...
|
||||
*/
|
||||
extern "C" void hashlog_purge_job(char* jobid)
|
||||
void hashlog_purge_job(char* jobid)
|
||||
{
|
||||
int deleted = 0;
|
||||
uint64_t njobid = hextouint(jobid);
|
||||
@ -189,7 +189,7 @@ extern "C" void hashlog_purge_job(char* jobid)
|
||||
/**
|
||||
* Remove old entries to reduce memory usage
|
||||
*/
|
||||
extern "C" void hashlog_purge_old(void)
|
||||
void hashlog_purge_old(void)
|
||||
{
|
||||
int deleted = 0;
|
||||
uint32_t now = (uint32_t) time(NULL);
|
||||
@ -210,15 +210,24 @@ extern "C" void hashlog_purge_old(void)
|
||||
/**
|
||||
* Reset the submitted nonces cache
|
||||
*/
|
||||
extern "C" void hashlog_purge_all(void)
|
||||
void hashlog_purge_all(void)
|
||||
{
|
||||
tlastshares.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* API meminfo
|
||||
*/
|
||||
void hashlog_getmeminfo(uint64_t *mem, uint32_t *records)
|
||||
{
|
||||
(*records) = tlastshares.size();
|
||||
(*mem) = (*records) * sizeof(hashlog_data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to debug ranges...
|
||||
*/
|
||||
extern "C" void hashlog_dump_job(char* jobid)
|
||||
void hashlog_dump_job(char* jobid)
|
||||
{
|
||||
if (opt_debug) {
|
||||
uint64_t njobid = hextouint(jobid);
|
||||
|
2
miner.h
2
miner.h
@ -556,12 +556,14 @@ void hashlog_purge_old(void);
|
||||
void hashlog_purge_job(char* jobid);
|
||||
void hashlog_purge_all(void);
|
||||
void hashlog_dump_job(char* jobid);
|
||||
void hashlog_getmeminfo(uint64_t *mem, uint32_t *records);
|
||||
|
||||
void stats_remember_speed(int thr_id, uint32_t hashcount, double hashrate, uint8_t found);
|
||||
double stats_get_speed(int thr_id, double def_speed);
|
||||
int stats_get_history(int thr_id, struct stats_data *data, int max_records);
|
||||
void stats_purge_old(void);
|
||||
void stats_purge_all(void);
|
||||
void stats_getmeminfo(uint64_t *mem, uint32_t *records);
|
||||
|
||||
struct thread_q;
|
||||
|
||||
|
18
stats.cpp
18
stats.cpp
@ -25,7 +25,7 @@ extern int device_map[8];
|
||||
/**
|
||||
* Store speed per thread (todo: compute vardiff ?)
|
||||
*/
|
||||
extern "C" void stats_remember_speed(int thr_id, uint32_t hashcount, double hashrate, uint8_t found)
|
||||
void stats_remember_speed(int thr_id, uint32_t hashcount, double hashrate, uint8_t found)
|
||||
{
|
||||
uint64_t gpu = device_map[thr_id];
|
||||
uint64_t key = (gpu << 56) + (uid++ % UINT_MAX);
|
||||
@ -59,7 +59,7 @@ extern "C" void stats_remember_speed(int thr_id, uint32_t hashcount, double hash
|
||||
* Get the computed average speed
|
||||
* @param thr_id int (-1 for all threads)
|
||||
*/
|
||||
extern "C" double stats_get_speed(int thr_id, double def_speed)
|
||||
double stats_get_speed(int thr_id, double def_speed)
|
||||
{
|
||||
uint64_t gpu = device_map[thr_id];
|
||||
uint64_t keypfx = (gpu << 56);
|
||||
@ -91,7 +91,7 @@ extern "C" double stats_get_speed(int thr_id, double def_speed)
|
||||
return speed;
|
||||
}
|
||||
|
||||
extern "C" int stats_get_history(int thr_id, struct stats_data *data, int max_records)
|
||||
int stats_get_history(int thr_id, struct stats_data *data, int max_records)
|
||||
{
|
||||
uint64_t gpu = device_map[thr_id];
|
||||
uint64_t keypfx = (gpu << 56);
|
||||
@ -114,7 +114,7 @@ extern "C" int stats_get_history(int thr_id, struct stats_data *data, int max_re
|
||||
/**
|
||||
* Remove old entries to reduce memory usage
|
||||
*/
|
||||
extern "C" void stats_purge_old(void)
|
||||
void stats_purge_old(void)
|
||||
{
|
||||
int deleted = 0;
|
||||
uint32_t now = (uint32_t) time(NULL);
|
||||
@ -135,8 +135,16 @@ extern "C" void stats_purge_old(void)
|
||||
/**
|
||||
* Reset the cache
|
||||
*/
|
||||
extern "C" void stats_purge_all(void)
|
||||
void stats_purge_all(void)
|
||||
{
|
||||
tlastscans.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* API meminfo
|
||||
*/
|
||||
void stats_getmeminfo(uint64_t *mem, uint32_t *records)
|
||||
{
|
||||
(*records) = tlastscans.size();
|
||||
(*mem) = (*records) * sizeof(stats_data);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user