Activity log for bug #2043553

Date Who What changed Old value New value Message
2023-11-15 08:15:24 Igor bug added bug
2023-11-15 08:15:24 Igor attachment added memaslap-128-1.txt https://bugs.launchpad.net/bugs/2043553/+attachment/5719490/+files/memaslap-128-1.txt
2023-11-15 08:16:37 Igor description When set is 0 the memaslap populates server/s with keys/values--performs a lot of SET operations. Right after the population stage the actual test begins and memaslap performs a lot of only GET operations (only GETs as set is 0). However, when memaslap generates statistics for the test, it counts all the SET and the GET operations, including the SET operations of the population stage. As result, it reports wrong throughput and transaction/second. In ms_print_memslap_stats() it prints the statistics as follows: (ms_stats.cmd_get+ms_stats.cmd_set)/test_time = transaction/second (ms_stats.bytes_written + ms_stats.read)/test_time = throughput And of course, these numbers are wrong as they include the SET operations and the written bytes of the population stage while test time is the time of the GET operations. Attached is an example report of the test of 128 bytes values, set is 0, 16 threads, and test ran for 65 seconds. Note, that the population stage took around 16 minutes---see the huge cmd_set counter. It reports 4M transactions/second and 659 MB/s when in fact the real performance is ~500K transactions/second and ~55 MB/s. When set is 0 the memaslap populates server/s with keys/values--performs a lot of SET operations. Right after the population stage the actual test begins and memaslap performs a lot of only GET operations (only GETs as set is 0). However, when memaslap generates statistics for the test, it counts both the SET and the GET operations, including the SET operations of the population stage. As a result, it reports wrong throughput and transaction/second. In ms_print_memslap_stats() it prints the statistics as follows: (ms_stats.cmd_get+ms_stats.cmd_set)/test_time = transaction/second (ms_stats.bytes_written + ms_stats.read)/test_time = throughput And of course, these numbers are wrong as they include the SET operations and the written bytes of the population stage while test time is the time of the GET operations. Attached is an example report of the test of 128 bytes values, set is 0, 16 threads, and test ran for 65 seconds. Note, that the population stage took around 16 minutes---see the huge cmd_set counter. It reports 4M transactions/second and 659 MB/s when in fact the real performance is ~500K transactions/second and ~55 MB/s.
2023-11-15 08:28:43 Igor attachment added fix set 0 wrong statistics https://bugs.launchpad.net/libmemcached/+bug/2043553/+attachment/5719492/+files/patch.diff