如何使用 PerfInsights

注意

本文中引用的 CentOS 是 Linux 发行版, (EOL) 将达到生命周期结束。 相应地考虑使用和计划。 有关详细信息,请参阅 CentOS 生命周期终止指南

PerfInsights Linux 是一种自助诊断工具,用于收集和分析诊断数据,并提供一份报告来帮助排查 Azure 中的 Linux 虚拟机性能问题。 PerfInsights 可以作为独立工具在受支持的虚拟机上运行,也可以使用 Azure 虚拟机的性能诊断直接从门户运行。

如果遇到虚拟机性能问题,请在联系支持人员之前运行此工具。

支持的故障排除方案

PerfInsights 可以收集和分析多种信息。 以下部分介绍常见方案。

快速性能分析

此方案收集基本信息,例如虚拟机的存储和硬件配置、各种日志,包括:

  • 操作系统信息

  • PCI 设备信息

  • 常规来宾 OS 日志

  • 配置文件

  • 存储信息

  • 使用 Azure 实例元数据服务收集的 Azure 虚拟机配置 (

  • 正在运行的进程、磁盘、内存和 CPU 使用情况的列表

  • 网络信息

这是一个被动的信息集合,不应影响系统。

注意

快速性能分析方案会自动包含在以下每种方案中:

性能分析

此方案类似于快速性能分析,但允许在较长的持续时间内捕获诊断信息。

HPC 性能分析

此方案用于排查 HPC 大小 VM 上的问题,即 H 系列和 N 系列。 它根据 Azure HPC 平台团队测试并建议的内容检查 VM 配置。 它还收集与这些 VM 上可用的特殊硬件的状态和配置相关的日志和诊断,包括:

  • GPU 驱动程序信息

  • GPU 硬件诊断

  • InfiniBand 驱动程序信息和配置

  • InfiniBand 设备诊断

  • 网络配置文件

  • 性能优化信息

注意

HPC 性能分析方案使用的某些工具(例如,与设备驱动程序一起打包的 cli 命令)并非在所有 VM 上都存在。 在这种情况下,将跳过分析的这些部分。 运行此方案不会在 VM 上安装任何软件,也不会进行任何其他永久更改。

注意

目前不支持直接从 Azure 门户运行 HPC 方案,因此必须从命令行下载并运行 PerfInsights 才能使用它。

PerfInsights 收集的信息类型

收集有关 Linux 虚拟机、操作系统、块设备、高资源使用者、配置和各种日志的信息。 下面是更多详细信息:

  • 操作系统

    • Linux 分发版和版本
    • 内核信息
    • 驱动程序信息
    • Azure HPC 驱动程序 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 上运行此工具。

  • 必须在 VM 上安装 Python 3.6 或更高版本。

    注意

    Python 软件基础 (PSF) 不再支持 Python 2。 如果在 VM 上安装 Python 2.7,则可以安装 PerfInsights。 但是,PerfInsights 中不会进行任何更改或 bug 修复以支持 Python 2.7。 有关详细信息,请参阅 日落 Python 2

  • 当前支持以下分发版:

    注意

    Microsoft 仅测试了表中列出的版本。 如果某个版本未在表中列出,则 Microsoft 不会对其进行显式测试,但该版本可能仍有效。

    分布 版本
    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 上,来宾代理信息收集可能会失败。

  • 基于 Debian 的发行版上不会收集 PCI 设备信息。

  • 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-诊断 选项跳过这些提示。

    如果你在 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 文件中,可以找到详细说明 PerfInsights 调查结果的 HTML 报告。 若要查看报表,请展开 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 问题,可在此处找到。

“网络”选项卡的屏幕截图。

“存储”选项卡

发现结果 ”部分显示与存储相关的各种发现和建议。

阻止设备 ”和其他相关部分(如 “分区”、“ LVM”和“ MDADM ”选项卡)介绍了如何配置块设备并彼此关联。

“存储”选项卡的屏幕截图。

“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 社区支持。 还可以向 Azure 反馈社区提交产品反馈。