針對效能診斷的Linux虛擬機效能問題進行疑難解答 (PerfInsights)

適用於:✔️ Linux VM

注意

本文所參考的 CentOS 是一種 Linux 發行版,且將到達生命周期結束(EOL)。 請據以考慮您的使用和規劃。 如需詳細資訊,請參閱 CentOS 生命週期結束指引

PerfInsights Linux 是一種自助診斷工具,可收集和分析診斷數據,並提供報告來協助針對 Azure 中的 Linux 虛擬機效能問題進行疑難解答。 PerfInsights 可以在支援的虛擬機上以獨立工具的形式執行,或使用 Azure 虛擬機的效能診斷直接從入口網站執行。

如果您在連絡支持人員之前遇到虛擬機的效能問題,請執行此工具。

注意

持續診斷(預覽版) 目前僅支援 Windows。

支援的疑難解答案例

PerfInsights 可以收集和分析數種資訊。 下列各節涵蓋常見案例。

快速效能分析

此案例會收集基本資訊,例如虛擬機的記憶體和硬體設定、各種記錄,包括:

  • 操作系統資訊

  • PCI 裝置資訊

  • 一般客體OS記錄

  • 組態檔

  • 儲存空間資訊

  • Azure 虛擬機組態 (使用 Azure 實例元數據服務收集

  • 執行中進程、磁碟、記憶體和CPU使用量的清單

  • 網路資訊

這是不應該影響系統的被動資訊集合。

注意

快速效能分析案例會自動包含在下列每個案例中:

效能分析

此案例類似於快速效能分析,但允許擷取較長持續時間的診斷資訊。

HPC 效能分析

此案例旨在針對 HPC 大小 VM 的問題進行疑難解答,這表示 H 系列和 N 系列。 它會根據 Azure HPC Platform 小組已測試及建議的內容,檢查 VM 組態。 它也會收集與這些 VM 上可用之特殊硬體狀態和設定相關的記錄和診斷,包括:

  • GPU 驅動程式資訊

  • GPU 硬體診斷

  • InfiniBand 驅動程式資訊和設定

  • InfiniBand 裝置診斷

  • 網路組態檔

  • 效能微調資訊

注意

HPC 效能分析案例所使用的某些工具,例如使用設備驅動器封裝在 中的 cli 命令,不會出現在所有 VM 上。 在這種情況下,將會略過分析的部分。 執行此案例不會在 VM 上安裝任何軟體,也不會進行任何其他永久變更。

注意

目前不支援直接從 Azure 入口網站執行 HPC 案例,因此必須從命令行下載並執行 PerfInsights 才能使用它。

PerfInsights 收集何種資訊

收集 Linux 虛擬機、操作系統、封鎖裝置、高資源取用者、組態和各種記錄的相關信息。 以下是詳細資料:

  • 作業系統

    • Linux 發行版本和版本
    • 核心資訊
    • 驅動程序資訊
    • Azure HPC Driver VM 擴充功能記錄*
    • SELinux 組態*
  • 硬體

    • PCI 裝置 [*]
    • lscpu 的輸出*
    • 系統管理 BIOS 數據表傾印*
  • 進程和記憶體

    • 行程清單(工作名稱、使用的記憶體、開啟的檔案)
    • 總計、可用和可用物理記憶體
    • 總計、可用和可用交換記憶體
    • 分析擷取 CPU,並以 5 秒間隔處理 CPU 使用量
    • 以 5 秒間隔分析擷取進程記憶體使用量
    • 記憶體存取的使用者限制*
    • NUMA 組態*
  • GPU

    • Nvidia SMI 輸出*
    • Nvidia DCGM 診斷*
    • Nvidia 偵錯傾印*
  • 網路

    • 具有配接器統計數據的網路適配器清單
    • 網路路由表
    • 已開啟的埠和狀態
    • InfiniBand 數據分割索引鍵*
    • ibstat 的輸出*
  • 儲存體

    • 區塊裝置清單
    • 資料分割清單
    • 掛接點清單
    • MDADM 磁碟區資訊
    • LVM 磁碟區資訊
    • 所有磁碟每 5 秒就會分析一次擷取
  • 記錄

    • /var/log/messages
    • /var/log/syslog
    • /var/log/kern.log
    • /var/log/cron.log
    • /var/log/boot.log
    • /var/log/yum.log
    • /var/log/dpkg.log
    • /var/log/sysstat 或 /var/log/sa [**]
    • /var/log/cloud-init.log
    • /var/log/cloud-init-output.log
    • /var/log/gpu-manager.log
    • /var/log/waagent.log
    • /var/log/azure/[extension folder]/*log*
    • /var/opt/microsoft/omsconfig/omsconfig.log
    • /var/opt/microsoft/omsagent/log/omsagent.log
    • /etc/waagent.config
    • 過去五天的 journalctl 輸出
  • Azure 虛擬機實例元數據

* 僅在 HPC 案例中

效能診斷追蹤

在背景中執行以規則為基礎的引擎,以收集數據並診斷進行中的效能問題。 規則會顯示在報表的 [類別 -> 尋找] 索引標籤底下。

每個規則都包含下列各項:

  • 尋找:尋找的描述。
  • 建議:建議針對尋找採取哪些動作。 此外,還有參考連結至檔,可提供有關尋找和/或建議的詳細資訊。
  • 影響層級:代表對效能造成影響的可能性。

目前支援下列規則類別:

  • 高資源使用量:

    • 高 CPU 使用量:偵測高 CPU 使用量期間,並顯示這些期間最高的 CPU 使用量取用者。
    • 高記憶體使用量:偵測高記憶體使用量期間,並顯示這些期間記憶體使用量最高的取用者。
    • 高磁碟使用量:偵測實體磁碟上的高磁碟使用量週期,並在這些期間顯示磁碟使用量最高的取用者。
  • 記憶體:偵測特定的記憶體組態。

  • 記憶體:偵測特定的記憶體組態。

  • GPU:偵測特定的 GPU 組態。

  • 網路:偵測特定網路設定。

  • 系統:偵測特定系統設定。

注意

[*] DEbian 和 SLES 散發套件尚未收集 PCI 資訊。

[**] /var/log/sysstat 或 /var/log/sa 包含 sysstat 套件所收集的系統活動報告 (SAR) 檔案。 如果 VM 上未安裝 sysstat 套件,PerfInsights 工具會提供安裝建議。

在您的 VM 上執行 PerfInsights Linux

執行工具之前,我必須知道什麼

工具需求

  • 此工具必須在有效能問題的 VM 上執行。

  • Python 3.6 或更新版本必須安裝在 VM 上。

    注意

    Python Software Foundation (PSF) 不再支援 Python 2。 如果 VM 上安裝 Python 2.7,則可以安裝 PerfInsights。 不過,PerfInsights 中不會進行任何變更或錯誤修正,以支援 Python 2.7。 如需詳細資訊,請參閱 日落 Python 2

  • 目前支援下列散發套件:

    注意

    Microsoft只測試數據表中列出的版本。 如果數據表中未列出版本,則不會透過Microsoft明確測試版本,但版本可能仍可運作。

    Distribution 版本
    Oracle Linux Server 6.10 [*], 7.3, 7.5, 7.6, 7.7, 7.8, 7.9
    CentOS 6.5 [*], 7.6, 7.7, 7.8, 7.9
    RHEL 7.2、7.5、8.0 [*]、8.1、8.2、8.6、8.8
    Ubuntu 14.04, 16.04, 18.04, 20.04, 22.04
    Debian 8, 9, 10, 11 [*]
    SLES 12 SP4 [], 12 SP5 [*], 15 [**], 15 SP1 [*], 15 SP2 [*], 15 SP4 [*]
    AlmaLinux 8.4, 8.5
    Azure Linux 2.0

注意

[*] 請參閱 已知問題 區段

注意

[*] HPC 案例依賴 HPCDiag 工具,因此請檢查其支援的 VM 大小和 OS 的支援矩陣。 特別是尚未支援 NDv4 大小的 VM,而且這些 VM 的報告可能會顯示多餘的結果。

已知問題

  • 根據預設,RHEL 8 未安裝 Python。 若要執行 PerfInsights Linux,您必須先安裝 Python 3.6 或更新版本。

  • CentOS 6.x 上的客體代理程式資訊收集可能會失敗。

  • PCI 裝置資訊不會收集於 Debian 型散發套件上。

  • 部分散發套件會收集 LVM 資訊。

如何? 執行 PerfInsights

您可以從 Azure 入口網站 安裝 Azure 效能診斷,在虛擬機上執行 PerfInsights。 您也可以將它當作獨立工具執行。

注意

PerfInsights 只會收集和分析數據。 它不會對系統進行任何修改。

從 Azure 入口網站 安裝並執行 PerfInsights

如需此選項的詳細資訊,請參閱 Azure 效能診斷

在獨立模式中執行 PerfInsights

若要執行 PerfInsights 工具,請遵循下列步驟:

  1. 將PerfInsights.tar.gz下載至虛擬機上的資料夾,並使用下列命令從終端機擷取內容。

    wget https://download.microsoft.com/download/9/F/8/9F80419C-D60D-45F1-8A98-718855F25722/PerfInsights.tar.gz
    
    tar xzvf PerfInsights.tar.gz
    
  2. 流覽至包含 perfinsights.py 檔案的資料夾,然後執行 perfinsights.py 以檢視可用的命令行參數。

    cd <the path of PerfInsights folder>
    sudo python perfinsights.py
    

    PerfInsights Linux 命令行輸出的螢幕快照。

    執行 PerfInsights 案例的基本語法如下:

    sudo python perfinsights.py -r <ScenarioName> -d [duration]<H | M | S> [AdditionalOptions]
    

    您可以使用下列範例執行為時 1 分鐘的快速效能分析案例,並在 /tmp/output 資料夾下建立結果:

    sudo python perfinsights.py -r quick -d 1M -a -o /tmp/output
    

    您可以使用下列範例執行效能分析案例 5 分鐘,並將結果 (儲存在 TAR 檔案中)上傳至記憶體帳戶:

    sudo python perfinsights.py -r vmslow -d 300S -a -t <StorageAccountName> -k <StorageAccountKey> -i <full resource Uri of the current VM>
    

    您可以使用下列範例來執行 HPC 效能分析案例 1 分鐘,並將結果 TAR 檔案上傳至記憶體帳戶:

    sudo python perfinsights.py -r hpc -d 60S -a -t <StorageAccountName> -k <StorageAccountKey> -i <full resource Uri of the current VM>
    

    注意

    在執行案例之前,PerfInsights 會提示使用者同意共用診斷資訊,並同意 EULA。 使用 -a 或 --accept-disclaimer-and-share-diagnostics 選項來略過這些提示。

    如果您有使用中支援票證,且具有Microsoft,並且根據您正在使用的支持工程師的要求執行 PerfInsights,請務必使用 -s 或 --support-request 選項提供支援票證號碼。

執行完成時,除非未指定任何輸出資料夾,否則新的 tar 檔案會出現在與 PerfInsights 相同的資料夾中。 檔案的名稱是 PerformanceDiagnostics_yyyy-MM-dd_hh-mm-ss-fff.tar.gz。 您可以將此檔案傳送至支援代理程式進行分析,或開啟檔案內部的報告,以檢閱結果和建議。

檢閱診斷報告

在PerformanceDiagnostics_yyyy-MM-dd_hh-mm-ss-fff.tar.gz檔案中,您可以找到一份 HTML 報表,詳細說明 PerfInsights 的結果。 若要檢閱報告,請展開 PerformanceDiagnostics_yyyy-MM-dd_hh-mm-ss-fff.tar.gz 檔案,然後開啟 PerfInsights Report.html 檔案。

概觀索引標籤

[概觀] 索引標籤提供基本執行詳細數據和虛擬機資訊。 [結果] 索引標籤會顯示 PerfInsights 報表中所有不同區段的建議摘要。

PerfInsights 報表 [概觀] 索引卷標的螢幕快照。

PerfInsights 報表 [結果] 索引標籤的螢幕快照。

注意

分類為高的結果是可能導致效能問題的已知問題。 分類為中型的結果代表不一定會導致效能問題的非最佳設定。 分類為低的結果只是資訊性陳述。

檢閱所有高中結果的建議和連結。 了解它們如何影響效能,以及效能優化設定的最佳做法。

CPU 索引標籤

[CPU] 索引標籤提供 PerfInsights 執行期間全系統 CPU 耗用量的相關信息。 高 CPU 使用量週期和長時間執行 CPU 取用者的相關信息,有助於針對高 CPU 相關問題進行疑難解答。

PerfInsights 報表 CPU 索引標籤的螢幕快照。

GPU 索引標籤

[GPU ] 索引標籤提供有關針對 GPU 相關問題進行疑難解答之結果的相關信息。

PerfInsights 報表 GPU 索引標籤的螢幕快照。

網路索引標籤

[網络 ] 索引標籤提供網路組態和狀態的相關信息。 如需有關網路相關結果的資訊,包括 HPC 案例中的 InfiniBand 問題,請參閱這裡。

[網络] 索引標籤的螢幕快照。

[儲存體] 索引標籤

[結果]段會顯示與記憶體相關的各種結果和建議。

[ 封鎖裝置 ] 和其他相關區段,例如 分割區LVMMDADM 索引標籤,說明如何設定區塊裝置並彼此相關。

[記憶體] 索引標籤的螢幕快照。

MDADM 索引標籤的螢幕快照。

Linux 索引標籤

[Linux] 索引標籤包含 VM 中執行之硬體和作業系統的相關信息。 詳細數據包括執行中的進程清單,以及客體代理程式、PCI、CPU、GPU、驅動程式和 LIS 驅動程式的相關信息。

Linux 索引標籤和詳細數據的螢幕快照。

或在已啟用 GPU 的 VM 上:

[Linux] 索引標籤和詳細資料下 GPU 索引標籤的螢幕快照。

下一步

您可以將診斷記錄和報告上傳至 Microsoft 支援服務,以進一步檢閱。 當您與 Microsoft 支援服務 員工合作時,他們可能會要求您傳輸 PerfInsights 所產生的輸出,以協助進行疑難解答程式。

下列螢幕快照顯示類似您可能會收到的訊息:

Microsoft 支援服務 範例訊息的螢幕快照。

請遵循訊息中的指示來存取檔傳輸工作區。 若要獲得額外的安全性,您必須在第一次使用時變更密碼。

登入之後,您會看到一個對話框,以上傳 PerfInsights 收集的PerformanceDiagnostics_yyyy-MM-dd_hh-mm-ss-fff.tar.gz 檔案。

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。