解决 Ubuntu 下 VTune 无法收集 CPU 硬件时间计数数据的问题

解决 Ubuntu 下 VTune 无法收集 CPU 硬件时间计数数据的问题

在 Ubuntu 上使用 Intel VTune Profiler 时遇到无法收集 CPU 硬件性能计数器数据的问题,通常是由于权限和系统配置问题导致的。以下是解决方案:

1. 检查并加载性能监控模块

首先确保 Linux 内核性能监控模块已加载:

bash 复制代码
sudo modprobe msr

2. 设置正确的文件权限

VTune 需要访问以下文件,设置正确权限:

bash 复制代码
sudo chmod go+rw /dev/cpu/*/msr
sudo chmod go+rw /proc/sys/kernel/perf_event_paranoid

3. 调整 perf_event_paranoid 设置

临时降低安全限制(重启后失效):

bash 复制代码
sudo sh -c 'echo 0 > /proc/sys/kernel/perf_event_paranoid'

永久修改(编辑 /etc/sysctl.conf 或创建新配置文件):

bash 复制代码
echo "kernel.perf_event_paranoid = 0" | sudo tee /etc/sysctl.d/60-vtune.conf
sudo sysctl --system

4. 禁用 NMI 看门狗

bash 复制代码
sudo sh -c 'echo 0 > /proc/sys/kernel/nmi_watchdog'

永久禁用:

bash 复制代码
echo "kernel.nmi_watchdog = 0" | sudo tee -a /etc/sysctl.d/60-vtune.conf
sudo sysctl --system

5. 配置用户权限

将当前用户添加到 perf-users 组:

bash 复制代码
sudo groupadd perf-users
sudo usermod -aG perf-users $USER

然后配置 sysctl

bash 复制代码
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. 验证配置

重启系统后,运行以下命令验证:

bash 复制代码
vtune --collect performance-snapshot -- ./your_application

7. 其他可能的解决方案

如果问题仍然存在:

  1. 确保 BIOS 中启用了性能计数器
  2. 检查 VTune 版本是否支持您的 CPU
  3. 尝试使用 sudo 运行 VTune(不推荐长期使用)
  4. 查看 VTune 文档中关于 Linux 系统配置的具体要求

注意事项

  • 修改系统参数可能会影响安全性,建议仅在受信任的开发环境中进行
  • 某些云虚拟机可能无法访问硬件性能计数器
  • 不同版本的 Ubuntu 和 Linux 内核可能需要不同的配置
相关推荐
weixin_428498494 天前
CFD中的动量方程非守恒形式详解
hpc
weixin_428498494 天前
在OpenFOAM中自定义动态变化的边界条件
c++·hpc
weixin_428498494 天前
在AMGCL中使用多个GPU和多个计算节点求解大规模稀疏矩阵方程
hpc
weixin_428498497 天前
在Fortran程序中嵌入Lua解释器
lua·hpc
weixin_428498497 天前
使用MPI-IO并行读写HDF5文件
hpc
weixin_428498499 天前
AMGCL库的Backends及使用示例
hpc
weixin_428498499 天前
在AMGX中使用MPI加载自定义分布式矩阵和向量
hpc
_考不上研究生不改名11 天前
【完美解决】VSCode连接HPC节点,已配置密钥却还是提示需要输入密码
linux·服务器·vscode·远程连接·hpc·超算集群
FS_Marking24 天前
飞速(FS)InfiniBand解决方案助力领先科技公司网络升级
hpc·400g·800g