草庐IT

ANDR-PERF-MPCTL

全部标签

c - 如何在 Linux 内核中进行分析或使用 perf_event*.[hc] 框架?

我注意到arch/arm/kernel下有一些分析源代码:perf_event.cperf_event_cpu.cperf_event_v6.cperf_event_v7.cperf_event_xscale.c我无法理解这些文件的层次结构,我该如何使用它们?我可以假设它们总是存在并在内核模块中使用它们吗?我的内核模块在Cortex-A7或Cortex-A15内核上运行。/arch/arm/kernel/目录下似乎有很多非常有用的东西,但没有关于功能的文档?怎么来的? 最佳答案 Perf_event确实提供了一个可以以编程方式使用的

linux - 是否可以在 docker 容器中运行 linux perf 工具

我尝试从容器发出以下命令并发现以下问题,可能是因为“-moby”内核版本。我们不能在linux内核版本中获得没有单词“-moby”的docker镜像。我尝试在装有ubuntu的VM上安装linuxperf工具,它成功了。#dockerrun-t-iubuntu:14.04/bin/bashroot@214daea94f4f:/#perfWARNING:perfnotfoundforkernel4.9.41Youmayneedtoinstallthefollowingpackagesforthisspecifickernel:linux-tools-4.9.41-mobylinux-cl

linux - perf kvm 无法打开 [],没有符号继续

我正在尝试使用perfkvm监控客户操作系统。我已经使用perfkvm记录选项记录了性能,并使用perfkvm报告生成了报告。为了记录和报告,我按照说明使用了guest操作系统的kallsyms和模块here.问题是,当我使用perfkvmreport生成报告时,很多“共享对象”是未知的,因为perfkvmreport找不到符号。下面是我运行报告时的终端输出。root@computer1:/#perfkvm--guest--guestmodules=modulesreport-iperf.data--force>wasteFailedtoopen[ext4],continuingwit

linux - 如何将 perf.data 缩小到时间子间隔

我使用linuxperf(perf_events)生成带有时间戳的perf.data文件。如何生成子时间间隔[i-start,i-end]内所有事件的报告?我可以将perf.data缩小到一个perf_subinterv.data文件,其中只有[i-start,i-end]中的事件吗?我需要执行此操作以每5分钟左右分析一次性能不佳的短时间间隔(2秒-6秒)。 最佳答案 大多数perf工具,包括perfreport,都支持按时间过滤:--time::Onlyanalyzesampleswithingiventimewindow:,.T

linux - perf get time elasped with field separator 选项

我有一个程序可以解析linux命令perf的输出。它需要使用选项-x,(字段分隔符选项。我想提取elapsedtime(不是task-time或cpu-clock)使用perf。但是,当我使用-x选项时,耗时不存在于输出中,我找不到相应的perf事件。这里是示例输出perfstatls============Performancecounterstatsfor'ls':0.934889task-clock(msec)#0.740CPUsutilized6context-switches#0.006M/sec0cpu-migrations#0.000K/sec261page-faults

linux - perf中的硬件事件和硬件缓存事件有什么区别?

当我输入perflist命令时,我发现有两种事件:Hardwareevent和HardwarecacheEvent。两者有什么区别?cache-misses和LLC-misses有什么区别?缓存未命中是否包括LLC未命中?当我测试程序时,perf工具会降低总体性能吗? 最佳答案 根据perf_event_open系统调用的manpage(由perf用户级实用程序内部使用):硬件事件:这表示内核提供的“通用”硬件事件之一硬件缓存事件:这表示硬件缓存事件。此外,我想知道这是否与[Intel®64andIA-32Architectures

linux - perf lock profile 用户空间是否互斥?

总结:perflock是否配置pthread_mutex?详细信息:perf工具有一个选项perflock。手册页说:Youcananalyzevariouslockbehavioursandstatisticswiththisperflockcommand.'perflockrecord'recordslockeventsbetweenstartandend.Andthiscommandproducesthefile"perf.data"whichcontainstracingresultsoflockevents.'perflocktrace'showsrawlockevents.

linux - perf_event_open 溢出信号

我想计算(或多或少)一段代码的确切指令数量。此外,我希望在通过特定数量的指令后收到信号。为此,我使用了由perf_event_open.我正在使用联机帮助页建议的第二种方式来实现溢出信号:SignaloverflowEventscanbesettodeliverasignalwhenathresholdiscrossed.Thesignalhandlerissetupusingthepoll(2),select(2),epoll(2)andfcntl(2),systemcalls.[...]TheotherwayisbyuseofthePERF_EVENT_IOC_REFRESHioc

c - 从 perf 获取用户空间堆栈信息

我目前正在尝试追踪我正在测试的PostgreSQL构建中的一些幻象I/O。它是一个多进程服务器,将磁盘I/O关联回特定的后端和查询并不简单。我认为Linux的perf工具将是这方面的理想选择,但我正在努力捕获blockI/O性能计数器指标并将它们与用户空间事件相关联。记录blockI/O请求和完成很容易,例如:sudoperfrecord-g-T-upostgres-e'block:block_rq_*'并且记录了用户空间pid,但是没有捕获内核或用户空间堆栈,也没有对用户空间进程的堆(比如查询文本)等位进行快照的能力。所以当你有pid时,您不知道该过程当时在做什么。只是perfscr

c - 使用 perf 分析 sleep 时间

我一直在寻找一种方法来找出我的程序花费时间的地方。我读了perftutorial并尝试按照那里的描述描述sleep时间。我写了最简单的程序来分析:#includeintmain(){sleep(10);return0;}然后我用perf执行它:$sudoperfrecord-esched:sched_stat_sleep-esched:sched_switch-esched:sched_process_exit-g-o~/perf.data.raw./a.out[perfrecord:Wokenup1timestowritedata][perfrecord:Capturedandwro