Browse Source

ckdb - add some tree/list stats

master
kanoi 10 years ago
parent
commit
f2c0014fe3
  1. 60
      src/ckdb.c

60
src/ckdb.c

@ -6337,7 +6337,7 @@ static char *cmd_homepage(char *cmd, char *id, __maybe_unused tv_t *now, __maybe
return buf;
}
static __maybe_unused char *cmd_dsp(char *cmd, char *id, __maybe_unused tv_t *now,
static char *cmd_dsp(char *cmd, char *id, __maybe_unused tv_t *now,
__maybe_unused char *by, __maybe_unused char *code,
__maybe_unused char *inet)
{
@ -6366,6 +6366,62 @@ static __maybe_unused char *cmd_dsp(char *cmd, char *id, __maybe_unused tv_t *no
*/
}
static char *cmd_stats(char *cmd, char *id, __maybe_unused tv_t *now,
__maybe_unused char *by, __maybe_unused char *code,
__maybe_unused char *inet)
{
char tmp[1024], *buf;
size_t len, off;
uint64_t ram, tot = 0;
K_LIST *klist;
int i = 0;
LOGDEBUG("%s(): cmd '%s'", __func__, cmd);
APPEND_REALLOC_INIT(buf, off, len);
APPEND_REALLOC(buf, off, len, "ok.");
APPEND_REALLOC(buf, off, len, cmd);
// Doesn't include blob memory
// - average transactiontree length of ~119k I have is ~28k (>3.3GB)
#define USEINFO(_obj, _stores, _trees) \
klist = _obj ## _free; \
ram = sizeof(K_LIST) + _stores * sizeof(K_STORE) + \
klist->allocate * klist->item_mem_count * klist->siz + \
sizeof(K_TREE) * klist->count * _trees; \
snprintf(tmp, sizeof(tmp), \
"%cname%d=" #_obj "%callocated%d=%d%cstore%d=%d" \
"%ctrees%d=%d%cram%d=%"PRIu64, \
i ? FLDSEP : '.', i, \
FLDSEP, i, klist->total, \
FLDSEP, i, klist->total - klist->count, \
FLDSEP, i, _trees, \
FLDSEP, i, ram); \
APPEND_REALLOC(buf, off, len, tmp); \
tot += ram; \
i++;
USEINFO(users, 1, 2);
USEINFO(workers, 1, 1);
USEINFO(payments, 1, 1);
USEINFO(idcontrol, 1, 0);
USEINFO(workinfo, 1, 1);
USEINFO(shares, 1, 1);
USEINFO(shareerrors, 1, 1);
USEINFO(sharesummary, 1, 2);
USEINFO(blocks, 1, 1);
USEINFO(auths, 1, 1);
USEINFO(poolstats, 1, 1);
USEINFO(userstats, 4, 2);
USEINFO(workerstatus, 1, 1);
snprintf(tmp, sizeof(tmp), "%ctotalram=%"PRIu64, FLDSEP, tot);
APPEND_REALLOC(buf, off, len, tmp);
LOGDEBUG("%s.ok.%s...", id, cmd);
return buf;
}
enum cmd_values {
CMD_UNSET,
CMD_REPLY, // Means something was wrong - send back reply
@ -6384,6 +6440,7 @@ enum cmd_values {
CMD_ALLUSERS,
CMD_HOMEPAGE,
CMD_DSP,
CMD_STATS,
CMD_END
};
@ -6419,6 +6476,7 @@ static struct CMDS {
{ CMD_ALLUSERS, "allusers", false, cmd_allusers, ACCESS_WEB },
{ CMD_HOMEPAGE, "homepage", false, cmd_homepage, ACCESS_WEB },
{ CMD_DSP, "dsp", false, cmd_dsp, ACCESS_SYSTEM },
{ CMD_STATS, "stats", true, cmd_stats, ACCESS_SYSTEM },
{ CMD_END, NULL, false, NULL, NULL }
};

Loading…
Cancel
Save