redis-cli: --latency-history mode implemented.
This commit is contained in:
parent
b84570dece
commit
0280c2f252
@ -72,6 +72,7 @@ static struct config {
|
|||||||
int monitor_mode;
|
int monitor_mode;
|
||||||
int pubsub_mode;
|
int pubsub_mode;
|
||||||
int latency_mode;
|
int latency_mode;
|
||||||
|
int latency_history;
|
||||||
int cluster_mode;
|
int cluster_mode;
|
||||||
int cluster_reissue_command;
|
int cluster_reissue_command;
|
||||||
int slave_mode;
|
int slave_mode;
|
||||||
@ -701,6 +702,9 @@ static int parseOptions(int argc, char **argv) {
|
|||||||
config.output = OUTPUT_CSV;
|
config.output = OUTPUT_CSV;
|
||||||
} else if (!strcmp(argv[i],"--latency")) {
|
} else if (!strcmp(argv[i],"--latency")) {
|
||||||
config.latency_mode = 1;
|
config.latency_mode = 1;
|
||||||
|
} else if (!strcmp(argv[i],"--latency-history")) {
|
||||||
|
config.latency_mode = 1;
|
||||||
|
config.latency_history = 1;
|
||||||
} else if (!strcmp(argv[i],"--slave")) {
|
} else if (!strcmp(argv[i],"--slave")) {
|
||||||
config.slave_mode = 1;
|
config.slave_mode = 1;
|
||||||
} else if (!strcmp(argv[i],"--stat")) {
|
} else if (!strcmp(argv[i],"--stat")) {
|
||||||
@ -765,8 +769,11 @@ static void usage() {
|
|||||||
" -x Read last argument from STDIN\n"
|
" -x Read last argument from STDIN\n"
|
||||||
" -d <delimiter> Multi-bulk delimiter in for raw formatting (default: \\n)\n"
|
" -d <delimiter> Multi-bulk delimiter in for raw formatting (default: \\n)\n"
|
||||||
" -c Enable cluster mode (follow -ASK and -MOVED redirections)\n"
|
" -c Enable cluster mode (follow -ASK and -MOVED redirections)\n"
|
||||||
" --raw Use raw formatting for replies (default when STDOUT is not a tty)\n"
|
" --raw Use raw formatting for replies (default when STDOUT is\n"
|
||||||
|
" not a tty)\n"
|
||||||
" --latency Enter a special mode continuously sampling latency\n"
|
" --latency Enter a special mode continuously sampling latency\n"
|
||||||
|
" --latency-history Like --latency but tracking latency changes over time.\n"
|
||||||
|
" Default time interval is 15 sec. Change it using -i.\n"
|
||||||
" --slave Simulate a slave showing commands received from the master\n"
|
" --slave Simulate a slave showing commands received from the master\n"
|
||||||
" --rdb <filename> Transfer an RDB dump from remote server to local file.\n"
|
" --rdb <filename> Transfer an RDB dump from remote server to local file.\n"
|
||||||
" --pipe Transfer raw Redis protocol from stdin to server\n"
|
" --pipe Transfer raw Redis protocol from stdin to server\n"
|
||||||
@ -944,10 +951,16 @@ static int evalMode(int argc, char **argv) {
|
|||||||
return cliSendCommand(argc+3-got_comma, argv2, config.repeat);
|
return cliSendCommand(argc+3-got_comma, argv2, config.repeat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define LATENCY_SAMPLE_RATE 10 /* milliseconds. */
|
||||||
|
#define LATENCY_HISTORY_DEFAULT_INTERVAL 15000 /* milliseconds. */
|
||||||
static void latencyMode(void) {
|
static void latencyMode(void) {
|
||||||
redisReply *reply;
|
redisReply *reply;
|
||||||
long long start, latency, min = 0, max = 0, tot = 0, count = 0;
|
long long start, latency, min = 0, max = 0, tot = 0, count = 0;
|
||||||
|
long long history_interval =
|
||||||
|
config.interval ? config.interval/1000 :
|
||||||
|
LATENCY_HISTORY_DEFAULT_INTERVAL;
|
||||||
double avg;
|
double avg;
|
||||||
|
long long history_start = mstime();
|
||||||
|
|
||||||
if (!context) exit(1);
|
if (!context) exit(1);
|
||||||
while(1) {
|
while(1) {
|
||||||
@ -972,7 +985,13 @@ static void latencyMode(void) {
|
|||||||
printf("\x1b[0G\x1b[2Kmin: %lld, max: %lld, avg: %.2f (%lld samples)",
|
printf("\x1b[0G\x1b[2Kmin: %lld, max: %lld, avg: %.2f (%lld samples)",
|
||||||
min, max, avg, count);
|
min, max, avg, count);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
usleep(10000);
|
if (config.latency_history && mstime()-history_start > history_interval)
|
||||||
|
{
|
||||||
|
printf(" -- %.2f seconds range\n", (float)(mstime()-history_start)/1000);
|
||||||
|
history_start = mstime();
|
||||||
|
min = max = tot = count = 0;
|
||||||
|
}
|
||||||
|
usleep(LATENCY_SAMPLE_RATE * 1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1453,6 +1472,7 @@ int main(int argc, char **argv) {
|
|||||||
config.monitor_mode = 0;
|
config.monitor_mode = 0;
|
||||||
config.pubsub_mode = 0;
|
config.pubsub_mode = 0;
|
||||||
config.latency_mode = 0;
|
config.latency_mode = 0;
|
||||||
|
config.latency_history = 0;
|
||||||
config.cluster_mode = 0;
|
config.cluster_mode = 0;
|
||||||
config.slave_mode = 0;
|
config.slave_mode = 0;
|
||||||
config.getrdb_mode = 0;
|
config.getrdb_mode = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user