Linux下的CPU性能瓶颈分析案例

news/2025/1/12 20:49:11/

问题描述:

在对notify执行性能测试时发现cpu负载突然飙高,cpu利用率高达95%。这时候就要排查是哪些线程消耗了cpu,并从代码层找到占用cpu的“罪魁祸首”。

 

步骤:

1. 先用ps+grep找到被测试的进程pid。

比如:ps –ef|grep notify,得到pid为29128。

 

2. 执行top -H -p,可显示出该进程下的所有线程。找到占用cpu最多的子线程pid,并将其转换为16进制。

比如:top -H -p 29128,看到notify的所有子线程。其中,%CPU 比重最大的子线程pid为879,转换成16进制是36f。

 

3. 执行jstack|less,查找子线程pid就能看到堆栈信息了。

比如:jstack 29128|less,再查找nid=0x36f,看到堆栈如下

 

"dispatcherTPConfig-6-thread-22" prio=10 tid=0x000000004dd84000 nid=0x36f runnable [0x000000004ae18000]

java.lang.Thread.State: RUNNABLE

at java.util.ArrayList.contains(ArrayList.java:199)

<notify相关堆栈信息隐藏< span="">>

……

 

 

4. 跟进堆栈中的方法信息定位到代码,接下来就是分析调优了。

 

后记:

用此方法可以简单、快速定位cpu消耗的原因,但是准确度不够理想。如果想深入查看消耗cpu top10的方法,可以使用专门的性能分析工具,例如oprofile、perf都可以实现。

转载于:https://www.cnblogs.com/shengs/p/4771905.html


http://www.ppmy.cn/news/517561.html

相关文章

汇编学习,错误汇总

一、error A2010: Syntax error 语法错误&#xff0c;写错程序了 二、error A2105: Expected: instruction or directive 这个就是告诉你命令写错了&#xff0c;看看你是不是把某个mov写成moc了&#xff08;我就是这样找了半天&#xff0c;却不知道masm已经提示了哪行出问题&…

dosbox 自动运行_如何使用DOSBox在新计算机上运行90年代的老旧游戏

dosbox 自动运行 I was over at my parents house for the Christmas Holiday and my mom pulled out a bunch of old discs and software from 20+ years ago. One gaame was "Star Trek: Judgment Rites" from

安装SQL2000时出现 ntvdm遇到一个硬错误的处理办法

不要去运行AUTORUN.EXE 运行这个就会提示&#xff1a;“NTVDM遇到一个硬错误”导致SQL安装不成功&#xff0c;其实直接去运行 SETUP.BAT 就可以安装了 &#xff1b;假如是下的4合一的版本或者是4合1的光碟您只要在 其他目录下面找到 SETUP.BAT 也是可以的 DEVELOPER、ENTERPRIS…

安装VC,NTVDM CPU 遇到无效指令 --绝对能用的解决方法

现象&#xff1a; 在XP SP3环境下安装VC6EN出现问题&#xff0c;提示&#xff1a;16位windows子系统&#xff0c;NTVDM遇到无效指令。 CS&#xff1a;05e6 IP&#xff1a;0138 OP&#xff1a;63 00 74 00 4e 选择“关闭”终止应用程序。 以前在此机器上没有安装过VC或其他VS&am…

打开 codeblocks 出现 ntvdm.exe 停止工作

打开codeblocks出现错误&#xff0c;但是不影响使用。 不知道是哪里出了问题。 转载于:https://www.cnblogs.com/westfly/archive/2012/03/05/2380067.html

NTVDM遇到一个硬错误

友机器一运行批处理就出这个提示.于是照下面办法做了.问题解决. 描述: Windows Virtual Machine是为了兼容旧的16位Windows和DOS程序而设置的虚拟机。 常见错误: N/A 是否为系统进程: 否 启动项直接禁掉就行了 如果还出来就按F8进安全模式查毒 在C:\WINDOWS\system32下找到n…

vb安装过程中 ntvdm.exe[9696]中发生未处理的win32异常 vb代写

最近电脑总是出问题导致我的学习效率很低&#xff0c;前几天在用VB6.0的时候有个知识点不太熟悉&#xff0c;于是按F1发现不会出来帮助文档。突然想到重新装系统之后忘记了安装MSDN帮助插件&#xff0c;就在我安装这个软件的时候发现电脑总是报错&#xff0c;而且感觉报错的内容…

ntvdm.exe

进程文件&#xff1a; ntvdm 或者 ntvdm.exe 进程名称&#xff1a; Windows 16-bit Virtual Machine 描述&#xff1a; ntvdm.exe是Windows 16位虚拟机的一部分。该进程用于使16位的进程能够运行在32位的系统环境下。这个程序对你系统的正常运行是非常重要的。 出品者&#xff…