benchmark for single-threaded vs. multi-threaded memcached
liusifan
liusifan at gmail.com
Fri May 18 04:19:56 UTC 2007
Hi, all
I've make a benchmark for single-threaded vs. multi-threaded
memcached. The single-threaded program is memcached 1.2.0.
The multi-threaded program is spcached.
spcached is a server which implements memcached protocol.
More detail about spcached, please refer its home page:
http://code.google.com/p/spcached/
Using memcached java client as benchmark tool:
http://code.google.com/p/spcached/wiki/benchmarktool
bash$ java com/danga/MemCached/test/MemCachedThreadBench
<runs> <start> <port> <threads>
memcached 1.2.0 is a single-threaded event-driven program.
spcached uses a half-sync/half-async thread pool, it has a main
thread to process I/O event, and a worker thread to process
the real request.
The test enviroment is :
Hardware: DELL 640M ( CPU Intel T2300, RAM 1G )
Software: windows xp
vmware 5.5.1 ( allocate 128M RAM )
RedHat 7.2(Kernel 2.4.18-3)
memcached 1.2.0
spcached svn revision 5 + spserver 0.3 + spdict 0.2
The test steps are:
1.restart windows xp and vmware
2.limit memcached and spcached both can only keep 185808 objects
3.start memcached and MemCachedThreadBench
( the memcached and benchmark tool run on the same vmware )
bash$ memcached -m 96
4.stop memcached, start spcached and MemCachedThreadBench
bash$ spcached -c 185808
The test result is:
For set operation:
memcached : spcached -- 4000 : 2600 ( > 4 threads )
For get operation:
memcached : spcached -- 3500 : 2480 ( > 4 threads )
Detail test result:
memcached
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
22642 xxxxx 15 0 100M 60M 5488 S 0.0 49.2 19:27 memcached
bash$ java com/danga/MemCached/test/MemCachedThreadBench 500000 0 11211 1
Thread start runs set time(ms) get time(ms)
Main 500000 168924 149234
ReqPerSecond set - 2959 get - 3350
--
bash$ java com/danga/MemCached/test/MemCachedThreadBench 250000 0 11211 2
Thread start runs set time(ms) get time(ms)
Main 500000 135051 153600
ReqPerSecond set - 3702 get - 3255
--
bash$ java com/danga/MemCached/test/MemCachedThreadBench 166666 0 11211 3
Thread start runs set time(ms) get time(ms)
Main 499998 141120 156591
ReqPerSecond set - 3543 get - 3193
--
bash$ java com/danga/MemCached/test/MemCachedThreadBench 125000 0 11211 4
Thread start runs set time(ms) get time(ms)
Main 500000 123370 142169
ReqPerSecond set - 4052 get - 3516
--
bash$ java com/danga/MemCached/test/MemCachedThreadBench 100000 0 11211 5
Thread start runs set time(ms) get time(ms)
Main 500000 124111 142147
ReqPerSecond set - 4028 get - 3517
--
bash$ java com/danga/MemCached/test/MemCachedThreadBench 83333 0 11211 6
Thread start runs set time(ms) get time(ms)
Main 499998 123504 141857
ReqPerSecond set - 4048 get - 3524
--
bash$ java com/danga/MemCached/test/MemCachedThreadBench 71428 0 11211 7
Thread start runs set time(ms) get time(ms)
Main 499996 124767 142939
ReqPerSecond set - 4007 get - 3497
--
bash$ java com/danga/MemCached/test/MemCachedThreadBench 62500 0 11211 8
Thread start runs set time(ms) get time(ms)
Main 500000 124746 142887
ReqPerSecond set - 4008 get - 3499
--
bash$ java com/danga/MemCached/test/MemCachedThreadBench 55555 0 11211 9
Thread start runs set time(ms) get time(ms)
Main 499995 124821 143278
ReqPerSecond set - 4005 get - 3489
--
bash$ java com/danga/MemCached/test/MemCachedThreadBench 50000 0 11211 10
Thread start runs set time(ms) get time(ms)
Main 500000 124865 143082
ReqPerSecond set - 4004 get - 3494
=============================================================================
spcached
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
24536 xxx 15 0 74948 73M 608 S 0.0 59.2 25:31 spcached
bash$ java com/danga/MemCached/test/MemCachedThreadBench 500000 0 11216 1
Thread start runs set time(ms) get time(ms)
Main 500000 195136 209098
ReqPerSecond set - 2562 get - 2391
--
bash$ java com/danga/MemCached/test/MemCachedThreadBench 250000 0 11216 2
Thread start runs set time(ms) get time(ms)
Main 500000 199820 213581
ReqPerSecond set - 2502 get - 2341
--
bash$ java com/danga/MemCached/test/MemCachedThreadBench 166666 0 11216 3
Thread start runs set time(ms) get time(ms)
Main 499998 190134 203171
ReqPerSecond set - 2629 get - 2460
--
bash$ java com/danga/MemCached/test/MemCachedThreadBench 125000 0 11216 4
Thread start runs set time(ms) get time(ms)
Main 500000 189092 202166
ReqPerSecond set - 2644 get - 2473
--
bash$ java com/danga/MemCached/test/MemCachedThreadBench 100000 0 11216 5
Thread start runs set time(ms) get time(ms)
Main 500000 189452 200893
ReqPerSecond set - 2639 get - 2488
--
bash$ java com/danga/MemCached/test/MemCachedThreadBench 83333 0 11216 6
Thread start runs set time(ms) get time(ms)
Main 499998 188704 201101
ReqPerSecond set - 2649 get - 2486
--
bash$ java com/danga/MemCached/test/MemCachedThreadBench 71428 0 11216 7
Thread start runs set time(ms) get time(ms)
Main 499996 189220 201354
ReqPerSecond set - 2642 get - 2483
--
bash$ java com/danga/MemCached/test/MemCachedThreadBench 62500 0 11216 8
Thread start runs set time(ms) get time(ms)
Main 500000 190293 201664
ReqPerSecond set - 2627 get - 2479
--
bash$ java com/danga/MemCached/test/MemCachedThreadBench 55555 0 11216 9
Thread start runs set time(ms) get time(ms)
Main 499995 191152 202004
ReqPerSecond set - 2615 get - 2475
--
bash$ java com/danga/MemCached/test/MemCachedThreadBench 50000 0 11216 10
Thread start runs set time(ms) get time(ms)
Main 500000 191352 202574
ReqPerSecond set - 2612 get - 2468
liusifan
2007-05-18
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.danga.com/pipermail/memcached/attachments/20070518/d3291c1f/attachment.htm
More information about the memcached
mailing list