dd测试磁盘性能

比较基本的测试顺序读写的磁盘性能,可以使用dd命令,这是一个简单的写块设备的命令。

  • 写入2倍内存的大文件,并且sync到磁盘

写入2倍内存的大文件,并且sync到磁盘,这可以确保获得持续的写入速率,因为此时缓存影响有限。例如,这里虚拟机采用8G内存配置,采用8k块大小写入(通常PostgresSQL使用的块大小),则每1G有125000个块,则设置200w个写入块

time sh -c "dd if=/dev/zero of=ddfile bs=8k count=2000000 && sync"

输出显示

2000000+0 records in
2000000+0 records out
16384000000 bytes (16 GB) copied, 409.806 s, 40.0 MB/s

real    7m4.617s
user    0m0.428s
sys    0m36.500s

这里可以看到,dd测试性能显示是 40MB/s,但是如果加上sync指令,则只有36.8MB/s (16384000000/1024/1024/424.6.17)

  • 写入和内存一样大小大文件,这样内存中的缓存会完全被第二个文件刷新掉,这样我们后面再次读文件时候就会真正从磁盘读取文件,而不会读取第一次写入文件缓存在FS cache中的数据,以保证测试准确

    time sh -c "dd if=/dev/zero of=ddfile2 bs=8K count=1000000"
  • 测试读取性能

由于在第二步中FS Cache被第二个文件填满,所以,这次测试读取性能是完全测试磁盘的读取性能

time dd if=ddfile of=/dev/null bs=8k

测试性能显示是

2000000+0 records in
2000000+0 records out
16384000000 bytes (16 GB) copied, 432.9 s, 37.8 MB/s

real    7m12.902s
user    0m0.382s
sys    0m13.033s

参考

Last updated