From 6f49fd96c4be006ecd52c187a8999856f3d79cfe Mon Sep 17 00:00:00 2001 From: nitsanw <nitsanw@yahoo.com> Date: Thu, 15 Jan 2015 15:14:29 +0200 Subject: [PATCH] [core] Read me on CO in the context of YCSB --- core/COORDINATED-OMISSION.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 core/COORDINATED-OMISSION.md diff --git a/core/COORDINATED-OMISSION.md b/core/COORDINATED-OMISSION.md new file mode 100644 index 00000000..0b3b663a --- /dev/null +++ b/core/COORDINATED-OMISSION.md @@ -0,0 +1,27 @@ +YCSB in it's original form suffers from Coordinated Omission[1]: +* Load is controlled by response time +* Measurement does not account for missing time +* Measurement starts at beginning of request rather than at intended beginning +To provide a minimal correction patch I propose: +1. Replace internal histogram implementation with HdrHistogram: +HdrHistogram offers a dynamic range of measurement at a given precision and will +improve the fidelity of reporting. It allows capturing a much wider range of latencies. +We could add controls for corrected/uncorrected measurement. This is appropriate for a +uniform load test, but not for other loads. The mixing of different Ops also makes +this correction unreliable. This could work for a global histogram. +2. Track intended operation start and report latencies from that point in time: +This will require the introduction of a new measurement point and will inevitably +include measuring some of the internal preparation steps of the load generator. +These overhead should be negligible in the context of a network hop, but could +be corrected for by estimating the load-generator overheads (e.g. by measuring a +no-op DB). + +Further correction suggestions: +1. Correction load control: currently after a pause the load generator will do +operations back to back to catchup, this leads to a flat out throughput mode +of testing as opposed to controlled load. +2. Move to async model: Scenarios where Ops have no dependency could delegate the +Op execution to a threadpool and thus separate the request rate control from the +synchronous execution of Ops. Measurement would start on queuing for execution. + +1. https://groups.google.com/forum/#!msg/mechanical-sympathy/icNZJejUHfE/BfDekfBEs_sJ \ No newline at end of file -- GitLab