为什么我的 linux 命令“perf list”不支持“branches”等硬件事件?

问题描述 投票:0回答:1

我正在学习 软件系统性能工程-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]

它似乎不支持硬件事件,例如分支未命中,缓存未命中。

也许我应该在自己的桌面上构建虚拟机,但我没有足够的磁盘空间:(

linux perf
1个回答
0
投票

如评论中所述,为了运行评估,您需要合适的硬件。特别是,它允许您论文中描述的功能和事件。

您使用的 Azure VM 等虚拟硬件会隔离来宾操作系统(您的),并且不允许其完全控制连接的硬件。

在这种情况下,PMU 事件不会暴露,因为它们会允许虚拟机的用户破坏主机。

此外,请记住,虚拟化软件采用了大量的优化和快捷方式,以便实现与真实硬件相同的性能,因此您可以观察到与物理专用硬件不同的行为。

您应该尝试使用真正的 PC,通过双启动或使用实时 USB 记忆棒。

© www.soinside.com 2019 - 2024. All rights reserved.