为什么我的Linux命令'perf list'不支持像'branches'这样的硬件事件?

rvpgvaaj  于 11个月前  发布在  Linux
关注(0)|答案(1)|浏览(150)

我正在学习performance-engineering-of-software-systems-fall-2018和做检查项目1。使用ubuntu在免费的Azure为学生,但它不支持硬件事件,如'分支'。

$ 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]

字符串
它似乎不支持硬件事件,如分支未命中,缓存未命中。
也许我应该在自己的桌面上构建VM,但我没有足够的磁盘空间:(

4szc88ey

4szc88ey1#

正如评论中所述,为了运行您的评估,您需要一个合适的硬件。特别是,一个允许您的论文中描述的功能和事件的硬件。
您正在使用的Azure VM等虚拟硬件隔离了访客操作系统(您的操作系统),不允许它完全控制连接的硬件。
在这种情况下,PMU事件不会暴露,因为它们会允许VM的用户中断主机。
此外,请记住,虚拟化软件采用了大量的优化和快捷方式,以实现与真实的硬件同等的性能,因此您可以观察到与物理专用硬件不同的行为。
你应该尝试一台真实的个人电脑,无论是通过双启动还是使用现场usb棒。

相关问题