5.2. 監視以及診斷效能問題

Red Hat Enterprise Linux 7 提供許多工具,這些工具對監視系統效能,以及診斷與 I/O 、檔案系統和它們的設定相關的效能問題來說是很實用的。本章節概述您可以使用的工具,以及舉例說明如何使用它們來監視,並診斷 I/O 和與檔案系統相關的效能問題。

5.2.1. 用 vmstat 監視系統效能

vmstat 報告整個系統的處理序、記憶體、分頁、I/O 區塊、插斷以及 CPU 活動。它可以幫助系統管理員來決定 I/O 子系統是否要為任何效能問題負責。
以下欄位顯示的是與 I/O 效能相關程度最大的資訊:
si
swap in 的簡寫,即寫入 swap 空間;單位為 KB。
so
swap out 的簡寫,即取讀自 swap 空間;單位為 KB。
bi
block in 的簡寫,即 block 寫入作業;單位為 KB。
bo
block out 的簡寫,即 block 取讀作業;單位為 KB。
wa
等待 I/O 作業完成的佇列比例。
當您的 swap 空間和資料位於一樣的裝置上,swap in 以及swap out 就特別有用,可以視為記憶體使用方式的指標。
此外,free,buff,與 cache 欄位可以幫助識別寫回頻率。快取數值突然的下降以及空閒數值的增加表示寫回以及頁面快取無效判定已經發生。
如果用 vmstat 分析,會顯示 I/O 子系統跟效能的下降是有關係的。系統管理員可以使用 iostat 來決定該負責的 I/O 裝置。
vmstat」 是由 「procps-ng」提供的套件。欲了解使用「vmstat」的細節,請見 man page:
$ man vmstat

5.2.2. 用 iostat 監視 I/O 效能

Iostat」是由「sysstat」 套件提供。它報告您的系統的 I/O 裝置載入。如果用「vmstat」的分析顯示 I/O 子系統和效能減低有關係,那麼您可以使用「iostat」來決定要負責的 I/O 裝置。
您可以專注在「iostat」對特定裝置的報告輸出上,方法是使用「iostat」man page 中定義的參數。
$ man iostat

5.2.2.1. 用 blktrace 執行詳細的 I/O 分析

Blktrace」提供在 I/O 子系統是如何分配時間的詳細資料。小幫手公用程式「blkparse」讀取「blktrace」的原始輸出,而且產生人們可讀取的輸入摘要以及被「blktrace」記錄的輸出作業。
欲了解更多使用此工具的資訊,請見 man page:
$ man blktrace
$ man blkparse

5.2.2.2. 用 btt 分析 blktrace 輸出

Btt」是「blktrace」套件的一部分。它可以分析「blktrace」輸出以及顯示資料在每一個 I/O 堆疊空間花了多少時間。這會讓 I/O 子系統的瓶頸較容易被發現。
舉例來說,如果「btt」顯示被傳送至區塊層(「Q2Q」)的要求與要求之間的時間比要求在區塊層(「Q2C」)所花的總時間還要長,那麼效能問題就與 I/O 子系統無關。如果一個裝置花很長的時間服務要求(「D2C」), 那麼這個裝置的負載會過重,或者傳送至裝置的工作負載可能不會是最佳狀況。如果 I/O 區塊在被指派要求(「Q2G」)之前排隊了很長的時間,這可能表示使用中的儲存空間無法服務 I/O 負載。
欲了解更多使用此工具的資訊,請見 man page:
$ man btt

5.2.2.3. 用 seekwatcher 分析 blktrace 輸出

seekwatcher」工具可以使用「blktrace」輸出來製圖 I/O 逾時。它聚焦於 I/O 磁碟的 Logical Block Address(LBA, 邏輯區塊位置 ),每秒輸送 MB、每秒搜尋的數量以及每秒 I/O 作業。這可以幫助您識別您的裝置何時達到每秒作業上限。
欲了解更多使用此工具的資訊,請見 man page:
$ man seekwatcher

5.2.3. 用 SystemTap 監視儲存空間

Red Hat Enterprise Linux 7 系統 tap 初學者指南」包含幾個範例指令碼。這些指令碼對設定檔以及監視儲存空間效能來說是很有用的。
以下「SystemTap」範例指令碼和儲存空間效能有關聯,而且在診斷儲存空間或是檔案系統效能問題方面可能會有幫助。在預設情況下,它們被安裝在「/usr/share/doc/systemtap-client/examples/io」目錄裡。
disktop.stp
每隔五秒它會檢查磁碟的讀取或是寫入狀態,以及輸出在那段期間的前十個輸入。
iotime.stp
它會列印花在讀取和寫入作業的時間總量,以及讀取、寫入的位元組數量。
traceio.stp
每秒它會列印前十個可執行的檔案,是依據發現的累計 I/O 流量。
traceio2.stp
在讀取和寫入至一個指定的裝置發生時,它會列印可執行檔的名字以及處理識別碼。
inodewatch.stp
每一次一個讀取或寫入發生在指定的主要 / 次要裝置上的 inode 時,它會列印可執行檔的名字以及處理識別碼。
inodewatch2.stp
它會列印可執行檔名字、處理識別碼以及在每一次指定的主要 / 次要裝置上的 inode 的屬性變更時列印屬性。
latencytap.stp」指令碼記錄不同種類的延遲對一個或多個處理序的效果。它每三十秒會列印一個延遲種類的列表,依一個處理序或多個處理序花在等待的總時間的遞減順序來排序。這對於識別儲存空間以及網路延遲的原因是很有用的。Red Hat 建議您使用「--all-modules」選項與這個指令碼來啟用延遲事件的對應,這樣效果會比較好。在預設狀況下,此指令碼是安裝在「/usr/share/doc/systemtap-client-version/examples/profiling」目錄。
Red Hat Enterprise Linux 7 系統 tap 初學者指引」可以從以下連結取得:http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/