- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为特定应用程序运行 C++ 基准测试。在此测试中,我在关键部分之前打开性能计数器文件 (__NR_perf_event_open 系统调用),继续该部分,然后在读取指定指标(指令、周期、分支、缓存丢失等)之后。
我确认这需要在 sudo 下运行,因为该进程需要 CAP_PERFCOUNT 功能。我还必须验证 /proc/sys/kernel/perf_event_paranoid
设置为大于 2 的数字,这似乎总是 Ubuntu 20.04.3 和内核 5.11.0 的情况,这是我跨测试标准化了操作系统。
此设置适用于我所有的本地机器。然而,在云端,它仅适用于某些实例,例如 m5zn.6xlarge(英特尔至强铂金 8252C)。它不适用于 t3.medium、c3.4xlarge、c5a.8xlarge。
它们的 AMI 都是相同的 ami-09e67e426f25ce0d7。
验证此行为的一种简单方法是运行以下命令:
sudo perf stat /bin/sleep 1
在 m5zn 盒子上我会看到:
Performance counter stats for '/bin/sleep 1':
0.54 msec task-clock # 0.001 CPUs utiliz
1 context-switches # 0.002 M/sec
1 cpu-migrations # 0.002 M/sec
75 page-faults # 0.139 M/sec
2191485 cycles # 4.070 GHz
1292564 instructions # 0.59 insn per cyc
258373 branches # 479.860 M/sec
11090 branch-misses # 4.29% of all branc
1.000902741 seconds time elapsed
0.000889000 seconds user
0.000000000 seconds sys
在其他盒子上我会看到:
Performance counter stats for '/bin/sleep 1':
0.62 msec task-clock # 0.001 CPUs utilized
2 context-switches # 0.003 M/sec
0 cpu-migrations # 0.000 K/sec
76 page-faults # 0.124 M/sec
<not supported> cycles
<not supported> instructions
<not supported> branches
<not supported> branch-misses
1.002488031 seconds time elapsed
0.000930000 seconds user
0.000000000 seconds sys
Perf with not supported values
我怀疑 m5zn.6xlarge 由真实实例支持,而其他实例是共享实例。我的怀疑是否正确?
我可以启动哪些实例来为我提供性能计数器 PMU 支持?
谢谢!
最佳答案
经过一些研究,我发现由于所有 Amazon AWS 实例都是虚拟实例,因此没有任何客户操作系统可以直接访问硬件性能计数器(PMC 或 PMU)。
guest 操作系统只能通过称为虚拟 PMU (vPMU) 的内核驱动程序读取性能计数器,该驱动程序仅适用于某些英特尔至强 CPU。
因此在我尝试的实例列表中,只有带有 Intel Platinum 8252 的 m5zn 具有受支持的 CPU。
很容易通过运行来检查客户操作系统是否支持vPMU
cat /proc/cpuinfo | grep arch_perfmon
也可以在 smpboot 之后立即检查 dmesg 输出:
[ 0.916264] smpboot: CPU0: Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz (family: 0x6, model: 0x55, stepping: 0x4)
[ 0.916410] Performance Events: unsupported p6 CPU model 85 no PMU driver, software events only.
在 AWS 上,经验法则是您只能在最大的实例或占用整个套接字的实例上获得 vPMU。
https://oavdeev.github.io/posts/vpmu_support_z1d/
目前这些实例支持 vPMU:
i3.metal
c5.9xlarge
c5.18xlarge
m4.16xlarge
m5.12xlarge
m5.24xlarge
r5.12xlarge
r5.24xlarge
f1.16xlarge
h1.16xlarge
i3.16xlarge
p2.16xlarge
p3.16xlarge
r4.16xlarge
x1.32xlarge
c5d.9xlarge
c5d.18xlarge
m5d.12xlarge
m5d.24xlarge
r5d.12xlarge
r5d.24xlarge
x1e.32xlarge
关于amazon-web-services - PMU x86-64 性能计数器未显示在 AWS 下的性能中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69395912/
我计划测量 L1、L2、L3 未命中分支预测未命中的 PMU 计数器,我已阅读相关的英特尔文档,但我不确定以下情况。有人可以澄清一下吗? //assume PMU reset and PERFEVTS
我想从用户空间访问 PMU,但在我的一个系统上,PMUSERENR 设置为 0,这使得 PMU 的其余部分无法访问。这个寄存器在 EL0 是 RO,所以如果我试图设置它,我会得到一条非法指令。有什么办
我正在尝试使用 pmu 测量我的代码在 linux 内核中的性能。首先,我想测试 pmu 因此在内核中创建了简单的一对操作循环。我将它置于禁用中断的自旋锁下,这样我的测试代码就不会被抢占。然后我打印周
我按照 CPI breakdown model for POWER8 对在 IBM POWER8 服务器上运行的应用程序执行性能分析. 我知道我需要减少停顿的百分比,例如,缓存未命中 (PM_CMPL
我在我的 Lenovo X1 笔记本电脑上运行 KVM/QEMU。 guest 操作系统是 Ubuntu 15.04 x86_64。 现在,我想在客户操作系统中运行“perf”命令,但我在 dmesg
我想每 1 毫秒访问一次特定 PID 的硬件性能计数器,并将输出保存到文本文件。 下面的代码会收集系统中所有进程并行运行一段时间的数据,然后输出到一个文本文件中。 #!/bin/sh
不确定这是不是该问的地方,但我真的需要帮助。 我正在尝试在 Galaxy Nexus i9250 Android v4.3 CPU ARMv7 上收集一些数据。我正在尝试使用 ARM Streamli
我正在尝试读取 Intel Xeon gold(Skylake 一代)处理器上 Linux 内核模块中的 LLC 缓存未命中硬件计数器。以下代码的结果始终为零: #define PMC_ESEL_UM
我有一个运行 Linux 的 Raspberry Pi 3。 RPi3 具有四核 cortex-A53,带有性能监控单元 (PMU) v3。我执行 cyclictest 程序来做一些实时测试。 Cyc
我正在使用 Oprofile 来分析一些基准测试,我正在专门寻找缓存问题。我使用英特尔 SDM 第 3 卷(从 2013 年 3 月开始)作为选择要监视的事件的指南......但这很痛苦......
我正在为特定应用程序运行 C++ 基准测试。在此测试中,我在关键部分之前打开性能计数器文件 (__NR_perf_event_open 系统调用),继续该部分,然后在读取指定指标(指令、周期、分支、缓
我是一名优秀的程序员,十分优秀!