FIFO Optimization status 4
Zhao Shuai
zhaoshuai at freebsd.org
Sat Jul 25 13:27:36 UTC 2009
In the last two weeks I was doing performance test for the new FIFO
system. I wrote a benchmark program and use this program to compare
the performance of the new FIFO system with the old one. The result
shows that the new FIFO system increases the throughput by 30% when
transferring large amount of data. Here are the details of my test.
The benchmark program employes the producer/consumer model to test the
throughput of the FIFO system. In this model, producer sends messages
and consumer receives messages using FIFO. The elapsed time will be
caculated. Less time we use, more throughput we have.
The test is executed 100 times for all combinations of the following
parameters for message size and number of messages transmitted. The
avarage time cost is caculated and then printed.
- Message size(bytes): 64, 128, 256, 512, 1024, 2048, 4096
- Number of messages : 100, 1000, 5000, 10000, 100000
The performance test was carried out on a Dell Optiplex 960 box with Intel
Core 2 Quad 9400 processor, 4G RAM, and 320G hard disk. FreeBSD 7.0-RELEASE
is installed on this machine but the kernel has been updated to 8.0-CURRENT.
Here is the result obtained under the new fifo implementation (pipe
version):
100 1000 5000 10000 100000
64B 274us 148us 418us 753us 8909us
128B 89us 216us 769us 1545us 17729us
256B 106us 353us 1530us 3700us 35265us
512B 138us 595us 3709us 7310us 70396us
1024B 184us 1183us 7300us 14103us 141104us
2048B 295us 2696us 13929us 29296us 309294us
4096B 502us 5988us 29094us 58351us 583801us
Here is the reuslt obtained under the old fifo implementation (socket
version):
100 1000 5000 10000 100000
64B 85us 175us 584us 1126us 11905us
128B 96us 280us 1128us 2171us 23427us
256B 119us 484us 2170us 4559us 53267us
512B 159us 891us 4645us 9276us 109152us
1024B 239us 1732us 9554us 18825us 222931us
2048B 403us 3552us 18939us 38081us 451727us
4096B 723us 7546us 39151us 83753us 905902us
>From these results, we can see that the new fifo implementation gains little
advantage over the old fifo implementation when transfering small amount of
data.
e.g. handling 100*128 bytes of data costs 89 microseconds under the new fifo
code
while it costs 96 microseconds under the old fifo code. But when
transferring
large amount of data, the new fifo implementation gains significant
advantage over
the old fifo implementation. e.g. it takes 1126 microseconds handling
10000*64
bytes of data under the old fifo implementation, but under the new fifo
implementation,
it takes 753 microseconds, saving 30% of time. That is to say, the new fifo
system
increases the throughput by 30% in this case.
--
Regards,
Zhao
More information about the soc-status
mailing list