What is NVMe? 1. NVMe is a standard interface protocol for PCIe. 2, Remove the old standard on SSD restrictions. 3. Support all common operating systems. 4. Good scalability. 5, with low delay, low energy consumption, high performance, and other advantages. The traditional AHCI protocol is highly compatible but does not provide the best performance when used with SSDS connected over a PCIe bus. NVMe is designed to maximize SSD performance by taking advantage of the low latency and parallelism of PCIe SSDS and combining processor and platform architectures.
It is well known that SSDs have faster read and write speeds than mechanical hard drives. Most machines now use the SATA bus standard, which actually transfers up to about 600MB/s. SSDs that support the PCIe bus, the NVMe protocol, will actually transfer at over 1000MB/s. How exactly do you test the performance of an NVMe drive? Please see below
View NVMe disk
[[email protected] ~]# nvme list
Dd Tests raw disks
Bs = 4KB speed increased significantly, up to 2.7GB /s
[[email protected] ~]# dd if=/dev/zero of=/dev/nvme0n1 bs=512 count=1000000
1000000+0 records in
1000000+0 records out
512000000 bytes (512 MB, 488 MiB) copied, 1.99117 s, 257 MB/s
[[email protected] ~]# dd if=/dev/zero of=/dev/nvme0n1 bs=1024 count=1000000
1000000+0 records in
1000000+0 records out
1024000000 bytes (1.0 GB, 977 MiB) copied, 3.48962 s, 293 MB/s
[[email protected] ~]# dd if=/dev/zero of=/dev/nvme0n1 bs=2048 count=1000000
1000000+0 records in
1000000+0 records out
2048000000 bytes (2.0 GB, 1.9 GiB) copied, 6.51846 s, 314 MB/s
[[email protected] ~]# dd if=/dev/zero of=/dev/nvme0n1 bs=4096 count=1000000
1000000+0 records in
1000000+0 records out
4096000000 bytes (4.1 GB, 3.8 GiB) copied, 1.51598 s, 2.7 GB/s
[[email protected] ~]# dd if=/dev/zero of=/dev/nvme0n1 bs=8192 count=1000000
1000000+0 records in
1000000+0 records out
8192000000 bytes (8.2 GB, 7.6 GiB) copied, 2.69523 s, 3.0 GB/s
FIO performance test
For NVMe disks, the performance of 4KB blocks is much better than that of 512 blocks
[[email protected] ~]# fio -ioengine=libaio -bs=4k -direct=1 -thread -rw=write -filename=/dev/nvme0n1 -name="BS 4KB read test" -iodepth=128 -runtime=30
BS 4KB read test: (g=0): rw=write, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=128
fio-3.19
Starting 1 thread
Jobs: 1 (f=1): [W(1)][100.0%][w=1441MiB/s][w=369k IOPS][eta 00m:00s]
BS 4KB read test: (groupid=0, jobs=1): err= 0: pid=60840: Fri Dec 24 01:09:51 2021
write: IOPS=369k, BW=1441MiB/s (1511MB/s)(42.2GiB/30001msec); 0 zone resets
[[email protected] ~]# fio -ioengine=libaio -bs=512 -direct=1 -thread -rw=write -filename=/dev/nvme0n1 -name="BS 4KB read test" -iodepth=128 -runtime=30
BS 4KB read test: (g=0): rw=write, bs=(R) 512B-512B, (W) 512B-512B, (T) 512B-512B, ioengine=libaio, iodepth=128
fio-3.19
Starting 1 thread
Jobs: 1 (f=1): [W(1)][100.0%][w=192MiB/s][w=392k IOPS][eta 00m:00s]
BS 4KB read test: (groupid=0, jobs=1): err= 0: pid=60689: Fri Dec 24 01:05:34 2021
write: IOPS=392k, BW=191MiB/s (201MB/s)(5740MiB/30001msec); 0 zone resets
[[email protected] ~]# fdisk -l
Disk /dev/nvme0n1: 894.3 GiB, 960197124096 bytes, 1875385008 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 131072 bytes / 131072 bytes
Disk /dev/nvme2n1: 1.8 TiB, 1920383410176 bytes, 3750748848 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes