use*_*663 6 xen virtualization ubuntu perf
我使用的系统是ubuntu-12.10-desktop-amd64
我安装穿孔
apt-get install linux-tools linux-tools-common linux-tools-3.5.0-40
Run Code Online (Sandbox Code Playgroud)
当我使用时perf list
,它按预期列出所有事件.但是当我使用时perf stat
,结果似乎异常
perf stat ls
Run Code Online (Sandbox Code Playgroud)
结果是:
Performance counter stats for 'ls':
3.988508 task-clock # 0.678 CPUs utilized
172 context-switches # 0.043 M/sec
0 CPU-migrations # 0.000 K/sec
276 page-faults # 0.069 M/sec
<not supported> cycles
<not supported> stalled-cycles-frontend
<not supported> stalled-cycles-backend
<not supported> instructions
<not supported> branches
<not supported> branch-misses
0.005883014 seconds time elapsed
Run Code Online (Sandbox Code Playgroud)
为什么不支持这些事件?启用这些事件所需的任何操作?
您已虚拟化 Ubuntu,但硬件计数器(PMU/PMC MSR 寄存器)未虚拟化。Xen(或其他虚拟化软件)应该知道如何使用 PMC 寄存器,为来宾模拟它们并将请求转发到真实硬件。我不知道它是否在Xen中完成。但对于 Amazon AWS EC2 来说,仅实现基本硬件事件(并且仅在专用实例上)花费了数年时间,直到 2017 年 5 月才完成:http://www.brendangregg.com/blog/2017-05-04/the- pmcs-of-ec2.html “EC2 的 PMC:测量 IPC”,作者:Brendan Gregg:
性能监控计数器 (PMC) 现在可从 AWS EC2 云中的专用主机类型公开获取。全世界的 PMC 书呆子们欢欣鼓舞!(我们六个人。)...在这篇文章中,我将总结 EC2 中可用的 PMC,这些 PMC 仅适用于专用主机(例如 m4.16xl、i3.16xl),并且我将演示如何测量 IPC。请注意,PMC 也称为 HPC(硬件性能计数器)以及其他名称。
他还解释了 Xen 以及为什么在极少数情况下启用它们:
这在云中怎么可能呢?
您可能想知道云来宾如何读取 PMC。它的工作原理如下:PMC 通过用于配置的特权指令 RDMSR 和 WRMSR(我在 EC2 的 MSR 中写过)和用于读取的 RDPMC 进行管理。特权指令会导致访客退出,该退出由虚拟机管理程序处理。然后,虚拟机管理程序可以运行自己的代码,并在实际硬件允许的情况下配置 PMC,并在来宾之间进行上下文切换时保存和恢复其状态。
主流 Xen 几年前就通过其虚拟性能监控单元 (vPMU) 提供了支持。
vpmu=on
它是在 Xen 引导行中使用配置的。然而,它很少被打开。为什么?PMC 有数百个,并且都以 vpmu=on 的方式暴露。有些会带来安全风险吗?已经发表的许多论文都展示了 PMC 旁道攻击,即在向已知目标程序发送输入的同时测量某些 PMC,最终可能会泄露目标状态的一些信息。虽然这些在实践中不太可能发生,并且此类攻击不仅限于 PMC(例如,还有定时攻击),但您可以理解偏执的安全策略不希望默认启用所有 PMC。
所以,解决方案:
vpmu=on
启用启动选项的 Xen(仅当您不将此 PC 的虚拟访客提供给不受信任的用户时)PS:旧的perf list
没有检查任何内容,它只是打印所有已知的事件,甚至不支持/未实现的硬件事件。并且它没有打印真实的 CPU 事件集。libpfm4 有表格,并且 github.com/andikleen/pmu-tools 中有 Intel 特定的性能包装器 ocperf.py来使用 Intel 特定的名称。
归档时间: |
|
查看次数: |
1590 次 |
最近记录: |