Details
-
Test
-
Status: Patch Available
-
Minor
-
Resolution: Unresolved
-
3.5.0
-
None
-
None
Description
Adding the ability to perform a system test of mixed workloads using read-only/mixed/write-only clients.
In addition, adding few basic latency statistics.
https://reviews.apache.org/r/25217/
Just in case it'll help someone, here is an example of how to run generate load system test:
1. Checkout zookeeper-trunk
2. Go to zookeeper-trunk, run "ant jar compile-test"
3. Go to zookeeper-trunk\src\contrib\fatjar, run "ant jar"
4. Copy zookeeper-dev-fatjar.jar from zookeeper-trunk\build\contrib\fatjar to each of the machines you wish to use.
5. On each server, assuming that you've created a valid ZK config file (e.g., zk.cfg) and a dataDir, run:
5.1 java -jar zookeeper-dev-fatjar.jar server ./zk.cfg &
5.2 java -jar zookeeper-dev-fatjar.jar ic <name of this server>:<its client port> <name of this server>:<its client port> /sysTest &
6. And finally, in order to run the test (from some machine), execute the command:
java -jar zookeeper-dev-fatjar.jar generateLoad <name of one of the servers>:<its client port> /sysTest <number of servers> <number of read-only clients> <number of mixed workload clients> <number of write-only clients>
Note that "/sysTest" is the same name that we used in 5.2.
You'll see "Preferred List is empty" message, and after few seconds you should get notifications of "Accepted connection from Socket[....".
Afterwards, just set the percentage of the mixed workload clients by entering "percentage <number>" and the test will start.
Some explanation regarding the new output (which is printed every 6 seconds, and is reset every time you enter a new percentage).
Interval: <interval number> <time>
Test info: <number of RO clients>xRO <number of mixed workload clients>x<their write percentage>%W <number of write only clients>xWO, percentiles [0.5, 0.9, 0.95, 0.99]
Throughput: <current interval throughput> | <minimum throughput until now> <average throughput until now> <maximum throughput until now>
Read latency: interval [<interval's read latency values according to the percentiles>], total [<read latency values until now, according to the percentiles>]
Write latency: interval [interval's write latency values according to the percentiles], total [<write latency values until now, according to the percentiles>]
Note that the throughput is requests per second, and latency is in ms. In addition, if you perform a read only test / write only test, you won't see the printout of write / read latency.