Linux之8-----效能調優之iostat命令詳解
Linux系統中的iostat
是I/O statistics(輸入/輸出統計)的縮寫,iostat
工具將對系統的磁碟操作活動進行監視。它的特點是彙報磁碟活動統計情況,同時也會彙報出CPU使用情況。同vmstat
一樣,iostat
也有一個弱點,就是它不能對某個程序進行深入分析,僅對系統的整體情況進行分析。
iostat 安裝
# iostat屬於sysstat軟體包。可以直接安裝。 yum install sysstat
命令:iostat -x
說明:顯示詳細資訊
輸出:
[root@redhat ~]$ iostat -x Linux 3.10.0-514.26.2.el7.x86_64 (redhat) 09/25/2020 _x86_64_ (2 CPU)avg-cpu: %user %nice %system %iowait %steal %idle
2.49 0.00 0.52 0.10 0.00 96.89Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
vda 0.06 4.00 0.44 2.70 11.96 44.78 36.11 0.03 10.64 9.33 10.86 0.73 0.23
輸出內容詳解:
%user
:CPU處在使用者模式下的時間百分比%nice
%system
:CPU處在系統模式下的時間百分比%iowait
:CPU等待輸入輸出完成時間的百分比%steal
:管理程式維護另一個虛擬處理器時,虛擬CPU的無意識等待時間百分比%idle
:CPU空閒時間百分比
當然了,iostat
命令的重點不是用來看CPU的,重點是用來監測磁碟效能的。
Device
:裝置名稱
rrqm/s
:每秒合併到裝置的讀取請求數wrqm/s
:每秒合併到裝置的寫請求數r/s
:每秒向磁碟發起的讀運算元w/s
:每秒向磁碟發起的寫運算元rkB/s
:每秒讀K位元組數wkB/s
:每秒寫K位元組數avgrq-sz
:平均每次裝置I/O操作的資料大小avgqu-sz
:平均I/O佇列長度await
:平均每次裝置I/O操作的等待時間 (毫秒),一般地,系統I/O響應時間應該低於5ms,如果大於 10ms就比較大了r_await
:每個讀操作平均所需的時間;不僅包括硬碟裝置讀操作的時間,還包括了在kernel佇列中等待的時間w_await
:每個寫操作平均所需的時間;不僅包括硬碟裝置寫操作的時間,還包括了在kernel佇列中等待的時間svctm
:平均每次裝置I/O操作的服務時間 (毫秒)(這個資料不可信!)%util
:一秒中有百分之多少的時間用於I/O操作,即被IO消耗的CPU百分比,一般地,如果該引數是100%表示裝置已經接近滿負荷運行了
常用命令
定時顯示所有資訊
?12 | # 【每隔2秒重新整理顯示,且顯示3次】 iostat 2 3 |
顯示指定磁碟資訊
iostat -d /dev/sda
顯示tty和Cpu資訊
iostat -t
以M為單位顯示所有資訊
iostat -m
檢視裝置使用率(%util)、響應時間(await)
# 【-d 顯示磁碟使用情況,-x 顯示詳細資訊】 # d: detail iostat -d -x -k 1 1
命令:iostat -d 2 3
1 | 每隔2秒重新整理顯示,且顯示3次磁碟使用情況 |
輸出:
[root@redhat ~]$ iostat -d 2 3 Linux 3.10.0-514.26.2.el7.x86_64 (redhat) 09/25/2020 _x86_64_ (2 CPU)Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 3.14 11.96 44.77 87487977 327579772Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 1.00 0.00 8.00 0 16Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda 0.00 0.00 0.00 0 0
輸出內容詳解:
tps
:每秒I/O數(即IOPS。磁碟連續讀和連續寫之和)kB_read/s
:每秒從磁碟讀取資料大小,單位KB/skB_wrtn/s
:每秒寫入磁碟的資料的大小,單位KB/skB_read
:從磁碟讀出的資料總數,單位KBkB_wrtn
:寫入磁碟的的資料總數,單位KB
效能監控指標
上面說了這麼多,也看了那麼多的系統輸出,那我們在日常運維中到底需要關注哪些欄位呢?下面就來說說這篇文章的重點了,我們到底該關注哪些輸出內容就可以確定這臺伺服器是否存在IO效能瓶頸。
%iowait
:如果該值較高,表示磁碟存在I/O瓶頸await
:一般地,系統I/O響應時間應該低於5ms,如果大於10ms就比較大了avgqu-sz
:如果I/O請求壓力持續超出磁碟處理能力,該值將增加。如果單塊磁碟的佇列長度持續超過2,一般認為該磁碟存在I/O效能問題。需要注意的是,如果該磁碟為磁碟陣列虛擬的邏輯驅動器,需要再將該值除以組成這個邏輯驅動器的實際物理磁碟數目,以獲得平均單塊硬碟的I/O等待佇列長度%util
:一般地,如果該引數是100%表示裝置已經接近滿負荷運行了
最後,除了關注指標外,我們更需要結合部署的業務進行分析。對於磁碟隨機讀寫頻繁的業務,比如圖片存取、資料庫、郵件伺服器等,此類業務嗎,tps
才是關鍵點。對於順序讀寫頻繁的業務,需要傳輸大塊資料的,如視訊點播、檔案同步,關注的是磁碟的吞吐量。
總結
關於iostat
命令的總結就到此結束了。在平時的運維工作中,我們更多的要根據實際場景進行分析。iostat
作為一個工具,掌握基本的用法這個是基礎,希望通過這篇文章大家可以掌握iostat
命令的基本用法,至於後期的昇華,就需要大家在工作中多運用、多摸索和多總結了。
寫:dd if=/dev/zero bs=1024 count=40960 of=test.iso
讀:dd if=test.iso bs=64k|dd of=/dev/null
bs:設定讀/寫緩衝區的位元組數
/dev/zero 是一個特殊的檔案,當你讀它的時候,它會提供無限的字元