mirror of
https://github.com/fluencelabs/redis
synced 2025-03-30 22:31:03 +00:00
Latency monitor: don't add new samples in the same second.
Instead we update the old sample with the new latency if it is greater.
This commit is contained in:
parent
83beaa886c
commit
f35abe2ff5
@ -69,6 +69,8 @@ void latencyMonitorInit(void) {
|
|||||||
* server.latency_monitor_threshold. */
|
* server.latency_monitor_threshold. */
|
||||||
void latencyAddSample(char *event, mstime_t latency) {
|
void latencyAddSample(char *event, mstime_t latency) {
|
||||||
struct latencyTimeSeries *ts = dictFetchValue(server.latency_events,event);
|
struct latencyTimeSeries *ts = dictFetchValue(server.latency_events,event);
|
||||||
|
time_t now = time(NULL);
|
||||||
|
int prev;
|
||||||
|
|
||||||
/* Create the time series if it does not exist. */
|
/* Create the time series if it does not exist. */
|
||||||
if (ts == NULL) {
|
if (ts == NULL) {
|
||||||
@ -79,6 +81,15 @@ void latencyAddSample(char *event, mstime_t latency) {
|
|||||||
dictAdd(server.latency_events,zstrdup(event),ts);
|
dictAdd(server.latency_events,zstrdup(event),ts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If the previous sample is in the same second, we update our old sample
|
||||||
|
* if this latency is > of the old one, or just return. */
|
||||||
|
prev = (ts->idx + LATENCY_TS_LEN - 1) % LATENCY_TS_LEN;
|
||||||
|
if (ts->samples[prev].time == now) {
|
||||||
|
if (latency > ts->samples[prev].latency)
|
||||||
|
ts->samples[prev].latency = latency;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ts->samples[ts->idx].time = time(NULL);
|
ts->samples[ts->idx].time = time(NULL);
|
||||||
ts->samples[ts->idx].latency = latency;
|
ts->samples[ts->idx].latency = latency;
|
||||||
if (latency > ts->max) ts->max = latency;
|
if (latency > ts->max) ts->max = latency;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user