1. 程式人生 > 其它 >Linux之8-----效能調優之iostat命令詳解

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.89

Device: 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
    :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 327579772

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
vda
1.00 0.00 8.00 0 16

Device: 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/s
  • kB_wrtn/s:每秒寫入磁碟的資料的大小,單位KB/s
  • kB_read:從磁碟讀出的資料總數,單位KB
  • kB_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 是一個特殊的檔案,當你讀它的時候,它會提供無限的字元