linux命令詳解——iostat

簡介

iostat主要用于監控系統設備的IO負載情況,iostat首次運行時顯示自系統啟動開始的各項統計信息,之后運行iostat將顯示自上次運行該命令以后的統計信息。用戶可以通過指定統計的次數和時間來獲得所需的統計信息。

?

安裝

yum install -y sysstat

語法

iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ device [...] | ALL ] [ -p [ device [,...] | ALL ] ] [ interval [ count ] ]

iostat各個參數說明:

-c 僅顯示CPU統計信息.與-d選項互斥.-d 僅顯示磁盤統計信息.與-c選項互斥.-k 以K為單位顯示每秒的磁盤請求數,默認單位塊.-p device | ALL與-x選項互斥,用于顯示塊設備及系統分區的統計信息.也可以在-p后指定一個設備名,如:# <span class="search_hit" style="margin: 0px; padding: 0px;">iostat</span> -p hda或顯示所有設備# <span class="search_hit" style="margin: 0px; padding: 0px;">iostat</span> -p ALL-t    在輸出數據時,打印搜集數據的時間.-V    打印版本號和幫助信息.-x    輸出擴展信息.
?


入門使用

iostat -d -k 2

參數 -d 表示,顯示設備(磁盤)使用狀態;-k某些使用block為單位的列強制使用Kilobytes為單位;2表示,數據顯示每隔2秒刷新一次。

輸出如下

復制代碼
iostat -d -k 1 10
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              39.29        21.14         1.44  441339807   29990031
sda1              0.00         0.00         0.00       1623        523
sda2              1.32         1.43         4.54   29834273   94827104
sda3              6.30         0.85        24.95   17816289  520725244
sda5              0.85         0.46         3.40    9543503   70970116
sda6              0.00         0.00         0.00        550        236
sda7              0.00         0.00         0.00        406          0
sda8              0.00         0.00         0.00        406          0
sda9              0.00         0.00         0.00        406          0
sda10            60.68        18.35        71.43  383002263 1490928140Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda             327.55      5159.18       102.04       5056        100
sda1              0.00         0.00         0.00          0          0
復制代碼

輸出信息的意義

復制代碼
tps:該設備每秒的傳輸次數(Indicate the number of transfers per second that were issued to the device.)。"一次傳輸"意思是"一次I/O請求"。多個邏輯請求可能會被合并為"一次I/O請求""一次傳輸"請求的大小是未知的。kB_read/s:每秒從設備(drive expressed)讀取的數據量;
kB_wrtn/s:每秒向設備(drive expressed)寫入的數據量;
kB_read:取樣時間間隔內,讀取的總數據量;
kB_wrtn:取樣時間間隔內,寫入的總數量數據量;這些單位都為Kilobytes。
復制代碼

上面的例子中,我們可以看到磁盤sda以及它的各個分區的統計數據,當時統計的磁盤總TPS是39.29,下面是各個分區的TPS。(因為是瞬間值,所以總TPS并不嚴格等于各個分區TPS的總和)

各個輸出項目的含義如下:

<strong>avg-cpu段:</strong>
%user: 在用戶級別運行所使用的CPU的百分比.
%nice: nice操作所使用的CPU的百分比.
%sys: 在系統級別(kernel)運行所使用CPU的百分比.
%iowait: CPU等待硬件I/O時,所占用CPU百分比.
%idle: CPU空閑時間的百分比.
<strong>Device段:</strong>
tps: 每秒鐘發送到的I/O請求數.
Blk_read /s: 每秒讀取的block數.
<span class="search_hit" style="margin: 0px; padding: 0px;">Blk_wrtn</span>/s: 每秒寫入的block數.
Blk_read:   <span style="font-family: 'Courier New'; line-height: 1.5 !important;">取樣時間間隔內,</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;">讀入的block總數.</span>
<span class="search_hit" style="margin: 0px; padding: 0px;">Blk_wrtn</span>:  <span style="font-family: 'Courier New'; line-height: 1.5 !important;">取樣時間間隔內,</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;">寫入的block總數.</span>
?

指定監控的設備名稱為sda,該命令的輸出結果和上面命令完全相同。

 iostat -d sda 2

默認監控所有的硬盤設備,現在指定只監控sda。?

?

-x 參數

iostat還有一個比較常用的選項-x,該選項將用于顯示和io相關的擴展數據。

iostat -d -x -k 1 10
Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda          1.56  28.31  7.80 31.49   42.51    2.92    21.26     1.46     1.16     0.03    0.79   2.62  10.28
Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda          2.00  20.00 381.00  7.00 12320.00  216.00  6160.00   108.00    32.31     1.75    4.50   2.17  84.20

?

輸出信息的含義

復制代碼
rrqm/s:每秒這個設備相關的讀取請求有多少被Merge了(當系統調用需要讀取數據的時候,VFS將請求發到各個FS,如果FS發現不同的讀取請求讀取的是相同Block的數據,FS會將這個請求合并Merge);wrqm/s:每秒這個設備相關的寫入請求有多少被Merge了。rsec/s:每秒讀取的扇區數;
wsec/:每秒寫入的扇區數。
rKB/s:The number of read requests that were issued to the device per second;
wKB/s:The number of write requests that were issued to the device per second;
avgrq-sz 平均請求扇區的大小
avgqu-sz 是平均請求隊列的長度。毫無疑問,隊列長度越短越好。    
await:  每一個IO請求的處理的平均時間(單位是微秒毫秒)。這里可以理解為IO的響應時間,一般地系統IO響應時間應該低于5ms,如果大于10ms就比較大了。這個時間包括了隊列時間和服務時間,也就是說,一般情況下,await大于svctm,它們的差值越小,則說明隊列時間越短,反之差值越大,隊列時間越長,說明系統出了問題。
svctm    表示平均每次設備I/O操作的服務時間(以毫秒為單位)。如果svctm的值與await很接近,表示幾乎沒有I/O等待,磁盤性能很好,如果await的值遠高于svctm的值,則表示I/O隊列等待太長,         系統上運行的應用程序將變慢。
%util: 在統計時間內所有處理IO時間,除以總共統計時間。例如,如果統計間隔1秒,該設備有0.8秒在處理IO,而0.2秒閑置,那么該設備的%util = 0.8/1 = 80%,所以該參數暗示了設備的繁忙程度
。一般地,如果該參數是100%表示設備已經接近滿負荷運行了(當然如果是多磁盤,即使%util是100%,因為磁盤的并發能力,所以磁盤使用未必就到了瓶頸)。
復制代碼

?

-c 參數

iostat還可以用來獲取cpu部分狀態值:

iostat -c 1 10
avg-cpu: %user %nice %sys %iowait %idle
1.98 0.00 0.35 11.45 86.22
avg-cpu: %user %nice %sys %iowait %idle
1.62 0.00 0.25 34.46 63.67

?

常見用法

iostat -d -k 1 10         #查看TPS和吞吐量信息(磁盤讀寫速度單位為KB)
iostat -d -m 2            #查看TPS和吞吐量信息(磁盤讀寫速度單位為MB)
iostat -d -x -k 1 10      #查看設備使用率(%util)、響應時間(await)
iostat -c 1 10            #僅查看cpu狀態

?

?

實例分析

復制代碼
ostat -d -k 1 |grep sda10
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda10            60.72        18.95        71.53  395637647 1493241908
sda10           299.02      4266.67       129.41       4352        132
sda10           483.84      4589.90      4117.17       4544       4076
sda10           218.00      3360.00       100.00       3360        100
sda10           546.00      8784.00       124.00       8784        124
sda10           827.00     13232.00       136.00      13232        136
復制代碼

上面看到,磁盤每秒傳輸次數平均約400;每秒磁盤讀取約5MB,寫入約1MB。

?

iostat -d -x -k 1
Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda          1.56  28.31  7.84 31.50   43.65    3.16    21.82     1.58     1.19     0.03    0.80   2.61  10.29
sda          1.98  24.75 419.80  6.93 13465.35  253.47  6732.67   126.73    32.15     2.00    4.70   2.00  85.25
sda          3.06  41.84 444.90 54.08 14204.08 2048.98  7102.04  1024.49    32.57     2.10    4.21   1.85  92.24

可以看到磁盤的平均響應時間<5ms,磁盤使用率>80。磁盤響應正常,但是已經很繁忙了。

轉載于:https://www.cnblogs.com/huangmr0811/p/5570949.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255484.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255484.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255484.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

highgui基礎 OpenCV trackbar

在調試程序或者程序執行時需要調整某個變量的值亦或是參數的值&#xff0c;我們需要一個簡單方便的操作&#xff0c;滾動條就是一個非常使用的工具。通過鼠標點擊對滾動條進行拖動操作以期實現調整某個參數的值。下面例程參見Opencv 安裝目錄 samples tutorial_code文件夾。 #i…

匯編 if else

知識點&#xff1a; ?if else ?逆向還原代碼一、了解if else結構 sub esp,8 00401029 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0040102C |. 3B45 F8 CMP EAX,DWORD PTR SS:[EBP-8] 0040102F |. 7E 10 JLE SHORT ifelse01.00401041 //表示 else部…

chrome瀏覽器開發模式實現跨域

2019獨角獸企業重金招聘Python工程師標準>>> 增加如下參數&#xff0c; --disable-web-security --user-data-dir 啟動項變為&#xff1a; "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir 轉載于…

【糾錯】——QThread: Destroyed while thread is still running

目錄 錯誤 出現場景 解決方案 原始代碼 修改后的代碼 錯誤 QThread: Destroyed while thread is still running 出現場景 在對目標缺陷檢測的GUI設計的時候&#xff0c;為了避免界面的卡頓&#xff0c;于是想著利用線程QThread來解決這個問題&#xff0c;但是做好后&#xf…

Java怎樣處理EXCEL的讀取

須要包&#xff1a;poi-3.5.jar、poi-ooxml-3.5.jar 實例&#xff1a; [java] view plaincopy public class ProcessExcel { private Workbook wb null; private Sheet s null; private Row row null; public ProcessExcel(String filePath) …

C#替換字符串起始/結尾指定的字符串

#region 替換字符串起始位置(開頭)中指定的字符串/// <summary> /// 替換字符串起始位置(開頭)中指定的字符串 /// </summary> /// <param name"s">源串</param> /// <param name"searchStr">查找的串</param> /…

腐蝕函數cvErode 和 膨脹函數cvDilate

Erode腐蝕&#xff0c; Dilate膨脹&#xff0c;這兩個形態學函數總是成對出現&#xff0c;前者可以消除較小的點如噪音&#xff0c;后者可以使不連通的圖像合并成塊。 void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* elementNULL, int iterations1 ); void cvDi…

spring cloud gateway的stripPrefix配置

序 本文主要研究下spring cloud gateway的stripPrefix配置 使用zuul的配置 zuul:routes:demo:sensitiveHeaders: Access-Control-Allow-Origin,Access-Control-Allow-Methods path: /demo/**stripPrefix: trueurl: http://demo.com.cn/ 復制代碼這里的stripPrefix默認為true…

Zookeeper和分布式環境中的假死腦裂問題(轉)

Zookeeper和分布式環境中的假死腦裂問題 最近和同事聊天無意間發現他們的系統也存在腦裂的問題。想想當初在我們的系統中為了解決腦裂花了非常大的功夫&#xff0c;現在和大家一起討論下腦裂&#xff0c;假死等等這些問題和解決的方法。 在一個大集群中往往會有一個master存在…

【pyqt5學習】【python學習】——通過py文件來執行命令行指令

目錄 1、利用os模塊 2、爬蟲命令 注意 1、利用os模塊 os.system("scrapy crawl search") 2、爬蟲命令 from scrapy.cmdline import execute # 將命令的每個單詞存進一個列表傳給execute() execute("scrapy crawl search".split()) # 相當于在終端…

JSP內置對象詳解

轉自http://www.cnblogs.com/oumyye/p/4240272.html   在JSP中為了簡化用戶的開發&#xff0c;提供了九個內置對象&#xff0c;這些內置對象將由容器為用戶進行實例化&#xff0c;而用戶直接使用即可&#xff0c;而不用像在java中那樣&#xff0c;必須通過關鍵字new進行實例化…

cvMorphology形態學原理解析及源碼分析

⑴ 圖像形態學處理的概念...1 ⑵ 二值圖像的邏輯運算...3 ⑶ 膨脹和腐蝕...4 (4) 高級形態學變換...8 (5) 細化...10 ⑴ 圖像形態學處理的概念 數字圖像處理中的形態學處理是指將數字形態學作為工具從圖像中提取對于表達和描繪區域形狀有用處的圖像分量&#xff0c;比如邊…

安全

2019獨角獸企業重金招聘Python工程師標準>>> 1、不要使用頁面變量進行傳遞值&#xff0c;用session 轉載于:https://my.oschina.net/u/2277088/blog/1621841

lua_string_pattern

兩大特點&#xff1a; 1. string庫中所有的字符索引從前往后是1,2,...;從后往前是-1,-2,... 2. string庫中所有的function都不會直接操作字符串&#xff0c;而是返回一個新的字符串。 庫函數&#xff1a; 1、string.len&#xff0c;string.rep&#xff0c;string.upper&#xf…

【pyqt5學習】QLayout: Attempting to add QLayout “to ***“, which already has a layout

報錯場景&原因 在界面設計時&#xff0c;想實時更新用matplotlib繪制的圖像,即會一次次的調用plot函數&#xff0c;這樣就會重復地向groupbox里面添加布局&#xff0c;但是一個容器只能有一個布局&#xff0c;因此會報錯 def __init__(self):super(weibo_search_logic, se…

3D打印材料PLA,ABS對比

轉載于:https://www.cnblogs.com/sztom/p/6373910.html

扒一扒工業機器人編程語言和種類

機器人編程語言&#xff08;一&#xff09; 伴隨著機器人的發展&#xff0c;機器人語言也得到發展和完善。機器人語言已成為機器人技術的一個重要部分。機器人的功能除了依靠機器人硬件的支持外&#xff0c;相當一部分依賴機器人語言來完成。早期的機器人由于功能單一&#xff…

Java繼承概述以及Java繼承案例和繼承的好處

Java繼承概述 1.多個類中存在相同屬性和行為時&#xff0c;將這些內容抽取到單獨一個類中&#xff0c;那么多個類無需再定義這些相同屬性和行為&#xff0c;只要繼承那個類即可。 2.在Java中通過extends關鍵字可以實現類與類的繼承。 例如&#xff1a;class 子類名 extends 父類…

描述用戶場景

每一個組員根據自己所承擔的項目&#xff0c;描繪用戶場景并將典型用戶和用戶場景描述&#xff01; 典型用戶 ①當代大學生們&#xff0c;我們的收入多數是來自家庭父母給的生活費&#xff0c;或者還包括一些自己打工掙的零塊。收入也就這么幾個來源&#xff0c;但是支出卻多種…

【pyqt5學習】——控件綁定槽函數的同時利用lambda實現傳參

兩種方法&#xff1a; 1、利用pyqtsignal的emit進行傳參 2、connect函數進行傳參 self.pushButton.clicked.connect(lambda:self.readZodiacByButtonText(self.pushButton.text())) # 根據按鈕上的文字來進行閱讀def readZodiacByButtonText(self,text):if self.language &…