Think before you speak, read before you think.

使用 dd 测试 I/O 性能

by

in

使用 dd 并结合不同的参数测试 I/O 性能

不要在生产环境下用 dd 进行操作,准备一些测试环境进行如下操作。

dd 参数:

bs=BYTES 同时读取和写入的字节

写性能测试,可以有如下 oflag 的值可以选择

直接写 ( direct )
同步写 ( dsync, synchronize )
同步写 ( sync, 包含 metadata )

对于 dd ,输入可以是 /dev/zero ,输出可以是 空 raid , 磁盘或分区, 也可以是一个文件。当使用文件方式时会比其他方式慢,因为 metadata 也要写入。

当使用 if=/dev/zero bs=1G 的时候,需要内存有 1G 空余空间。
要多次进行测试,并模拟日常服务器的异常情况,可以设置一些 cron 任务等,如 updatedb 。

写 512MB 文件,只写一次,使用 oflag=direct,启用硬盘 cache ( hdparm -W1 /dev/vda )

dd if=/dev/zero of=/root/testfile bs=512MB count=1 oflag=direct

关闭磁盘 cache ( hdparm -W0 /dev/vda ),再测一次

会发现开 cache 比不开 cache 快很多

再做实验,使用 bs=512 bytes,count=1000 来写文件,总大小 512 KB。这样就模拟了频繁写磁盘的场景,同时根据显示的时间就能知道小文件每次写访问用时。

参考:https://www.thomas-krenn.com/en/wiki/Linux_I/O_Performance_Tests_using_dd

补充,使用 dd 测试读性能,首先清空 cache 的数据,然后读文件丢到 /dev/null

echo 3 > /proc/sys/vm/drop_caches
dd if=./testfile of=/dev/null bs=8k

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *