💻 使用 perf KVM 模块进行性能统计分析

Linux perf 工具提供了一个专用的 KVM 模块(perf kvm),它集成了性能统计(stat)功能,用于收集和报告 KVM 虚拟机 VCPU 退出(VM-Exit)事件的详细信息,是诊断虚拟化性能瓶颈的重要工具。

🚨 运行要求与权限

由于 KVM 模块需要访问内核的跟踪点(Tracepoints),因此**必须使用 sudo(root 权限)**运行所有 recordreport 命令,否则会导致权限不足或数据文件为空。

1. 录制性能数据(perf kvm stat record

在开始录制之前,请确保你的 KVM 虚拟机(Guest OS)正在运行,并且正在执行你想要分析的工作负载。

核心原则:限制录制时间,以避免生成过于庞大的数据文件,导致分析时间过长。

Bash

# 启动 KVM 虚拟机后,在宿主机终端执行此命令。
# 此示例将录制 KVM 事件 10 秒。
sudo perf kvm stat record sleep 10

# 提示:在 record 运行的 10 秒内,确保在虚拟机内进行操作,
# 以便 perf 捕获到活跃的 KVM 退出事件。

perf record 将自动停止并在当前目录下生成包含性能数据的记录文件(通常是 perf.data.guestperf.data)。

2. 生成性能报告(perf kvm stat report

数据收集完成后,使用 report 子命令来解析和展示收集到的数据。此步骤也需要 sudo 权限。

Bash

# 在 record 命令停止后,在同一目录下执行此命令。
sudo perf kvm stat report

3. 分析报告界面

执行 report 命令后,你将进入一个交互式终端界面,其中会展示 KVM VCPU 的退出统计分析。

报告的关键分析项包括:

列名含义用途
VM-EXITVCPU 退出到宿主机内核的原因(如 EPT 违规、IO 指令、HLT 指令等)。定位虚拟机与宿主机交互最频繁的操作。
Samples发生的总次数。衡量每种退出事件的频率。
Samples%该退出事件占总退出事件的百分比。快速识别主要的退出类型。
Time%宿主机内核处理该退出事件所花费的总时间占总时间的百分比。识别最耗时的退出事件,它是主要的性能瓶颈所在。
Avg time平均每次处理该退出事件所花费的时间。评估单个退出事件的平均延迟。

分析重点:

在分析报告时,应特别关注 Time% 最高的退出原因。高百分比意味着 KVM 花费了大量时间在处理这类特定的 VM-Exit,这通常是需要优化的地方。

perf kvm stat 是 Linux perf 工具集中的一个子命令,用于收集和报告 KVM 虚拟机的 VCPU 退出(VM-Exit)事件统计信息,帮助诊断虚拟化性能瓶颈。

🚨 运行要求与权限

由于 perf kvm stat 需要访问内核的跟踪点(Tracepoints),因此**必须使用 sudo(root 权限)**运行所有 recordreport 命令,否则会导致权限不足或数据文件为空。

1. 录制性能数据(Record)

在开始录制之前,请确保你的 KVM 虚拟机(Guest OS)正在运行,并且正在执行你想要分析的工作负载。

核心原则:限制录制时间,以避免生成过于庞大的数据文件,导致分析时间过长。

Bash

# 启动 KVM 虚拟机后,在宿主机终端执行此命令。
# 此示例将录制 KVM 事件 10 秒。
sudo perf kvm stat record sleep 10

# 提示:在 record 运行的 10 秒内,确保在虚拟机内进行操作,
# 以便 perf 捕获到活跃的 KVM 退出事件。

perf record 将自动停止并在当前目录下生成包含性能数据的记录文件(通常是 perf.data.guestperf.data)。

2. 生成性能报告(Report)

数据收集完成后,使用 report 子命令来解析和展示收集到的数据。此步骤也需要 sudo 权限。

Bash

# 在 record 命令停止后,在同一目录下执行此命令。
sudo perf kvm stat report

3. 分析报告界面

执行 report 命令后,你将进入一个交互式终端界面,其中会展示 KVM VCPU 的退出统计分析。

报告的关键分析项包括:

列名含义用途
VM-EXITVCPU 退出到宿主机内核的原因(如 EPT 违规、IO 指令、HLT 指令等)。定位虚拟机与宿主机交互最频繁的操作。
Samples发生的总次数。衡量每种退出事件的频率。
Samples%该退出事件占总退出事件的百分比。快速识别主要的退出类型。
Time%宿主机内核处理该退出事件所花费的总时间占总时间的百分比。识别最耗时的退出事件,它是主要的性能瓶颈所在。
Avg time平均每次处理该退出事件所花费的时间。评估单个退出事件的平均延迟。

分析重点:

在分析报告时,应特别关注 Time% 最高的退出原因。高百分比意味着 KVM 花费了大量时间在处理这类特定的 VM-Exit,这通常是需要优化的地方。

Read more

My pwsh profile for linux

之前出过一篇My pwsh profile for windows,并且经常随着使用工具的更迭而修改和随时同步,但是转移到 linux 后,发行版,发行版版本和桌面环境一直不稳定, 所以 pwsh 和 bash 的 profile 这次一起 post 出来方便迁移 My pwsh profile for Windows#修改适配前务必找到正确路径,可能版本不对 #消除一个微软的pwsh启动bug,使在开始菜单启动pwsh时会进入home作为工作目录 if(($PWD).Path -eq “C:\Program Files\WindowsApps\Microsoft.PowerShell_7.5.3.0_x64__8wekyb3d8bbwe” -or ($PWD).Path -eq “C:

By bakamake

wayland gnome gui操作和windows 的差异

gnome和windows有着诸多差异,更不用说是wayland gnome了,本文记录gnome wayland 的一些不适应的差异 file文件io: 双击压缩包文件,逻辑太简单粗暴,后台执行解压程序,但是file gui前台只会提供已经解压的部分,然后提示就是mac风格,几乎看不到,一般是文件夹最先出来,如果这时候进入文件夹,会误以为压缩包内容损坏,实际是io还没有完成 视频,图片等查看软件,一般需要在file复制句柄之类的,总之需要选中文件然后ctrl c,然后在查看器窗口粘贴上去,ctrl v,完成操作,然后可以看到解析结果 flatpak软件,但是仍然是io,这个要夸赞,flatpak 微信,默认只能查看到 ~/下载 位置下的文件,ipc机制同理,所以每次复制粘贴文件之前需要把文件移动到下载目录下面

By bakamake

dell uefi

从上到下依次是 概览/总览 引导配置 集成设备 存储 显示 连接 电源 安全性 密码 更新, 恢复 系统管理 键盘 预引导行为 虚拟化支持 性能 系统日志 引导配置 引导配置 (Boot Configuration) 菜单详解 引导顺序 (Boot Sequence) 看自己的,我的ubuntu在最前,开机会直接进入ubuntu ,如果是usb引导介质(一般是usb disk之类的),就会进入u盘上的小型系统live os 或者win pe 一般只看关键词各种os的名称 ,以及NVMe SSD disk usb disk这些硬盘关键词,没有os boot或者 os坏掉了,就考虑NVMe SSD disk能不能进os 每个boot项的末尾的上下标按钮调整启动顺序,

By bakamake