intel-pmu相关内容

PERF_EVENT_PARANOID==1实际上对x86 PERF施加了什么限制?

较新的Linux内核有一个可调的sysfs/proc/sys/kernel/perf_event_paranoid,允许用户为非根用户调整perf_events的可用功能,数字越大越安全(提供的功能相应较少): 从kernel documenation我们可以看到各种值的以下行为: PERF_EVENT_PARANOID: 控制非特权用户对Performance Events系统的使 ..
发布时间:2022-03-23 18:46:30 其他开发

Mac OS 的 Perf stat 等价物?

在 Mac OS 上是否有等效的性能统计数据?我想为 CLI 命令做同样的事情,谷歌搜索没有产生任何结果. 解决方案 Mac OS X 中有 Instruments 工具来分析应用程序,包括硬件 PMU.默认是对 CPU 使用情况进行采样分析器.一些文档:https://en.wikipedia.org/wiki/Instruments_(software) https://help.ap ..
发布时间:2021-06-15 20:00:54 其他开发

英特尔性能监视器计数器可用于测量内存带宽吗?

英特尔 PMU 能否用于测量每核读/写内存带宽使用情况?这里的“内存"指的是 DRAM(即,不命中任何缓存级别). 解决方案 是的,这是可能的,尽管它不一定像编写普通 PMU 计数器那样简单. 一种方法是使用通过 PCI 空间访问的可编程内存控制器计数器.一个好的起点是在 pcm-memory 中的实现rel="noreferrer">pcm-memory.cpp.此应用程序向您显示 ..
发布时间:2021-06-15 19:30:27 其他开发

性能如何使用离线事件?

一些内置的 perf 事件被映射到非核心事件.例如, LLC-loads 和 LLC-load-misses 被映射到 OFFCORE_RESPONSE.事件.如此处所述,可以很容易地确定这一点.但是,这些脱机事件需要将某些值写入某些MSR寄存器以实际指定特定事件. perf 似乎正在使用一个名为此处对于SnB,其他体系结构均已关闭. 宏 INTEL_UEVENT_EXTRA_REG 是 hw_ ..
发布时间:2021-05-30 18:35:21 其他开发

Xcode仪器拆卸时间分析的可靠性

我已经使用Instrument的时间剖析器对代码进行了剖析,并放大了反汇编,这是其结果的摘要: 我不希望mov指令占用23.3%的时间,而div指令几乎不占用任何时间. 这使我相信这些结果是不可靠的. 这是真的吗?还是我只是遇到仪器错误?还是我需要使用一些选项来获得可靠的结果? 在这个问题上是否有任何参考资料? 解决方案 首先,很可能某些真正属于divss的计数被记入以后的说明 ..
发布时间:2020-11-29 18:33:04 其他开发

即使RS尚未完全满,RESOURCE_STALLS.RS事件是否有可能发生?

有关英特尔Broadwell的 RESOURCE_STALLS.RS 硬件性能事件的描述如下: 此事件计算由于保留站(RS)中缺少合格条目 而导致的停顿周期。这可能是由于RS溢出,或者是由于RS阵列的写端口分配 方案(由于每个RS条目具有两个写端口而不是四个写端口,因此由于RS阵列分配了 )导致的。不能使用,尽管RS并不是 满)。这计算了管道后端阻止从前端进行uop 交付的周期。 ..
发布时间:2020-10-11 00:05:38 其他开发

PERF_TYPE_HARDWARE和PERF_TYPE_HW_CACHE并发监视

我正在研究perf_event_open syscall之上的自定义实现. 该实现旨在为任意内核上的特定线程支持各种PERF_TYPE_HARDWARE,PERF_TYPE_SOFTWARE和PERF_TYPE_HW_CACHE事件. 在英特尔®64和IA-32体系结构软件开发人员手册3B 中,我看到以下测试CPU(Kaby Lake)的信息: 到目前为止,据我了解,一个人可以同 ..
发布时间:2020-07-01 02:48:05 其他开发

IB读取,IB写入,OB读取和OB写的含义是什么.它们作为英特尔®PCM的输出,同时监视PCIe带宽

我正在尝试使用Intel®Performance Counter Monitor(PCM)工具测量NIC设备的PCIe带宽.但是,我无法理解它的输出. 要测量PCIe带宽,我执行了二进制pcm-iio.该二进制文件有助于测量每个PCIe设备的监视器PCIe带宽.执行二进制文件后,我得到以下输出. |IIO Stack 2 - PCIe1 |IB write|IB r ..
发布时间:2020-05-25 18:37:03 其他开发

为什么仅在存在存储初始化循环时才对用户模式L1存储未命中事件进行计数?

摘要 考虑以下循环: loop: movl $0x1,(%rax) add $0x40,%rax cmp %rdx,%rax jne loop 其中,rax初始化为大于L3高速缓存大小的缓冲区的地址.每次迭代都会对下一个缓存行执行存储操作.我希望从L1D发送到L2的RFO请求的数量或多或少等于所访问的缓存行的数量.问题是,即使程序在用户模式下运行,我也只在计数 ..
发布时间:2020-05-25 18:31:15 其他开发

从内核读取性能寄存器

我想阅读某些性能计数器.我知道有一些perf之类的工具可以在用户空间本身中为我做到,我希望代码位于Linux内核中. 我想编写一种机制来监视Intel®Core™i7-3770 CPU上的性能计数器.在使用之上,我正在使用Ubuntu内核4.19.2.我已经从 easyperf 中获得了以下方法 这是我的代码的一部分,用于阅读说明. struct perf_event_attr ..
发布时间:2020-05-02 03:47:58 其他开发

如何从内核读取性能计数器?

我一直在用户空间中使用Linux性能工具.我想编写每次执行上下文切换时都会读取线程性能计数器的代码. 所需步骤为: 1)获得一种读取性能计数器寄存器的机制. 2)每次上下文切换后,从调度程序调用步骤(1). 由于无法确定要调用哪些函数来读取性能寄存器以及如何在执行事件时描述事件,因此我陷入了步骤(1). 我尝试浏览了文档以及这个问题如何做我在内核中使用性能计数器吗?. ..
发布时间:2020-05-02 03:47:44 其他开发