首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux性能监控,有任何方式来监控每个线程吗?

问Linux性能监控,有任何方式来监控每个线程吗?
EN

Stack Overflow用户
提问于 2015-01-21 02:39:53
回答 3查看 6K关注 0票数 3

我正在使用Linux,并使用C++进行编程。我已经能够使用perf_event访问性能计数器(指令计数、缓存丢失等)(实际上使用了这个链接中的程序:https://github.com/castl/easyperf)。

然而,现在我正在使用线程运行多线程应用程序,并且需要指令计数和循环来分别完成每个线程。对怎么做有什么想法吗?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-21 06:20:43

perf是您可以使用的系统分析工具。它不像https://github.com/castl/easyperf),它是一个库,在代码中使用它。按照这些步骤并使用它来分析您的程序:

  1. 在Ubuntu上安装perf。在不同的Linux发行版中,安装可能会有很大不同。您可以找到安装教程行。
  2. 只需运行您的程序并获取程序的所有线程id: ps -eLf | grep [application name]
  3. 根据手册页打开单独的终端并以perf stat -t [threadid]的形式运行perf: usage: perf stat [<options>] [<command>] -e,-事件事件选择器。使用“perf列表”列出可用的事件( -i )、--no-inherit子任务不继承计数器( -p )、--pid stat事件(对现有进程id -t )、--tid stat事件(在现有线程id -a上)、--所有CPU系统范围内的来自所有CPU -c的集合、-缩放/规格化计数器-v、--更详细(显示计数器打开错误等) -r、-重复重复命令并打印average + stddev (max: 100) -n,-空null run -不要启动任何计数器-B -大数字打印数千个分隔符

有一个关于分析文章的perf,你可以感觉到它。

票数 4
EN

Stack Overflow用户

发布于 2015-03-05 06:21:55

您可以使用标准工具访问perf_event -- perf (来自linux)。它可以与程序的所有线程一起工作,并报告概要配置文件和每个线程(pid/pid)配置文件。

这个配置文件不是精确的硬件计数器,而是采样每N个事件的结果,N调到99 Hz左右(每秒次数)。您还可以尝试-c 2000000选项来获得每200万次硬件事件的示例。例如,循环事件(完整列表- perf list或尝试perf stat ./program中列出的一些)

代码语言:javascript
复制
perf record -e cycles -F 99 ./program
perf record -e cycles -c 2000000 ./program

所有线程的摘要。-n将显示样品总数

代码语言:javascript
复制
perf report -n

pid (这里实际上使用了tids,因此它允许您选择任何线程)。

文本变量将列出用摘要示例计数记录的所有线程(使用-c 2000000,您可以将样本计数乘以200万,以估计线程的hw事件计数)

代码语言:javascript
复制
perf report -n -s pid | cat

或者类似ncurses的交互式变体,您可以选择任何线程并查看它自己的配置文件:

代码语言:javascript
复制
perf report -n -s pid
票数 2
EN

Stack Overflow用户

发布于 2015-01-21 03:37:00

请看一下perf工具文档这里,它支持您想要描述的一些事件(例如:instructions和cache-misses)。摘自上面链接的wiki页面:

perf工具可用于计算每个线程、每个进程、每个cpu或系统范围内的事件。在每线程模式下,计数器只监视指定线程的执行情况.当线程被调度出时,监视停止。当线程从一个处理器迁移到另一个处理器时,计数器将保存在当前处理器上,并在新处理器上还原。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28058710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档