antirez
c9ddd141dd
createLatencyReport(): compile before commit avoids commits.
2014-07-18 12:20:56 +02:00
antirez
1b6d614f2c
createLatencyReport(), fix mount option name.
2014-07-18 12:20:56 +02:00
antirez
44de3a9cfb
createLatencyReport(): initialize all advices to zero.
2014-07-18 12:20:56 +02:00
antirez
a117fd2a44
LATENCY DOCTOR first implementation complete.
2014-07-18 12:20:56 +02:00
antirez
31e1e30aa6
Fix analyzeLatencyForEvent() MAD computation.
2014-07-18 12:20:56 +02:00
antirez
9ed02e137c
LATENCY DOCTOR: initial draft and events summary output.
2014-07-18 12:20:56 +02:00
antirez
c7f1aa74d7
Latency: low level time series analysis implemented.
2014-07-18 12:20:56 +02:00
antirez
9a037792b6
LATENCY SAMPLES renamed LATENCY HISTORY.
2014-07-18 12:20:56 +02:00
antirez
7c6a028a3a
LATENCY RESET implemented.
2014-07-18 12:20:56 +02:00
antirez
cc7b10cb52
Better "final read from parent" algorithm in rewriteAppendOnlyFile*(.
...
We now wait up to 1 second for diff data to come from the parent,
however we use poll(2) to wait for more data, and use a counter of
contiguous failures to get data for N times (set to 20 experimentally
after different tests) as an early stop condition to avoid wasting 1
second when the write traffic is too low.
2014-07-18 12:20:56 +02:00
antirez
d721e6e5c3
Log AOF diff sizes in MBs instead of bytes.
2014-07-18 12:20:56 +02:00
antirez
e615539cc7
aofChildWriteDiffData() better handling of free blocks.
2014-07-18 12:20:55 +02:00
antirez
f0a58bfaba
redis-benchmark: abort when all clients are disconnected.
2014-07-18 12:20:55 +02:00
antirez
d3514edd3e
Fine tuning of aofReadDiffFromParent() calls trigger.
2014-07-18 12:20:55 +02:00
antirez
180c9143b9
Use amount of I/O not ops to trigger aofReadDiffFromParent().
2014-07-18 12:20:55 +02:00
antirez
e05cd36326
aofChildWriteDiffData(): write as much as possible.
2014-07-18 12:20:55 +02:00
antirez
9494c84523
Handle write failure in AOF parent -> child ACK.
2014-07-18 12:20:55 +02:00
antirez
896256210f
Use a timeout when reading parent ack from AOF child.
2014-07-18 12:20:55 +02:00
antirez
576056d973
Send AOF diffs from parent to child to improve latency.
2014-07-18 12:20:55 +02:00
antirez
ca2db2bcb9
Use fsync instead of aof_fsync in final AOF sync.
...
This happens in the child process so we don't care about latency:
better to sync metadata as well.
2014-07-18 12:20:55 +02:00
antirez
74423be7a5
Fixed conditional for aof-write-pending-fsync latency event selection.
2014-07-18 12:20:55 +02:00
antirez
7989b612af
Dependencies updated.
2014-07-18 12:20:55 +02:00
antirez
289e83f1c9
Cast void* to char* to avoid waring in latencyCommand().
2014-07-18 12:20:55 +02:00
antirez
a7dc975a81
Properly initialize min/max in latency.c.
2014-07-18 12:20:55 +02:00
antirez
b2d6266521
latencyStartMonitor() modified to avoid warnings.
2014-07-18 12:20:55 +02:00
antirez
cd5c13e12f
Latency monitor: specialize delayed aof writes events.
2014-07-18 12:20:55 +02:00
antirez
231e016235
LATENCY GRAPH: filling under the curve is more readable.
2014-07-18 12:20:55 +02:00
antirez
3bd6917b0d
LATENCY GRAPH implemented.
2014-07-18 12:20:55 +02:00
antirez
6fb6609600
latencyTimeSeries structure max field type fixed.
2014-07-18 12:20:55 +02:00
antirez
9bc408493e
Free labels in freeSparklineSequence().
2014-07-18 12:20:55 +02:00
antirez
b58c960eb2
LATENCY LATEST: add the max field.
2014-07-18 12:20:55 +02:00
antirez
a9d9898680
Latency monitor trheshold value is now configurable.
...
This commit adds both support for redis.conf and CONFIG SET/GET.
2014-07-18 12:20:55 +02:00
antirez
b71a980687
ASCII sparklines generation API.
2014-07-18 12:20:55 +02:00
antirez
e817f6c013
License added to latency.h.
2014-07-18 12:20:55 +02:00
antirez
0f674f3368
Latency monitor turned off by default.
...
It is not a good idea to bloat the code with gettimeofday() calls if the
instance is working well, and turning monitoring on at runtime is a
joke.
2014-07-18 12:20:55 +02:00
antirez
2b5a0e8066
Latency monitor: more hooks around the code.
2014-07-18 12:20:55 +02:00
antirez
372484ab8e
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.
2014-07-18 12:20:55 +02:00
antirez
5e56590198
LATENCY LATEST implemented.
2014-07-18 12:20:55 +02:00
antirez
485a5908c0
Latency monitor: command duration is in useconds. Convert.
2014-07-18 12:20:55 +02:00
antirez
41c9d1c08f
LATENCY SAMPLES implemented.
2014-07-18 12:20:55 +02:00
antirez
44cf7395a2
Latency monitor: collect slow commands.
...
We introduce the distinction between slow and fast commands since those
are two different sources of latency. An O(1) or O(log N) command without
side effects (can't trigger deletion of large objects as a side effect of
its execution) if delayed is a symptom of inherent latency of the system.
A non-fast command (commands that may run large O(N) computations) if
delayed may just mean that the user is executing slow operations.
The advices LATENCY should provide in this two different cases are
different, so we log the two classes of commands in a separated way.
2014-07-18 12:20:55 +02:00
antirez
62ca4bd438
Latency monitor: basic samples collection.
2014-07-18 12:20:55 +02:00
antirez
4a7fca7c07
Fix Solaris compilation due to ctime_r() call.
...
Introduced in Redis 2.8.10 because of a change in Sentinel.
This closes issue #1837 .
2014-06-30 16:28:22 +02:00
antirez
f884be6854
Redis 2.9.56 (Redis 3.0.0 beta-7).
3.0.0-beta7
2014-06-30 12:11:22 +02:00
antirez
05b6b147ec
Test: find_available_port: check that cluster port is free as well.
...
The function will only return ports that have also port+10000 free, so
that Redis Cluster instances can be executed at the returned port.
2014-06-30 12:11:22 +02:00
antirez
a5aa3b6491
Test: fix instances.tcl restart_instance abort error.
2014-06-30 12:11:22 +02:00
antirez
b18c92b9e7
DEBUG CMDKEYS moved to COMMAND GETKEYS.
2014-06-27 18:39:33 +02:00
antirez
d3f43db20f
COMMAND COUNT subcommand added.
2014-06-27 18:39:33 +02:00
antirez
b205119810
COMMAND: fix argument parsing.
...
This fixes detection of wrong subcommand (that resulted in the default
all-commands output instead) and allows COMMAND INFO to be called
without arguments (resulting into an empty array) which is useful in
programmtically generated calls like the following (in Ruby):
redis.commands("command","info",*mycommands)
Note: mycommands may be empty.
2014-06-27 18:39:33 +02:00
antirez
3364b2d12b
COMMANDS command renamed COMMAND.
2014-06-27 18:39:33 +02:00