当前位置: 首页 > 面试题库 >

PERF STAT不计算内存负载,但计算内存存储

端木高卓
2023-03-14
问题内容

Linux内核: 4.10.0-20(通用)(也在4.11.3上尝试过)

Ubuntu的: 17.04

我一直在尝试使用收集内存访问的统计信息perf stat。我能够 收集内存存储的统计信息,但内存负载的计数返回0值

以下是内存存储的详细信息:

perf stat -e cpu/mem-stores/u ./libquantum_base.arnab 100
N = 100, 37 qubits required
Random seed: 33
Measured 3277 (0.200012), fractional approximation is 1/5.
Odd denominator, trying to expand by 2.
Possible period is 10.
100 = 4 * 25

 Performance counter stats for './libquantum_base.arnab 100':

       158,115,510      cpu/mem-stores/u

       0.559922797 seconds time elapsed

对于内存负载,我 得到一个0计数 ,如下所示:-

perf stat -e cpu/mem-loads/u ./libquantum_base.arnab 100
N = 100, 37 qubits required
Random seed: 33
Measured 3277 (0.200012), fractional approximation is 1/5.
Odd denominator, trying to expand by 2.
Possible period is 10.
100 = 4 * 25

 Performance counter stats for './libquantum_base.arnab 100':

                 0      cpu/mem-loads/u

       0.563806170 seconds time elapsed

我不明白为什么这算不上正确。 我是否应该以任何方式使用其他事件来获取正确的数据


问题答案:

我已使用Broadwell(CPU e5-2620)服务器计算机来收集以下所有事件。

要收集内存加载事件,我必须使用数字事件值。我基本上运行了以下命令-

./perf record -e "r81d0:u" -c 1 -d -m 128 ../../.././libquantum_base 20

在此,r81d0表示用于计算“所有已退出指令中的内存负载”的原始事件。可以理解的“ u”表示用户空间。

另一方面,以下命令

./perf record -e "r82d0:u" -c 1 -d -m 128 ../../.././libquantum_base 20

具有“ r82d0:u”作为原始事件,表示“在用户空间中退休的所有指令中的存储器”。



 类似资料:
  • 问题内容: 我有一个Map(String,String),我想找到一个条目和Map的内存大小。我读的地方,仪表可能是有用的(仪器)。有人有主意吗? 提前致谢。 问题答案: 对于64位JVM,空白实例应为24字节,对于32位JVM,空白实例应为12字节。这是我发现有用的@PeterLawrey的技术,基于MemoryUsageExamplesTest:

  • 我想计算JVM堆的使用内存。我在一个示例应用程序中做了以下操作。 > 将JVM堆大小设置为Xms=200mb和Xmx=200mb。 使用Java运行时应用编程接口进行了如下计算。它给了我以下示例程序的输出。 运行时总内存:192413696 运行时最大内存:192413696 运行时可用内存:39734096 运行时可用内存=(最大-总空闲)=39734096 已用内存百分比=100*(最大可用)

  • 虚拟内存 分页系统地址映射 页面置换算法 1. 最佳 2. 最近最久未使用 3. 最近未使用 4. 先进先出 5. 第二次机会算法 6. 时钟 分段 段页式 分页与分段的比较 虚拟内存 虚拟内存的目的是为了让物理内存扩充成更大的逻辑内存,从而让程序获得更多的可用内存。 为了更好的管理内存,操作系统将内存抽象成地址空间。每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一页。这些页被

  • 问题内容: 如果我有: 和 通常 一个数组 如何同时考虑引用变量来计算实际内存使用量? 问题答案: 如果您想要一个准确的答案,那就不能了。至少不是以任何简单的方式。该主题说明更多。 Bragaadeesh和Bakkal的答案的麻烦在于它们忽略了开销。每个数组还存储诸如它具有的维数,它有多长时间以及垃圾收集器使用的一些东西之类的东西。 对于简单的估算,应该使用其他答案中的计算并加上100-200字节

  • --Executor-Cores 5--Executor-Memory 35GB--num-Executors 6--conf spark.dynamicallocation.enabled=false 执行器内存计算(236 GB/6执行器)*0.9=35 GB 当我提交一个spark作业并查看spark UI或控制台的执行器度量时,这些数字非常不同,我对如何计算和提供这些度量感到困惑。执行器只