(转)简单的 Linux下的CPU性能瓶颈分析

标签: linux cpu 性能 | 发表时间:2013-10-27 08:59 | 作者:
出处:http://jackyrong.iteye.com
http://www.taobaotest.com/blogs/2508



Linux下的CPU性能瓶颈分析
以夕 发表于:2013-09-29 浏览:2455次 评论:0次 所属分类: 性能测试
问题描述:
        在对notify执行性能测试时发现cpu负载突然飙高,cpu利用率高达95%。这时候就要排查是哪些线程消耗了cpu,并从代码层找到占用cpu的“罪魁祸首”。

步骤:
    1.     先用ps+grep找到被测试的进程pid。
    比如:ps –ef|grep notify,得到pid为29128。

    2.     执行top -H -p <pid>,可显示出该进程下的所有线程。找到占用cpu最多的子线程pid,并将其转换为16进制。
    比如:top -H -p 29128,看到notify的所有子线程。其中,%CPU 比重最大的子线程pid为879,转换成16进制是36f。

    3.     执行jstack <pid>|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相关堆栈信息隐藏>
      ……

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

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

已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [linux cpu 性能] 推荐:

Linux中常用的监控CPU整体性能的工具

- - CSDN博客编程语言推荐文章
Linux中常用的监控CPU整体性能的工具有:. top:命令是一个优秀的交互式实用工具,用于监视性能. 它提供关于整体Linux性能的几个概要行,但是报告进程信息才是top真正的长处. 可以广泛自定义进程显示,也可以添加字段,按照不同指标排序进程列表,甚至从top注销进程. 显示的信息同ps接近,但是top可以了解到CPU消耗,可以根据用户指定的时间来更新显示.

(转)简单的 Linux下的CPU性能瓶颈分析

- - jackyrong
Linux下的CPU性能瓶颈分析. 以夕 发表于:2013-09-29 浏览:2455次 评论:0次 所属分类: 性能测试.         在对notify执行性能测试时发现cpu负载突然飙高,cpu利用率高达95%. 这时候就要排查是哪些线程消耗了cpu,并从代码层找到占用cpu的“罪魁祸首”.

Linux - 系统指标 CPU load - 简书

- -
cpu load通常做为一个机器负载的衡量指标. cpu load是对使用或者等待cpu进程的统计(数量的累加). 每一个使用(using)或者等待(waiting)CPU的进程(process),都会使load值+1. 每一个结束的(teminates)进程,都会使load值-1. 所谓使用CPU的进程,是指状态为.

Linux下操纵CPU曲线绘制心形

- TheLover_Z - 博客园-首页原创精华区
不久之前看了「编程之美」,里面有在windows下操纵CPU绘制正弦曲线的示例程序. 思路很简单,但是需要知道几个windows的API函数. 刚开始我想尝试在windows下绘制心形,不过没能做到,原因是CPU曲线是CPU利用率和时间构成的函数的关系,心形是一个封闭图形,不可能是一个函数,所以至少需要两条CPU曲线才能绘制(这需要你的机器为双核或多核或者多个CPU),然而windows的任务管理器,我没能找到将两条CPU曲线绘制在同一图表下的方法,所以没能成功.

动态切换 Linux 使用的 CPU 数量

- 李帅 - Wow! Ubuntu
由于要测试一些代码,其运行结果会受到多核并行的影响,所以希望能够调整使用的 CPU 数量. 网络上之前看到的方法是在内核的启动参数上添加一个 maxcpus,但是如果这样的话每切换一次都要重启一次,是在太麻烦了. 想想 Linux 应该是很强大的,所以可以动态修改 CPU 数量才对. 无意中看到 Linux 代码的 Documentation 文件夹下有个文件叫做 cpu-hotplug.txt,于是就看了一下,发现可以在 /sys/devices/system/cpu 看到代表各 CPU 的文件夹按照 cpuX 的命名方式,如 cpu0、cpu1、cpu2 等.

Linux中模拟诊断Oracle高CPU占用

- - CSDN博客推荐文章
1,在一个session中模拟CPU高使用率,如下:. 2,在shell窗口用top命令查看CPU使用情况:                                                                                                            .

Linux HotSopt虚拟机GC线程的CPU占用率

- - ImportNew
下面的问题将会检验你有关Linux系统上的Java程序的垃圾回收和High CPU排错的知识. 在过度调用GC或及CPU占用率过高的时候,这种排错技术是至关重要的. 假设你没有使用像是 Compuware dynaTrace或者JVisualVMware这样先进的监视工具. 有关于这些工具的使用教程将会在以后发布,但是请先确保自己掌握了基础的排错原则.

Linux下java进程CPU占用率高-分析方法

- - Linux - 操作系统 - ITeye博客
今天登陆同事的一台gateway 开始以为hive环境登陆不了了,仔细一看看了下是因为机器很卡,我每次等几秒没登陆就ctrl+c了,看了下是有个java进程cpu:340.4%  mem:14.6%. 一般解决方法是通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用.

Linux下如何查看高CPU占用率线程

- - C++博客-首页原创精华区
在 Linux 下 top 工具可以显示 cpu 的平均利用率(user,nice,system,idle,iowait,irq,softirq,etc.),可以显示每个 cpu 的利用率. 但是无法显示每个线程的 cpu 利用率情况,. 这时就可能出现这种情况,总的 cpu 利用率中 user 或 system 很高,但是用进程的 cpu 占用率进行排序时,没有进程的 user 或 system 与之对应.

java问题导致linux负载、cpu过高如何定位

- - CSDN博客推荐文章
1.用top找到最耗资源的进程id. 2.查询最消耗资源的java进程. 3.打印java 栈 信息. 4.将耗资源的javaPID转换为16进制(5920转1720<16进制>  去百度找 :十进制转十六进制). PID 对应 堆栈中的nid(16进制). 去stack.txt 中查找nid=1720的问题.