1.美圖
2 hdparm 命令
hdparm 命令提供了一個命令行的接口用於讀取和設置IDE或SCSI硬盤參數,注意該命令只能測試磁盤的讀取速率。
例如,測試 sda 磁盤的讀取速率:
[[email protected] var ]$ hdparm -Tt /dev/polex_pv/varvol
/dev/polex_pv/varvol:
Timing cached reads: 15588 MB in 2.00 seconds = 7803.05 MB/sec
Timing buffered disk reads: 1128 MB in 3.01 seconds = 374.90 MB/sec
從測試結果看出,帶有緩存的讀取速率爲:7803.05MB/s ,磁盤的實際讀取速率爲:374.90 MB/s 。
3. dd 命令
Linux dd 命令用於讀取、轉換並輸出數據。dd 可從標準輸入或文件中讀取數據,根據指定的格式來轉換數據,再輸出到文件、設備或標準輸出。
我們可以利用 dd 命令的複製功能,測試某個磁盤的 IO 性能,須要注意的是 dd 命令只能大致測出磁盤的 IO 性能,不是非常準確。
測試寫性能命令:
[[email protected] var ]$ time dd if=/dev/zero of=test.file bs=1G count=2 oflag=direct
2+0 records in
2+0 records out
2147483648 bytes (2.1 GB) copied, 13.5487 s, 159 MB/s
real 0m13.556s
user 0m0.000s
sys 0m0.888s
可以看到,該分區磁盤寫入速率爲 159M/s,其中:
/dev/zero 僞設備,會產生空字符流,對它不會產生 IO 。
if 參數用來指定 dd 命令讀取的文件。
of 參數用來指定 dd 命令寫入的文件。
bs 參數代表每次寫入的塊的大小。
count 參數用來指定寫入的塊的個數。
offlag=direc 參數測試 IO 時必須指定,代表直接寫如磁盤,不使用 cache 。
測試讀性能命令:
[[email protected] var ]$ dd if=test.file of=/dev/null iflag=direct
4194304+0 records in
4194304+0 records out
2147483648 bytes (2.1 GB) copied, 4.87976 s, 440 MB/s
可以看到,該分區的讀取速率爲 440MB/s
4. fio 命令
fio 命令是專門測試 iops 的命令,比 dd 命令準確,fio 命令的參數很多,這裏舉幾個例子供大家參考:
順序讀:
fio -filename=/var/test.file -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=test_r
隨機寫:
fio -filename=/var/test.file -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=test_randw
順序寫:
fio -filename=/var/test.file -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=test_w
混合隨機讀寫:
fio -filename=/var/test.file -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=test_r_w -ioscheduler=noop