正确用DD测试磁盘读写速度
这篇讲的是如何正确使用dd命令测试磁盘读写速度。作者从四种常见的dd测试命令写法出发,对比了它们之间一个关键但容易忽略的差异:对系统写缓存的处理方式。 文章指出,最简单的dd命令(`dd bs=1M count=128 if=/dev/zero of=test`)其实并没有把数据真正写到磁盘上,它只是将数据读入内存缓存,因此得出的速度“超级快”但毫无参考价值。即便在命令后加上`; sync`,由于sync是独立执行的,在开始同步写入前dd早已显示了“假”速度。 真正的区别在于两个参数:`conv=fdatasync` 与 `oflag=dsync`。前者会在dd执行完毕后进行一次完整的同步操作,确保数据落盘,从而测出相对真实的、结合了读写缓存的持续写入性能;后者则强制每次写入1MB数据后都进行同步,几乎完全绕过缓存,模拟的是最慢的、无缓存优化的随机小文件写入场景。 因此,对于评估磁盘的常规读写性能,作者建议使用 `conv=fdatasync` 参数,这样测得的数据最贴近实际工作负载。理解这些细微差别,能帮助我们避免被虚高的测试数据误导,更准确地评估存储子系统的真实性能。