Hi all,
This email is regarding the Data caching benchmark setup which uses memcached
and a client
that emulates twitter-like get/set requests. The questions I have are at the
bottom.
For the data caching benchmark, the arguments provided for the client on the
cloudsuite website
describe running the workload in a single request/reply mode. I was trying to
use the multiget option
in the memcached client ( -m and -l flags are provided for this purpose) , but
couldn't get it to work.
Either I'm not running it correctly or it doesn't seem to work. I feel it's the
latter.
The reason I was trying the multiget mode was to emulate Get-request batching
since memcached inherently
is network-bound. See 'Scaling Memcache at Facebook' NSDI'13.
I performed the measurements as described on the cloudsuite website. After
warming up memcached issuing
the exact same commands mentioned on the cloudsuite website, I used the -l and
-m flags and issued:
./loader -a ../twitter_dataset/twitter_dataset_30x -s servers.txt -g 0.8 -T 1
-c 200 -w 8 -l 10 -m 0.5
Output:
max, avgGetSize
1.000001, 0.0, 0, 0, 0, 0,
0, -nan, 0.000100, 0.000100, 0.000100, -nan,
1000000000.000000, 0.000000, -nan
Outstanding requests per worker:
42 33 28 41 46 29 61 41
timeDiff, rps, requests, gets, sets, hits,
misses, avg_lat, 90th, 95th, 99th, std, min,
max, avgGetSize
1.000001, 0.0, 0, 0, 0, 0,
0, -nan, 0.000100, 0.000100, 0.000100, -nan,
1000000000.000000, 0.000000, -nan
Outstanding requests per worker:
42 33 28 41 46 29 61 41
timeDiff, rps, requests, gets, sets, hits,
misses, avg_lat, 90th, 95th, 99th, std, min,
max, avgGetSize
1.000001, 0.0, 0, 0, 0, 0,
0, -nan, 0.000100, 0.000100, 0.000100, -nan,
1000000000.000000, 0.000000, -nan
*********************************************************
The above command adds an -l and -m to the default commands to the website. It
says each multiget request has 10 gets in it.
Interestingly, -l 2 tends to work
Output:
1.000001, 200778.8, 200779, 80352, 39985, 228243,
12994, 14.945080, 18.700000, 19.700000, 21.100000, 2.284085, 11.553000,
22.359001, 797.238002
Outstanding requests per worker:
371 363 389 370 383 360 390 370
timeDiff, rps, requests, gets, sets, hits,
misses, avg_lat, 90th, 95th, 99th, std, min,
max, avgGetSize
1.000001, 203925.8, 203926, 81746, 40590, 231764,
13161, 14.704381, 18.400000, 19.200000, 20.200000, 2.105561, 11.369000,
21.534000, 796.015771
Outstanding requests per worker:
372 363 389 370 383 360 390 370
timeDiff, rps, requests, gets, sets, hits,
misses, avg_lat, 90th, 95th, 99th, std, min,
max, avgGetSize
1.000001, 203434.8, 203435, 81533, 40460, 231803,
12615, 14.766729, 18.500000, 19.400000, 20.500000, 2.244194, 11.412000,
21.562999, 797.958042
Outstanding requests per worker:
373 363 389 370 383 363 391 370
***********************************************************
For sanity checking, the default arguments (no -m and -l) as mentioned on the
website give the following output
Output:
requests, gets, sets, hits, misses, avg_lat,
90th, 95th, 99th, std, min, max, avgGetSize
1.000001, 202935.8, 202936, 162486, 40450, 158344,
4142, 9.997106, 12.700000, 13.200000, 14.100000, 1.722175, 7.115000,
15.413000, 816.615358
Outstanding requests per worker:
255 249 258 252 253 241 255 266
timeDiff, rps, requests, gets, sets, hits,
misses, avg_lat, 90th, 95th, 99th, std, min,
max, avgGetSize
1.000001, 201379.8, 201380, 161349, 40031, 157243,
4106, 10.108395, 12.900000, 13.400000, 14.200000, 1.803369, 7.326000,
15.984001, 815.152155
Outstanding requests per worker:
257 249 258 252 254 243 256 266
**************************************************************
Questions:
1) Can you confirm my claim that multigets beyond 2 do not work ?
2) Is there an easy fix for this if 1) is true ?
3) If 1) is not true, can you let me know what I'm doing wrong ?
Batching seems to be the way to run memcached and it would be better if this
benchmark was run in a way it is
run in a practical setting.
Thanks alot.
Hamza