解决 Ubuntu 下 VTune 无法收集 CPU 硬件时间计数数据的问题
解决 Ubuntu 下 VTune 无法收集 CPU 硬件时间计数数据的问题
在 Ubuntu 上使用 Intel VTune Profiler 时遇到无法收集 CPU 硬件性能计数器数据的问题,通常是由于权限和系统配置问题导致的。以下是解决方案:
1. 检查并加载性能监控模块
首先确保 Linux 内核性能监控模块已加载:
sudo modprobe msr
2. 设置正确的文件权限
VTune 需要访问以下文件,设置正确权限:
sudo chmod go+rw /dev/cpu/*/msr
sudo chmod go+rw /proc/sys/kernel/perf_event_paranoid
3. 调整 perf_event_paranoid 设置
临时降低安全限制(重启后失效):
sudo sh -c 'echo 0 > /proc/sys/kernel/perf_event_paranoid'
永久修改(编辑 /etc/sysctl.conf
或创建新配置文件):
echo "kernel.perf_event_paranoid = 0" | sudo tee /etc/sysctl.d/60-vtune.conf
sudo sysctl --system
4. 禁用 NMI 看门狗
sudo sh -c 'echo 0 > /proc/sys/kernel/nmi_watchdog'
永久禁用:
echo "kernel.nmi_watchdog = 0" | sudo tee -a /etc/sysctl.d/60-vtune.conf
sudo sysctl --system
5. 配置用户权限
将当前用户添加到 perf-users
组:
sudo groupadd perf-users
sudo usermod -aG perf-users $USER
然后配置 sysctl
:
echo "kernel.perf_event_mlock_kb = 512" | sudo tee -a /etc/sysctl.d/60-vtune.conf
echo "kernel.perf_cpu_time_max_percent = 25" | sudo tee -a /etc/sysctl.d/60-vtune.conf
sudo sysctl --system
6. 验证配置
重启系统后,运行以下命令验证:
vtune --collect performance-snapshot -- ./your_application
7. 其他可能的解决方案
如果问题仍然存在:
- 确保 BIOS 中启用了性能计数器
- 检查 VTune 版本是否支持您的 CPU
- 尝试使用
sudo
运行 VTune(不推荐长期使用) - 查看 VTune 文档中关于 Linux 系统配置的具体要求
注意事项
- 修改系统参数可能会影响安全性,建议仅在受信任的开发环境中进行
- 某些云虚拟机可能无法访问硬件性能计数器
- 不同版本的 Ubuntu 和 Linux 内核可能需要不同的配置