Linux硬盘io压力测试
当将数据写入文件时,内核通常先将该数据复制到其中一个缓冲区中,如果该缓冲区尚未写满,则并不将其排入输出队列,而是等待其写满或者当内核需要重用该缓冲区以便存放其他磁盘块数据时,再将该缓冲排入输出队列,然后待其到达队列时,才进行实际的I/O操作。
conv=fdatasync 参数,当 dd 命令结束前,一次性把所有的数据写到磁盘上,因此写入速度非常快。
oflag=dsync 参数,每执行一次写入一次硬盘,比较慢
测试写:
测试写:
time -p bash -c "(dd if=/dev/zero of=test.dd bs=1M count=2000 conv=fdatasync)" 2000+0 records in 2000+0 records out 2097152000 bytes (2.1 GB) copied, 16.0832 s, 130 MB/s real 16.11 user 0.00 sys 4.56
这里可以看到:写入2000M的时间是16.11s,所以磁盘的写速度为124MB/sec(2000M/16.11)
测试读:
hdparm -t --direct /dev/sda3 /dev/sda3: Timing O_DIRECT disk reads: 426 MB in 3.06 seconds = 139.35 MB/sec
这里可以看到:在3秒时间内读取426MB,每秒读取139.35MB