I’ve purchased a product called Dataram RAMDISK and am going to do a quick review on it. It’s free for RAM Disk’s up to 4GB in size. Beyond that size and you need to pay $9.99 for a license file that allows you to increase it to whatever amount of free RAM you have in your system up to a maximum of 64GB. My system is a P6T SE with 6 RAM slots, 3x2GB RAM and 3x1GB RAM sticks are installed, giving me 9GB in total. This configuration activates triple-channel mode, so I’m getting the full 192bit of available bandwidth from my memory.
All of my RAM is DDR3 @ 1333MHz (PC3-10600), but Everest is reporting a speed of 800MHz. My theoretical MB/s speed should max out at 32000MB/s, but if Everest is only operating at 800MHz that means my theoretical maximum speed is 19200MB/s. I think the reason I did this is because my triple channel puked at the unmatched channels causing BSOD’s and non-boots, but I’ll investigate later as it’s a huge performance penalty. Everest confirms this is the measured speed I’m running at 19200MB/s
(Everest measures 19198MB/s)
(My unmatched odd sets of RAM pairs. Note, 1333MHz is the lowest my RAM goes, to 1800MHz for the fastest).
With that said, my current theoretical maximum speed my RAM should be able to operate at is 19200MB/s. I’m going to test my RAM first to gauge it’s maximum speed, then test the RAM Disk to see if it matches up.
Everest reports that my actual performance is 11446MB/s Read, 11978MB/s Write and 15376MB/s Copy. The Memory Read benchmark reads a 16 MB sized, 1 MB aligned data buffer from system memory into the CPU. Memory is read in forward direction, continuously without breaks. The Memory Write benchmark writes a 16 MB sized, 1 MB aligned data buffer from the CPU into the system memory.
I will attempt to duplicate these with IO Meter to see how close the RAMDisk can get to the theoretical benchmark.
Before that, he’s Everest Disk Benchmark result (everything is automatic – Linear Read):
With IOMeter I have the following configuration:
Align I/O’s 1MB
The results I get are:
5000 I/O per second
Swapping Read 100% to 0% (making it 100% Write) I get:
4930 I/O and MB/s
So writes are more intensive then reads, as they usually are, but I cannot get anywhere close to the speed of reading a 16MB sized file in 1MB chunks to the maximum theoretical speed of the RAM. I’m unsure as to why that may be, but I suspect it’s the path the file takes from the RAMDisk -> Driver -> Bus -> CPU…?
To try and maximize the speed of the drive and match up to Everest Linear read to gauge the maximum speed of the disk, I’ll setup IO Meter to match Everest’s description of the Linear Read test:
This test is designed to measure the sustained linear (sequential) reading performance of the storage device by reading all data from the surface of the device.
IOMeter does this easily enough.
Using Procmon, I was able to verify that Linear Read uses a 64KB block size and reads the entire disk. Doing this with IO Meter I achieved the same results as above in the MB/s, but much higher IO/s. I’m unsure why IOMeter is unable to match Everest’s results.
HD Tach was not useful as it would operate at 3000MB/s for various lengths of time each time I reran the test. Sometimes it would operate at 3000MB/s up to 0.5GB then 700MB/s for the rest of the drive, or 3000MB/s up to 2.4GB.
Too inconsistent to make an observation.
To compare this RAMDisk to other HDD’s I turned to Anandtech and used his settings to compare some SSD drives. His results are here.
The results I achieved are:
133362 IOs per second
Average Write Latency 0.0073
Max Write Latency 0.5526
Compared to the first gen Intel SSD’s the RAM Disk is:
12x faster in IOs per second
12x faster in MB/s
12x faster in Average Write Latency 0.0073
170x faster in Max Write Latency 0.5526
Pretty much an order of magnitude faster as should be expected for a RAM Disk vs. a top of the line SSD.
In the end, I’m unsure if I’ve hit a wall with my numbers, but it feels artificial. Everest does come within 70% of the numbers it achieved in a pure memory test, but even the Everest test tops out at exactly 8192MB/s.
I’ll try changing my memory speeds to something faster and see if this limit is artificial or a limit of my system.