Linux磁盤監控思路分析

磁盤監控原理

設備又名I/O設備,泛指計算機系統中除主機以外的所有外部設備。

1.1 計算機分類

1.1.1 按照信息傳輸速度分:

1.低速設備:每秒傳輸信息僅幾個字節或者百個字節,如:鍵盤、鼠標等

2.中速設備:每秒傳輸信息數千個字節或者數萬個字節,如:打印機

3.高速設備:每秒傳輸信息數數10萬個字節,如:磁盤

1.1.2 按照信息交換單位分

1.字符設備:以字符為輸入/輸出信息的單位,如:鍵盤,顯示終端

2.塊設備:以數據塊為單位輸入/輸出信息,如:磁盤

注:何為數據塊:磁盤中常以一個扇區作為一個數據塊,一個扇區就是一個讀寫單位

一、磁盤性能指標

1、測試磁盤性能,使用命令:dd

因數據寫入磁盤,可能是緩存寫,直接寫(不經過緩沖區直接寫入磁盤),順序io,隨機io的區別所以,這種dd測試并不是很準確。

這不是一個專業的測試工具,不過如果對于測試結果的要求不是很苛刻的話,平時可以使用來對磁盤的讀寫速度作一個簡單的評估.

在使用前首先了解兩個特殊設備
/dev/null 偽設備,回收站.寫該文件不會產生IO
/dev/zero 偽設備,會產生空字符流,對它不會產生IO

測試磁盤寫速率
[root@localhost ~]# time dd if=/dev/zero of=/test.dbf bs=8k count=300000   #注意:會在根目錄下產生一個test.dbf文件,記得測試完后刪除
300000+0 records in
300000+0 records out
2457600000 bytes (2.5 GB) copied, 68.191 seconds, 36.0 MB/s  #寫速率36MB/sreal    1m13.960s
user    0m0.077s
sys    0m5.272s測試磁盤讀速率
[root@localhost ~]# time dd if=/test.dbf of=/dev/null  bs=8k    #讀test.dbf文件
300000+0 records in
300000+0 records out
2457600000 bytes (2.5 GB) copied, 36.2647 seconds, 67.8 MB/s    #讀速率67.8MB/sreal    0m36.331s
user    0m0.018s
sys    0m2.823s

二、磁盤性能監控

1. 獲取iops

[root@localhost ~]# iostat -m 3
Linux 2.6.18-238.el5 (localhost.localdomain)     08/03/2017avg-cpu:  %user   %nice %system %iowait  %steal   %idle0.01    0.09    0.87    0.87    0.00   98.16Device:            tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sda               6.91         0.44         0.36       6162       5009
sda1              0.01         0.00         0.00          1          0
sda2              6.90         0.44         0.36       6161       5009
dm-0            100.40         0.44         0.36       6160       5009
dm-1              0.01         0.00         0.00          0          0

tps:該設備每秒的傳輸次數(Indicate the number of transfers per second that were issued to the device.)。
“一次傳輸"意思是"一次I/O請求”。多個邏輯請求可能會被合并為"一次I/O請求"。"一次傳輸"請求的大小是未知的。

- MB_read/s:每秒從設備(drive expressed)讀取的數據量;
- MB_wrtn/s:每秒向設備(drive expressed)寫入的數據量;
- MB_read:讀取的總數據量;
- MB_wrtn:寫入的總數量數據量;這些單位都為Kilobytes。

2. 獲取IOPS、io隊列、io等待、io響應時間等

[root@localhost ~]# iostat -xm 3   #m 代表以MB為單位顯示。 
Linux 2.6.18-238.el5 (localhost.localdomain)     08/03/2017avg-cpu:  %user   %nice %system %iowait  %steal   %idle0.00    0.00    3.67   23.14    0.00   73.19Device:         rrqm/s    wrqm/s  r/s   w/s    rMB/s    wMB/s  avgrq-sz  avgqu-sz  await  svctm  %util
sda             304.67     0.33 636.00  3.33    76.76     0.01   245.93     2.40    3.53   1.56  99.87
sda1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sda2            304.67     0.33 636.00  3.33    76.76     0.01   245.93     2.40    3.53   1.56  99.87
dm-0              0.00     0.00 941.33  3.67    76.78     0.01   166.43     3.25    3.30   1.06  99.87
dm-1              0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00rrqm/s: 每秒對該設備的讀請求被合并次數,文件系統會對讀取同塊(block)的請求進行合并
wrqm/s: 每秒對該設備的寫請求被合并次數
r/s: 每秒完成的讀請求次數
w/s: 每秒完成的寫請求次數
rkB/s: 每秒讀數據量(kB為單位)
wkB/s: 每秒寫數據量(kB為單位)
avgrq-sz:平均每次IO操作的數據量(扇區數為單位)
avgqu-sz: 平均等待處理的IO請求隊列長度
await: 平均每次IO請求等待時間(包括等待時間和處理時間,毫秒為單位)
svctm: 平均每次IO請求的處理時間(毫秒為單位)
%util: 采用周期內用于IO操作的時間比率,即IO隊列非空的時間比率

3. IO評估指標

  1. vmstat Block in /out
    bi+bo過大,而且vmstat cpu wa值較大應該考慮均衡磁盤負載,可以結合iostat輸出來分析。

  2. IOwait time
    iostat iowait% 小于25%,說明IO性能處于良好的狀態;

  3. util 磁盤使用率
    一秒中有百分之多少的時間用于 I/O 操作,或者說一秒中有多少時間 I/O 隊列是非空的,即 delta(use)/s/1000 (因為use的單位為毫秒)

    • 如果 %util 接近 100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁盤可能存在瓶頸。
    • idle小于70% IO壓力就較大了,一般讀取速度有較多的wait。
    • 同時可以結合vmstat 查看查看b參數(等待資源的進程數)和wa參數(IO等待所占用的CPU時間的百分比,高過30%時IO壓力高)。
  4. await 平均等待時間
    平均每次設備I/O操作的等待時間 (毫秒).即 delta(ruse+wuse)/delta(rio+wio)
    await 的大小一般取決于服務時間(svctm) 以及 I/O 隊列的長度和 I/O 請求的發出模式。

    • await 的參數要多和 svctm 來參考。差的過高就一定有 IO 的問題。
    • 如果 svctm 比較接近 await,說明 I/O 幾乎沒有等待時間;
    • 如果 await 遠大于 svctm,說明I/O 隊列太長,io響應太慢,則需要進行必要優化。如果響應時間超過了用戶可以容許的范圍,這時可以考慮更換更快的磁盤,調整內核 elevator 算法,優化應用。
  5. avgqu-sz 平均I/O隊列長度

    • 如果avgqu-sz比較大,也表示有大量io在等待。
      avgqu-sz 也是個做 IO 調優時需要注意的地方,這個就是直接每次操作的數據的大小,如果次數多,但數據拿的小的話,其實 IO 也會很小。如果數據拿的大,IO 的數據會高。也可以通過 avgqu-sz × ( r/s or w/s ) = rsec/s or wsec/s。也就是講,讀寫速度是這個來決定的。
      由于 avgqu-sz 是按照單位時間的平均值,所以不能反映瞬間的 I/O 洪水。

4. iotop

里面最重要的參數,actual disk read 和actual disk write 分別代表實際磁盤讀寫速度

然后下面,我們可以根據每一列進行io排序,就能知道io具體消耗是哪個進程導致的。

注意:TID代表的是線程號,如果是多線程的話,可以借助command 判斷是哪個進程,也可以根據ps -eLf | grep TID 來獲取到他的父進程號。

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

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

相關文章

leetCode.98. 驗證二叉搜索樹

leetCode.98. 驗證二叉搜索樹 題目描述 代碼 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(n…

100張linux C/C++工程師面試高質量圖

文章目錄 雜項BIOSlinux開機啟動流程內核啟動流程網絡編程網絡編程流程tcp狀態機三次握手四次斷開reactor模型proactor模型select原理poll原理epoll原理文件系統虛擬文件系統文件系統調用阻塞IO非阻塞IO異步IO同步阻塞同步非阻塞IO多路復用進程管理進程狀態程序加載內存管理MMU…

力扣(2024.06.30)

1. 81——搜索旋轉排序數組2 已知存在一個按非降序排列的整數數組 nums &#xff0c;數組中的值不必互不相同。 在傳遞給函數之前&#xff0c;nums 在預先未知的某個下標 k&#xff08;0 < k < nums.length&#xff09;上進行了旋轉&#xff0c;使數組變為 [nums[k], n…

vue響應式原理細節分享

在講解之前&#xff0c;我們先了解一下數據響應式是什么&#xff1f;所謂數據響應式就是建立響應式數據與依賴&#xff08;調用了響應式數據的操作&#xff09;之間的關系&#xff0c;當響應式數據發生變化時&#xff0c;可以通知那些使用了這些響應式數據的依賴操作進行相關更…

前端:多服務端接口資源整合與zip打包下載

項目需求 前端項目開發中,有一個頁面需要去整合多個服務接口返回的數據資源,并且需要將這多個服務接口接口返回的數據進行資源壓縮,最終打包成zip壓縮包,并在客戶端完成下載。 基本需求梳理如下, 實現思路 這個需求點其實本質上還是傳統的“文件下載”功能需求,常見的例如…

Python使用defaultdict簡化值為list的字典

原始代碼&#xff1a; from typing import Dictrelated_objects_for_fetch: Dict[str, list] {}for key, value in [(k1, v1), (k1, v2), (k2, v2), (k3, v3), (k2, v2)]:if key not in related_objects_for_fetch:related_objects_for_fetch[key] []if value not in (value…

貪心問題(POJ1700/1017/1065)(C++)

一、貪心問題 貪心算法 貪心算法&#xff08;greedy algorithm&#xff09;&#xff0c;是用計算機來模擬一個「貪心」的人做出決策的過程。這個人十分貪婪&#xff0c;每一步行動總是按某種指標選取最優的操作。而且他目光短淺&#xff0c;總是只看眼前&#xff0c;并不考慮…

第三天:LINK3D核心原理講解【第1部分】

第三天:LINK3D核心原理講解 LINK3D學習筆記 目標 了解LINK3D velodyne64線激光雷達LINK3D質心點提取效果: 分布在車道與墻體的交界處。 課程內容 LINK3D論文精講LINK3D聚合關鍵點提取代碼講解LINK3D描述子匹配代碼講解除了ALOAM的線特征、面特征,還有其他點云特征嗎,是…

如何使用 Postgres 折疊您的堆棧 實現一切#postgresql認證

技術蔓延如何蔓延 假設您正在開發一款新產品或新功能。一開始&#xff0c;您的團隊會列出需要解決的技術問題。有些解決方案您將自行開發&#xff08;您的秘訣&#xff09;&#xff0c;而其他解決方案您將使用現有技術&#xff08;可能至少包括一個數據庫&#xff09;來解決。…

人工智能期末復習筆記(更新中)

分類問題 分類&#xff1a;根據已知樣本的某些特征&#xff0c;判斷一個新的樣本屬于哪種已知的樣本類 垃圾分類、圖像分類 怎么解決分類問題 分類和回歸的區別 1. 邏輯回歸分類 用于解決分類問題的一種模型。根據數據特征或屬性&#xff0c;計算其歸屬于某一類別 的概率P,…

ComfyUI局部重繪的四種方式 (附件工作流在最后)

前言 局部重繪需要在圖片中選擇重繪區域&#xff0c;點擊圖片右擊選擇Open in MaskEditor&#xff08;在蒙版編輯器中打開&#xff09;&#xff0c;用鼠標描繪出需要重繪的區域 方式一&#xff1a;重繪編碼器 這種方式重繪比較生硬&#xff0c;需要額外搭配使用才行 方式二&…

el-upload 上傳圖片及回顯照片和預覽圖片,文件流和http線上鏈接格式操作

<div v-for"(info, index) in zsjzqwhxqList.helicopterTourInfoList" :key"info.id" >編輯上傳圖片// oss返回線上地址http鏈接格式&#xff1a;<el-form-itemlabel"巡視結果照片":label-width"formLabelWidth"><el…

Cyber Weekly #13

賽博新聞 1、谷歌發布最強開源小模型Gemma-2 本周五&#xff08;6月28日&#xff09;凌晨&#xff0c;谷歌發布最強開源小模型Gemma-2&#xff0c;分別為9B&#xff08;90億&#xff09;和27B&#xff08;270億&#xff09;參數規模&#xff0c;其中9B 模型在多項基準測試中均…

潁川韓氏,來自戰國七雄韓國的豪族

潁川是戰國七雄韓國故土&#xff0c;韓國被秦國滅國后&#xff0c;王公貴族們除了堅決反秦的被殺了外&#xff0c;大部分都留存了下來。這些人在楚、漢反秦戰爭中&#xff0c;成為反秦統一戰線的重要力量&#xff0c;其中兩人先后被封為重新恢復的韓國的國王。 一個是橫陽君韓…

Windows系統下,將nginx注冊為本地服【親測可用】

在Windows系統下&#xff0c;將nginx注冊為本地服務并設置為開機自動運行&#xff0c;可以通過以下步驟進行&#xff1a; 下載Windows Service Wrapper&#xff1a; 訪問 WinSW 項目頁面&#xff0c;下載適用于Windows的版本。 準備nginx&#xff1a; 確保你已經下載并解壓了n…

共有5部手機,如果通過服務器讓1號手機執行打開 “閑魚.js“ 腳本

1.手機端Auto.js腳本&#xff1a; 每部手機需要在連接時發送一個唯一的標識符&#xff08;如設備ID&#xff09;&#xff0c;并接收服務器發送的指令以執行指定的腳本。 // Auto.js腳本連接WebSocket服務器并發送設備ID var WebSocket require(ws); var ws new WebSocket(w…

大模型上下文長度擴展中的檢索增強技術簡述

基于Transformer的語言模型在眾多自然語言處理任務上都取得了十分優異的成績&#xff0c;在一些任務上已經達到SOTA的效果。但是&#xff0c;經過預訓練后&#xff0c;模型能夠較好處理的序列長度就固定下來。而當前的眾多場景往往需要處理很長的上下文&#xff08;如&#xff…

CppTest單元測試框架(更新)

目錄 1 背景2 設計3 實現4 使用4.1 主函數4.2 使用方法 1 背景 前面文章單元測試之CppTest測試框架中講述利用宏ADD_SUITE將測試用例自動增加到測試框架中。但在使用中發現一個問題&#xff0c;就是通過宏ADD_SUITE增加多個測試Suite時&#xff0c;每次運行時都是所有測試Suit…

逆向開發環境準備

JDK安裝 AndroidStudio安裝 默認sdk路徑 C:\Users\Administrator\AppData\Local\Android\Sdk 將platform-tools所在的目錄添加到path C:\Users\Administrator\AppData\Local\Android\Sdk\platform-tools 主要目的是使用該目錄下的adb等命令 將tools所在的目錄添加到path C:\Us…

1-5題查詢 - 高頻 SQL 50 題基礎版

目錄 1. 相關知識點2. 例題2.1.可回收且低脂的產品2.2.尋找用戶推薦人2.3.大的國家2.4. 文章瀏覽 I2.5. 無效的推文 1. 相關知識點 sql判斷&#xff0c;不包含null&#xff0c;判斷不出來distinct是通過查詢的結果來去除重復記錄ASC升序計算字符長度 CHAR_LENGTH() 或 LENGTH(…