排查性能诊断的 Linux 虚拟机性能问题(PerfInsights)
适用于:✔️ Linux VM
注意
本文中引用的 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 表转储
*
- PCI 设备 [
进程和内存
- 进程列表(任务名称、已用内存、打开的文件)
- 总、可用和可用物理内存
- 总、可用和可用交换内存
- 分析捕获 CPU 并按 5 秒间隔处理 CPU 使用率
- 分析以 5 秒间隔捕获进程内存使用情况
- 内存访问的用户限制
*
- NUMA 配置
*
GPU
- Nvidia SMI 输出
*
- Nvidia DCGM 诊断
*
- Nvidia 调试转储
*
- Nvidia SMI 输出
网络
- 具有适配器统计信息的网络适配器列表
- 网络路由表
- 打开的端口和状态
- 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 输出
*
仅在 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.9CentOS 6.5 [ *
], 7.6, 7.7, 7.8, 7.9RHEL 7.2、7.5、8.0 [ *
]、8.1、8.2、8.6、8.8Ubuntu 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,因为 Python 2 和 Python 3.6 均可用。 若要安装 Python 3.6,请运行
yum install python3
命令。CentOS 6.x 上的来宾代理信息收集可能会失败。
基于 Debian 的分发版不会收集 PCI 设备信息。
部分收集某些分发版上的 LVM 信息。
如何实现运行 PerfInsights
可以通过从 Azure 门户 安装 Azure 性能诊断在虚拟机上运行 PerfInsights。 也可以将其作为独立工具运行。
注意
PerfInsights 只需收集和分析数据。 它不会对系统进行任何修改。
安装和运行来自 Azure 门户的 PerfInsights
有关此选项的详细信息,请参阅 Azure 性能诊断。
在独立模式下运行 PerfInsights
要运行 PerfInsights 工具,请按照以下步骤操作:
将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
导航到包含
perfinsights.py
文件的文件夹,然后运行perfinsights.py
以查看可用的命令行参数。cd <the path of PerfInsights folder> sudo python perfinsights.py
运行 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 报表中所有不同部分的建议摘要。
注意
分类为“高”的发现结果是可能会导致性能问题发生的已知问题。 分类为“中等”的发现结果表示配置不是最佳,不一定会导致性能问题发生。 分类“低”的发现结果只是参考性陈述。
请查看所有分类为“高”和“中等”的发现结果的相关建议和链接。 了解这些发现结果对性能造成的影响,以及有关性能优化配置的最佳做法。
“CPU”选项卡
“CPU ”选项卡提供有关 PerfInsights 运行期间系统范围的 CPU 消耗的信息。 有关高 CPU 使用率周期和长时间运行的 CPU 使用者的信息将有助于排查与 CPU 相关的高问题。
GPU 选项卡
GPU 选项卡提供有关有助于排查 GPU 相关问题的发现的信息。
“网络”选项卡
“网络 ”选项卡提供有关网络配置和状态的信息。 有关与网络相关的发现(包括 HPC 方案中的 InfiniBand 问题)的信息,可在此处找到。
存储选项卡
“结果”部分显示有关存储的各种发现结果和建议。
“ 阻止设备 ”和其他相关部分(如 分区、 LVM 和 MDADM 选项卡)介绍了如何配置块设备并彼此相关。
Linux 选项卡
Linux 选项卡包含有关 VM 中运行的硬件和操作系统的信息。 详细信息包括正在运行的进程列表以及有关来宾代理、PCI、CPU、GPU、驱动程序和 LIS 驱动程序的信息。
或者,在启用了 GPU 的 VM 上:
后续步骤
可将诊断日志和报告上传到 Microsoft 支持部门供进一步审查。 与Microsoft 支持部门员工合作时,他们可能会请求传输 PerfInsights 生成的输出,以帮助完成故障排除过程。
以下屏幕截图显示了你可能会收到的消息示例:
请遵照消息中的说明访问文件传输工作区。 为了提高安全性,首次使用时必须更改密码。
登录后,将找到一个对话框,用于上传 PerfInsights 收集的PerformanceDiagnostics_yyyy-MM-dd_hh-mm-ss-fff.tar.gz 文件。
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区。