Linux分區性能測試方法與工具
在Linux系統中,對分區進行性能測試是評估其I/O能力、識別瓶頸的關鍵步驟。以下是常用的測試方法及工具,覆蓋從基礎到高級的場景:
dd
是Linux自帶的簡單工具,適合快速測試分區的順序讀寫速度,但無法測試隨機I/O或細粒度指標(如IOPS、延遲)。
dd if=/dev/zero of=/mnt/sda1/testfile bs=1G count=1 oflag=direct
參數說明:if=/dev/zero
(輸入源,生成空字符)、of=/mnt/sda1/testfile
(輸出文件,需替換為目標分區掛載路徑)、bs=1G
(塊大小,1GB)、count=1
(塊數量,1塊)、oflag=direct
(繞過緩存,直接寫入磁盤,結果更真實)。dd if=/mnt/sda1/testfile of=/dev/null bs=1G count=1 iflag=direct
參數說明:if=/mnt/sda1/testfile
(輸入文件)、of=/dev/null
(輸出目標,丟棄數據)、iflag=direct
(繞過緩存,直接讀取磁盤)。rm /mnt/sda1/testfile
),避免占用空間。hdparm
是專門用于測試硬盤性能的工具,可評估緩存讀取速度(內存加速)和不帶緩存的磁盤讀取速度(真實磁盤性能)。
sudo apt-get install hdparm
sudo yum install hdparm
sudo hdparm -Tt /dev/sda1
參數說明:-T
(測試緩存讀取速度)、-t
(測試不帶緩存的磁盤讀取速度)。/dev/sda1:
Timing cached reads: 10000 MB in 2.00 seconds = 5000.00 MB/sec
Timing buffered disk reads: 500 MB in 3.00 seconds = 166.67 MB/sec
解釋:“Timing cached reads”為緩存讀取速度(受內存影響),“Timing buffered disk reads”為真實磁盤讀取速度(反映磁盤本身性能)。sudo umount /dev/sda1
),避免緩存干擾(可選)。fio
(Flexible I/O Tester)是Linux下最強大的性能測試工具,支持多線程/多進程、隨機/順序I/O、不同塊大小、IOPS/延遲測量等,適合專業場景。
sudo apt-get install fio
sudo yum install fio
fio --name=seq_read --ioengine=libaio --rw=read --bs=1M --direct=1 --size=4G --numjobs=1 --runtime=60 --time_based --filename=/dev/sda1
rw=read
為rw=write
)。fio --name=seq_write --ioengine=libaio --rw=write --bs=1M --direct=1 --size=4G --numjobs=1 --runtime=60 --time_based --filename=/dev/sda1
fio --name=rand_read --ioengine=libaio --rw=randread --bs=4k --direct=1 --size=1G --numjobs=1 --runtime=60 --time_based --filename=/dev/sda1
rw=randread
為rw=randwrite
)。fio --name=rand_write --ioengine=libaio --rw=randwrite --bs=4k --direct=1 --size=1G --numjobs=1 --runtime=60 --time_based --filename=/dev/sda1
--ioengine=libaio
:使用Linux異步I/O引擎(提升測試效率);--rw
:讀寫模式(read
/write
/randread
/randwrite
);--bs
:塊大?。ㄈ?M、4k,根據測試場景選擇);--direct=1
:繞過緩存,直接訪問磁盤(結果更真實);--size
:測試數據大?。ㄈ?G、1G);--runtime
:測試運行時間(如60秒);--time_based
:以時間為基礎結束測試(即使數據未寫完)。READ: bw=512MiB/s (537MB/s), 512MiB/s-512MiB/s (537MB/s-537MB/s), io=30.0GiB (32.2GB), run=60000-60000msec
表示順序讀取帶寬為512MB/s,IOPS約為512MB/s / 4k = 128000
(若塊大小為4k),延遲為測試期間的平均響應時間。iostat
(屬于sysstat包)可監控分區的實時I/O性能,如吞吐量、IOPS、利用率、隊列長度等,適合配合測試工具使用,分析性能瓶頸。
sudo apt-get install sysstat
sudo yum install sysstat
iostat -x 1
iostat -x /dev/sda1 1
關鍵指標說明:
- `%util`:磁盤利用率(百分比,接近100%表示磁盤繁忙);
- `await`:平均I/O響應時間(毫秒,包括隊列等待和處理時間);
- `r/s`/`w/s`:每秒讀/寫操作數(IOPS);
- `rkB/s`/`wkB/s`:每秒讀/寫數據量(KB/s)。