Hacker News new | ask | show | jobs
by qwertox 1550 days ago
nvme set-feature -f 6 -v 1 /dev/nvme0n1 (feature:0x6 (Volatile Write Cache))

dd if=/dev/zero of=~/testfile bs=10000M count=1 oflag=direct -> 1.4 GB/s

dd if=/dev/zero of=~/testfile bs=1000M count=10 oflag=direct -> 3.7 GB/s

dd if=/dev/zero of=~/testfile bs=100M count=100 oflag=direct -> 3.7 GB/s

dd if=/dev/zero of=~/testfile bs=10M count=1000 oflag=direct -> 4.0 GB/s

dd if=/dev/zero of=~/testfile bs=1M count=10000 oflag=direct -> 3.6 GB/s

nvme set-feature -f 6 -v 0 /dev/nvme0n1

dd if=/dev/zero of=~/testfile bs=10000M count=1 oflag=direct -> 412 MB/s

dd if=/dev/zero of=~/testfile bs=1000M count=10 oflag=direct -> 556 MB/s

dd if=/dev/zero of=~/testfile bs=100M count=100 oflag=direct -> 553 MB/s

dd if=/dev/zero of=~/testfile bs=10M count=1000 oflag=direct -> 482 MB/s

dd if=/dev/zero of=~/testfile bs=1M count=10000 oflag=direct -> 267 MB/s

The values I got in my first post were obtained through Ubuntu's "Disks" application which has a benchmarking dialog.

2 comments

"~/testfile" looks suspiciously like a file mounted on a filesystem. What happens if you bypass the filesystem?
They need concurrency at the flash level. Disabling write cache prevents it from clawing the concurrency out of single-threaded requests.

If flush works properly, a volatile write cache in the SSD is good for you.