I have a 64GB DDR4 3200MHz memory installed on my PC. When I run sysbench
, I get the following results:
# sysbench memory --memory-block-size=1M --memory-total-size=10G run
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)
Running the test with following options:
Number of threads: 1
Initializing random number generator from current time
Running memory speed test with the following options:
block size: 1024KiB
total size: 10240MiB
operation: write
scope: global
Initializing worker threads...
Threads started!
Total operations: 10240 (26329.53 per second)
10240.00 MiB transferred (26329.53 MiB/sec)
General statistics:
total time: 0.3876s
total number of events: 10240
Latency (ms):
min: 0.04
avg: 0.04
max: 0.08
95th percentile: 0.04
sum: 386.04
Threads fairness:
events (avg/stddev): 10240.0000/0.00
execution time (avg/stddev): 0.3860/0.00
It indicates it works at up to 26 GB/s. So far so good. But when I mount ramfs
and try a similar test, this number drops considerably:
# mount -t ramfs -o size=11G ramfs /mnt/ramfs/
# dd if=/dev/zero of=/mnt/ramfs/zero.img bs=1G count=10 conv=fdatasync
10+0 records in
10+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 3.51899 s, 3.1 GB/s
Indicating I'm only getting around 3GB/s writing speed. I understand the file system has some overhead but a drop from 26GB/s to 3GB/s would be a really big overhead.
UPDATE 1 - Another test:
# time head -c 11G /dev/zero > /mnt/ramfs/zero.img
real 0m3.046s
user 0m0.225s
sys 0m2.808s
Am I doing something wrong? Is there a way to increase performance on RAMFS? Why is RAMFS so much slower than RAM itself?