全部產品
Search
文件中心

Alibaba Cloud Linux:追蹤IO時延

更新時間:Nov 01, 2024

Alibaba Cloud Linux對IO時延分析工具iostat的未經處理資料來源/proc/diskstats介面進行了最佳化,新增了對裝置側的讀、寫及特殊IO(discard)等耗時的統計。此外,Alibaba Cloud Linux 2系統還提供了一個便於追蹤IO時延的工具bcc。本文將介紹Alibaba Cloud Linux 2系統最佳化後的/proc/diskstats介面和bcc工具。

/proc/diskstats介面說明

/proc/diskstats介面在Alibaba Cloud Linux 2中可查詢磁碟IO資訊、裝置側的讀耗時、裝置側的寫耗時及裝置側discard耗時。

查詢/proc/diskstats介面。

cat /proc/diskstats

返回結果樣本如下。

254       0 vda 6328 3156 565378 2223 1610 424 25160 4366 0 1358 5332 0 0 0 0 2205 3347 0

返回結果中,最後三個域為Alibaba Cloud Linux 2新增域,域說明如下。

域說明

描述

第1個域

完成的總讀取次數。

第2個域

合并的讀取次數。

第3個域

讀取的扇區數。

第4個域

所有讀取操作耗時,單位ms。

第5個域

完成的總寫入次數。

第6個域

合并的寫入次數。

第7個域

寫入的扇區數。

第8個域

寫入的總耗時,單位ms。

第9個域

當前進行中的I/O數量。

第10個域

花費在I/O上的耗時,單位ms。

第11個域

加權的I/O耗時,單位ms。

第12個域

完成的總discard次數。

第13個域

合并的discard次數。

第14個域

discard的總扇區數。

第15個域

所有discard總耗時,單位為ms。

第16個域

裝置側的讀耗時,單位為ms。

第17個域

裝置側的寫耗時,單位為ms。

第18個域

裝置側的discard耗時,單位為ms。

安裝使用bcc工具

Alibaba Cloud Linux 2提供了一種便捷的工具bcc,以協助使用者追蹤IO延遲。

  1. 執行以下命令,安裝bcc工具。

    yum install -y bcc-tools
  2. 您可以通過以下兩種命令查看bcc工具的說明。

    • 通過以下命令擷取bcc工具說明。

      /usr/share/bcc/tools/alibiolatency -h

      工具說明如下。

      usage: alibiolatency [-h] [-d DEVICE] [-i [DIS_INTERVAL]]
                           [-t [AVG_THRESHOLD_TIME]] [-T [THRESHOLD_TIME]] [-r]
      
      Summarize block device I/O latency
      
      optional arguments:
        -h, --help            show this help message and exit
        -d DEVICE, --device DEVICE
                              inspect specified device
        -i [DIS_INTERVAL], --dis_interval [DIS_INTERVAL]
                              specify display interval
        -t [AVG_THRESHOLD_TIME], --avg_threshold_time [AVG_THRESHOLD_TIME]
                              display only when average request process time is
                              greater than this value
        -T [THRESHOLD_TIME], --threshold_time [THRESHOLD_TIME]
                              dump request life cycle when single request process
                              time is greater than this value
        -r, --dump_raw        dump every io request life cycle
      
      examples:
          ./alibiolatency          # summarize block I/O latency(default display interval is 2s)
          ./alibiolatency -d sda3  # inspect specified device /dev/sda3
          ./alibiolatency -i 2     # specify display interval, 2s
          ./alibiolatency -t 10    # display only when average request process time is greater than 10ms
          ./alibiolatency -T 20    # dump request life cycle when single request process time is greater than 20ms
          ./alibiolatency -r       # dump every io request life cycle
    • 通過man命令擷取bcc工具說明。

      man bcc-alibiolatency