以下內容來自于RHEL 官方文檔。以下工具可以用來分析磁盤 IO 和文件系統性能瓶頸。
分析方法見 《性能分析方法-《性能之巔》筆記》,USE 法必須要使用相關性能分析工具。
影響 IO 和文件系統性能的主要因素:
數據寫入或讀取特征
順序或隨機
buffered 或 Direct IO
數據與底層 geometry 保持一致
塊大小
文件系統大小
日志大小和位置
記錄訪問時間
確保數據可靠性
預抓取數據
預分配磁盤空間
文件碎片
資源爭用
vmstat
vmstat
工具報告整個系統的進程、內存、分頁、塊 I/O、中斷和 CPU 活動。它可幫助管理員確定 I/O 子系統是否負責任何性能問題。如果使用 vmstat 進行分析顯示,I/O 子系統負責降低性能,管理員可以使用 iostat 工具來確定負責的 I/O 設備。
常用命令:
vmstat 1
每1秒采集一次。
# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r b swpd free buff cache si so bi bo in cs us sy id wa st0 0 0 14492940 93516 1050928 0 0 0 0 0 2 0 0 100 0 00 0 0 14492940 93516 1050928 0 0 0 0 7 40 0 0 100 0 00 0 0 14492940 93516 1050928 0 0 0 0 4 36 0 0 100 0 0
vmstat 1 -t
每1秒采集一次,并打印時間戳。
# vmstat 1 -t
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- -----timestamp-----r b swpd free buff cache si so bi bo in cs us sy id wa st CST0 0 0 14495244 93516 1050928 0 0 0 0 0 2 0 0 100 0 0 2023-08-17 17:14:350 0 0 14495244 93516 1050928 0 0 0 0 4 36 0 0 100 0 0 2023-08-17 17:14:360 0 0 14495244 93516 1050928 0 0 0 0 5 36 0 0 100 0 0 2023-08-17 17:14:370 0 0 14495244 93516 1050928 0 0 0 0 15 76 0 0 100 0 0 2023-08-17 17:14:380 0 0 14495244 93516 1050928 0 0 0 0 5 34 0 0 100 0 0 2023-08-17 17:14:390 0 0 14495244 93516 1050928 0 0 0 24 6 40 0 0 100 0 0 2023-08-17 17:14:400 0 0 14495244 93516 1050928 0 0 0 0 5 38 0 0 100 0 0 2023-08-17 17:14:41
iostat
iostat
報告您系統中的 I/O 設備負載。它由 sysstat 軟件包提供。
常用命令:
iostat -dxm 1
每1秒采集一次設備IO信息,并以MB為單位輸出。
# iostat -dxm 1
Linux 3.10.0-1160.42.2.el7.x86_64 (c1-121) 08/17/2023 _x86_64_ (2 CPU)Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.01 0.01 0.06 0.00 0.00 21.77 0.00 2.70 5.06 2.44 0.46 0.00
scd0 0.00 0.00 0.00 0.00 0.00 0.00 114.22 0.00 0.22 0.22 0.00 0.22 0.00
dm-0 0.00 0.00 0.01 0.07 0.00 0.00 19.87 0.00 2.77 5.94 2.50 0.44 0.00
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 50.96 0.00 1.01 1.01 0.00 0.91 0.00Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
scd0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
blktrace
blktrace
提供有關 I/O 子系統花費時間的詳細信息。
blkparse
讀取來自 blktrace 的原始輸出,并生成由 blktrace 記錄的輸入和輸出操作的人類可讀摘要。
btt
分析 blktrace 輸出并顯示 I/O 堆棧各個區域所花費的時間,從而更輕松地發現 I/O 子系統中的瓶頸。該實用程序作為 blktrace 軟件包的一部分提供。
使用方法:
blktrace /dev/sdb
blkparse -i sdb -d sdb.bin >>sdb.txt
btt -i sdb.bin
bpftrace
BPF Compiler Collection(BCC)是一個庫,可幫助創建擴展的 Berkeley Packet Filter(eBPF)程序。eBPF 程序在事件中觸發,如磁盤 I/O、TCP 連接和進程創建。BCC 工具安裝在 /usr/share/bcc/tools/ 目錄中。以下 bcc-tools 可幫助分析性能:
biolatency
總結了塊設備 I/O(磁盤 I/O)中延遲的問題。這允許研究發行版,包括用于設備緩存命中以及緩存未命中的兩種模式,以及延遲延遲。biosnoop
是基本的塊 I/O 追蹤工具,用于顯示每個 I/O 事件以及發出的進程 ID,以及 I/O 延遲。使用這個工具,您可以調查磁盤 I/O 性能問題。biotop
用于內核中的塊 i/o 操作。filelife
工具跟蹤 stat() 系統調用。fileslower
跟蹤文件同步的讀寫速度比較慢。 filetop 按進程顯示文件讀取和寫入。ext4slower
、nfsslower
和xfsslower
是顯示文件系統操作比特定閾值慢的工具,默認值為 10ms。
相關介紹見《bcc-tools Linux運維中的要你命3000》