Linux命令詳解----iostat

来源:http://www.cnblogs.com/xiuluo--angel/archive/2017/06/30/7086637.html
-Advertisement-
Play Games

Linux系統出現了性能問題,一般我們可以通過top、iostat、free、vmstat等命令來查看初步定位問題。在一個以前看到系統監控工具,總在想那些監控工具的代理,如何收集系統性能信息,io性能,cpu使用,帶寬使用等信息,偶然發現,不同系統均提供有性能分析工具的,代理可通過這些命令獲取系統性 ...


Linux系統出現了性能問題,一般我們可以通過top、iostat、free、vmstat等命令來查看初步定位問題。在一個以前看到系統監控工具,總在想那些監控工具的代理,如何收集系統性能信息,io性能,cpu使用,帶寬使用等信息,偶然發現,不同系統均提供有性能分析工具的,代理可通過這些命令獲取系統性能信息,個人猜測,不知道具體是不是這樣的。其中iostat可以給我們提供豐富的IO狀態數據,下邊就來看一下iostat如何使用,命令能夠輸出那些信息。

簡述

Linux系統中通過iostat我們能查看到系統IO狀態信息,從而確定IO性能是否存在瓶頸。

命令安裝

iostat是查看Linux系統io是否存在瓶頸頂好用的一個命令,但是由此而系統預設沒有安裝的,以centos系統為例,看看如何安裝iostat命令。

[root@localhost ~]# iostat
-bash: iostat: command not found
[root@localhost ~]# yum install -y sysstat

命令使用

[root@localhost ~]# iostat --help
Usage: iostat [ options ] [ <interval> [ <count> ] ]
Options are:
[ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]
[ -j { ID | LABEL | PATH | UUID | ... } [ <device> [...] | ALL ] ]
[ <device> [...] | ALL ] [ -p [ <device> [,...] | ALL ] ]

iostat 主要有三個操作箱,options 操作項,interval指定統計時間間隔,count總共輸出次數
-c 參數,可以用來插卡部分cpu狀態信息

[root@localhost ~]# iostat -c 
Linux 2.6.32-573.el6.x86_64 (localhost)         06/30/2017      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.02    0.00    0.00    0.00    0.00   99.98

-k 參數,某些使用block為單位的列強制使用Kilobytes為單位

[root@localhost ~]# iostat -k 1 10
Linux 2.6.32-573.el6.x86_64 (localhost)         06/30/2017      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.02    0.00    0.00    0.00    0.00   99.98

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.14         0.04         1.65     969915   41732790
dm-0              0.42         0.04         1.65     936269   41632492
dm-1              0.00         0.00         0.00      19920      62056
dm-2              0.00         0.00         0.00       1001      38212
dm-3              0.00         0.01         0.00     127405       7160

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.00    0.00    0.00    0.00    0.00  100.00

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               4.00         0.00        48.00          0         48
dm-0             12.00         0.00        48.00          0         48
dm-1              0.00         0.00         0.00          0          0
dm-2              0.00         0.00         0.00          0          0
dm-3              0.00         0.00         0.00          0          0

-d 參數,顯示設備(磁碟)使用狀態

[root@localhost ~]# iostat -d 1 3
Linux 2.6.32-573.el6.x86_64 (localhost)         06/30/2017      _x86_64_        (4 CPU)

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               0.14         0.08         3.31    1939830   83470564
dm-0              0.42         0.07         3.30    1872538   83269968
dm-1              0.00         0.00         0.00      39840     124112
dm-2              0.00         0.00         0.00       2002      76424
dm-3              0.00         0.01         0.00     254810      14320
解釋一下輸出列表示什麼意思:
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的總和)

-x 參數,輸出更多詳細信息

[root@localhost ~]# iostat -x 1 2
Linux 2.6.32-573.el6.x86_64 (localhost)         06/30/2017      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.02    0.00    0.00    0.00    0.00   99.98

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.27    0.00    0.14     0.08     3.31    23.78     0.00    0.31    1.51    0.29   0.16   0.00
dm-0              0.00     0.00    0.00    0.41     0.07     3.30     8.13     0.00    2.64    2.05    2.64   0.06   0.00
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     8.00     0.00    2.29    1.61    2.51   0.08   0.00
dm-2              0.00     0.00    0.00    0.00     0.00     0.00     8.01     0.00   19.82    0.64   20.30   0.03   0.00
dm-3              0.00     0.00    0.00    0.00     0.01     0.00    30.85     0.00    0.04    0.02    0.20   0.02   0.00
解釋一下 -x參數輸出列意思
rrqm/s:每秒這個設備相關的讀取請求有多少被Merge了(當系統調用需要讀取數據的時候,VFS將請求發到各個FS,如果FS發現不同的讀取請求讀取的是相同Block的數據,FS會將這個請求合併Merge);wrqm/s:每秒這個設備相關的寫入請求有多少被Merge了。

rsec/s:每秒讀取的扇區數;wsec/:每秒寫入的扇區數。r/s:The number of read requests that were issued to the device per second;w/s:The number of write requests that were issued to the device per second;

await:每一個IO請求的處理的平均時間(單位是毫秒)。這裡可以理解為IO的響應時間,一般地系統IO響應時間應該低於5ms,如果大於10ms就比較大了。

%util:在統計時間內所有處理IO時間,除以總共統計時間。例如,如果統計間隔1秒,該設備有0.8秒在處理IO,而0.2秒閑置,那麼該設備的%util = 0.8/1 = 80%,所以該參數暗示了設備的繁忙程度。一般地,如果該參數是100%表示設備已經接近滿負荷運行了(當然如果是多磁碟,即使%util是100%,因為磁碟的併發能力,所以磁碟使用未必就到了瓶頸)。

常見用法

iostat -d -k 1 10        #查看TPS和吞吐量信息
iostat -d -x -k 1 10      #查看設備使用率(%util)、響應時間(await)
iostat -c 1 10            #查看cpu狀態

使用實例

查看指定磁碟吞吐量和速率

[root@localhost ~]# iostat -d -d 1 1
Linux 2.6.32-573.el6.x86_64 (localhost)         06/30/2017      _x86_64_        (4 CPU)

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda               0.14         0.08         3.31    1939830   83482716
dm-0              0.42         0.07         3.30    1872538   83282120
dm-1              0.00         0.00         0.00      39840     124112
dm-2              0.00         0.00         0.00       2002      76424
dm-3              0.00         0.01         0.00     254810      14320
#從結果看到平均傳輸次數0.14,每秒讀取0.08M,每秒寫3.31M

磁碟性能統計

[root@localhost ~]# iostat -x -k 1 1
Linux 2.6.32-573.el6.x86_64 (localhost)         06/30/2017      _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.02    0.00    0.00    0.00    0.00   99.98

Device:         rrqm/s   wrqm/s     r/s     w/s       rkB/s    wkB/s  avgrq-sz avgqu-sz   await    r_await  w_await  svctm  %util
sda               0.00     0.27         0.00   0.14     0.04     1.65    23.78       0.00         0.31    1.51            0.29   0.16   0.00

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 使用mysqldump命令備份恢復MySQL資料庫: mysqldump -u user -p password database-name > backup.sql mysql -u root -p [dbname] < backup.sql ...
  • 在Oracle 11g中,Oracle 增加了2個查詢:pivot(行轉列) 和unpivot(列轉行) pivot(聚合函數 for 列名 in(類型)) ,其中 in('') 中可以指定別名,in中還可以指定子查詢 行轉列: select * from rhsa_gcfx_result orde ...
  • 1、明確技術與業務的關係 (1)知識和發明來自實踐和生產的實際需要,OSI的7層模型再美、再學院化也沒有乾過TCP/IP; (2)切莫強求技術驅動,技術職責第一要務是做好深度服務業務; (3)數據產品不同於一般業務系統。隔行如隔山,跨部門項目往往對雙方團隊的時間管理、利益妥協、溝通協作和交付提出了很 ...
  • 資料庫的創建和刪除 黑視窗啟動資料庫服務:net start mysql 關閉資料庫服務:net stop mysql 創建資料庫使用關鍵字create database格式: create database 資料庫名; create database 資料庫名 character set 字元集; ...
  • oracle查詢重覆數據 select * from 表 where 條件 and 判重欄位 not in (select 判重欄位 from 表 where 條件 group by 判重欄位 having count(*) > 1) 根據rowid刪除重覆數據,保留一條 delete from 表 ...
  • oracle數值函數 abs()、 ceil()、 oracle數值函數 abs()、 ceil()、 1、格式:abs(number) 即 abs(數值) 返回數值的絕對值。 例: abs(5) 返回 5 abs(-5) 返回 5 2、格式:ceil(number) 即 ceil(數值) 根據輸入 ...
  • 包括初始化root用戶密碼password的過程以及兩個常見問題的解決方法 1. 下載MySQL zip包 進入 "MySQL官網" 按需選擇zip包下載並解壓, 比如現在我電腦裡面下載的是mysql 5.7.17 winx64 http://dev.mysql.com/downloads/mysq ...
  • 資料庫引擎接收到一個新的查詢請求(Batch或SP),查詢優化器會生成執行計劃,並緩存到記憶體中;下次再次執行相同的查詢請求時,資料庫引擎從復用已經緩存的執行計劃,換句話,資料庫引擎為每一個查詢請求生成執行計劃,並把已經生成的執行計劃緩存起來,當接收到相同的查詢請求時,資料庫引擎復用已緩存的執行計劃。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...