perf相关内容

关于如何对PEBS(基于精确事件的采样)计数器进行编程的良好资源?

我一直试图记录程序的所有内存访问,在我看来,这似乎是不可能的.我一直在尝试查看我可以在多大程度上记录内存访问的大部分(如果不是全部).因此,我希望对PEBS计数器进行编程,以便可以看到所收集的内存访问样本数量的变化.我想知道是否可以通过修改PEBS计数器的计数器重置值来做到这一点. (通常为零,但我想将其设置为更高的值) 因此,我一直希望自己编写这些小便计数器.有没有人有过操纵PEBS柜台的 ..
发布时间:2020-05-08 19:02:42 其他开发

从内核读取性能寄存器

我想阅读某些性能计数器.我知道有一些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 其他开发

基于Linux内核标头中的功能的条件编译

考虑使用从导出到用户空间的Linux标头中的某些功能的情况,例如由于成员已添加到perf_event_attr,例如如果这些新功能在本地可用,我如何编写可以编译和使用这些新功能的源代码,但是如果这些新功能不使用和不使用它们,则如何优雅地回退? 尤其是如何在预处理器中检测这些东西是否可用? 我以这个perf_event_attr为例,但是我的问题是一个普遍的问题,因为结构成员,新结构,定 ..
发布时间:2020-05-02 03:45:26 服务器开发

发送重新安排中断的性能事件?

当一个进程唤醒同一内核上的另一个进程时,将使用两个PID生成sched:sched_wakeup事件.这对于查找流程之间的关系非常有用. 当一个进程在另一个内核上唤醒另一个进程时,第二个内核会在任何一个不幸捕获IPI的进程上生成irq_vectors:reschedule_entry事件,然后是该受害进程的sched:sched_wakeup事件. 我找不到在唤醒的第一个内核上的原始进 ..
发布时间:2020-05-02 03:41:34 其他开发

了解性能报告

我一直在从事一些对时间敏感的项目.由于时间上一些意外的尖峰,我不得不更深入一些. 场景: 我有一个固定在CPU内核上的内核模块.该CPU内核也在内核引导参数的isolcpus中列出.这是我对cmdline中的内核引导参数所做的 intel_iommu=on iommu=pt default_hugepagesz=1G hugepagesz=1G hugepages=1 intel ..
发布时间:2020-05-02 03:39:19 其他开发

linux的perf实用程序如何理解堆栈跟踪?

Brendan Gregg著名地使用Linux的perf实用程序来生成c/c ++,jvm代码,nodejs代码等的火焰图. Linux内核本身可以理解堆栈跟踪吗?即使在使用完全不同的语言编写程序时,我在哪里可以了解更多有关该工具如何反思进程的堆栈痕迹的信息? 解决方案 Gregg在perf中提供了有关堆栈跟踪的简短介绍: http://www.brendangregg.com/pe ..
发布时间:2020-05-02 03:33:20 其他开发

Linux上的线程利用率分析

Linux性能工具非常适合在CPU周期中查找热点并优化这些热点.但是一旦将某些部分并行化,就很难发现顺序的部分,因为它们占用了大量的时间,但并不一定要占用很多CPU周期(并行的部分已经在燃烧这些部分了). 为避免XY问题:我的基本动机是在多线程代码中查找顺序瓶颈.尽管由于 amdahl的缘故,但是并行阶段可以轻松地控制总体CPU周期统计信息法律. 对于Java应用程序来说,使用带有线程 ..
发布时间:2020-05-01 11:02:30 服务器开发

有没有一种方法可以将kptr_restrict设置为0?

我目前在运行linux perf时遇到问题,主要是因为/proc/sys/kernel/kptr_restrict当前设置为1. 但是,如果我尝试通过如下方式将0回显到/proc/sys/kernel/kptr_restrict ... echo 0 > /proc/sys/kernel/kptr_restrict 我收到一个权限被拒绝的错误.我也不认为可以更改其权限. 是否 ..
发布时间:2020-05-01 11:01:55 服务器开发

perf_event_open溢出信号

我想计算一些代码的(或多或少)确切的指令数量.此外,我想在传递特定数量的指令后收到信号. 为此,我使用了由提供的溢出信号行为 perf_event_open . 我正在使用手册页提出的第二种方法来实现溢出信号: 信号溢出 可以将事件设置为在阈值达到阈值时传递信号 越过.信号处理程序是使用poll(2),select(2), epoll(2)和fcntl(2),系统调用. ..
发布时间:2020-05-01 10:52:10 服务器开发

记录Linux中任何可执行文件/进程的所有内存访问

我一直在寻找一种方法来记录Linux中进程/执行的所有内存访问.我知道以前在这里曾对此主题提出过这样的问题 在Linux中记录整个系统的内存访问足迹 但是我想知道是否有执行此活动的非仪器工具.我不为此目的寻找QEMU/VALGRIND ,因为它会有点慢,并且我希望尽可能少的开销. 为此,我查看了perf mem和PEBS事件(如cpu/mem-loads/pp),但我发现它们将仅 ..
发布时间:2020-05-01 10:06:04 服务器开发