我正在学习 软件系统性能工程-2018 年秋季 并做检查项目 1。 在免费的 Azure 中为学生使用 ubuntu,但它不支持“分支”等硬件事件。
$ uname -r
6.2.0-1018-azure
$ perf --version
perf version 6.2.16
$ lscpu
...
model :Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz
Hypervisor vendor : Microsoft
Virtualization type : full
...
$ perf list
List of pre-defined events (to be used in -e or -M):
alignment-faults [Software event]
bpf-output [Software event]
cgroup-switches [Software event]
context-switches OR cs [Software event]
cpu-clock [Software event]
cpu-migrations OR migrations [Software event]
dummy [Software event]
emulation-faults [Software event]
major-faults [Software event]
minor-faults [Software event]
page-faults OR faults [Software event]
task-clock [Software event]
duration_time [Tool event]
user_time [Tool event]
system_time [Tool event]
msr/pperf/ [Kernel PMU event]
msr/smi/ [Kernel PMU event]
msr/tsc/ [Kernel PMU event]
rNNN [Raw hardware event descriptor]
cpu/t1=v1[,t2=v2,t3 ...]/modifier [Raw hardware event descriptor]
[(see 'man perf-list' on how to encode it)]
mem:<addr>[/len][:access] [Hardware breakpoint]
sdt_libc:cond_broadcast [SDT event]
sdt_libc:cond_destroy [SDT event]
sdt_libc:cond_init [SDT event]
sdt_libc:cond_signal [SDT event]
sdt_libc:cond_wait [SDT event]
sdt_libc:lll_lock_wait [SDT event]
sdt_libc:lll_lock_wait_private [SDT event]
sdt_libc:longjmp [SDT event]
sdt_libc:longjmp_target [SDT event]
sdt_libc:memory_arena_new [SDT event]
它似乎不支持硬件事件,例如分支未命中,缓存未命中。
也许我应该在自己的桌面上构建虚拟机,但我没有足够的磁盘空间:(
如评论中所述,为了运行评估,您需要合适的硬件。特别是,它允许您论文中描述的功能和事件。
您使用的 Azure VM 等虚拟硬件会隔离来宾操作系统(您的),并且不允许其完全控制连接的硬件。
在这种情况下,PMU 事件不会暴露,因为它们会允许虚拟机的用户破坏主机。
此外,请记住,虚拟化软件采用了大量的优化和快捷方式,以便实现与真实硬件相同的性能,因此您可以观察到与物理专用硬件不同的行为。
您应该尝试使用真正的 PC,通过双启动或使用实时 USB 记忆棒。