您的位置:首页 > 其它

性能测试——处理器分析方法

2016-07-12 08:57 351 查看

处理器分析方法

处理器(CPU)也可能是系统的瓶颈,如下是针对处理器进行分析的步骤:

查看System\%Total Processor Time性能计数器的计数值

该计数值用于体现服务器整体的处理器使用率,对多处理器系统来说,该值体现了所有CPU的平均使用率。该值的数值持续超过90%,则说明整个系统面临着处理器方面的瓶颈,需要通过增加处理器来提高性能。

PS:由于操作系统本身的特性,在某些多CPU系统中,该数据本身并不大,但若CPU之间的负载情况极为不均衡,也应该视作系统产生了处理器方面的瓶颈。

查看每个CPU的Processor\%ProcessorTime和Processor\%UserTimes和Processor\%PrivilegedTime

Processor\%User Time是指系统的非核心操作系统消耗的CPU时间,如果该值较大,可以考虑是否通过算法优化等方法来降低该值。如果该服务器是数据库服务器,Processor\%User
Time
值大的原因很可能是数据库的排序或函数操作消耗了过多的CPU时间,此时可以考虑对数据库系统进行优化。

研究系统处理器瓶颈

查看System\Processor Queue Length计数器的值,当该计数器的值大于CPU数量的总数加1时,说明处理器阻塞。处理器的%Process
Time
值很高时,一般都伴随着处理器阻塞,但产生处理器阻塞时,Processor\%Process Time计数器的值并不一定很大,此时就需要查看处理器阻塞的原因。

%DPC Time该值越低越好,在多处理器系统中,如果该值大于50%并且Processor\%Process
Time值非常高
,则考虑加入一个网卡来提高性能

Linux/UNIX处理器分析方法

处理器(CPU)也可能是系统的瓶颈,如下是针对处理器进行分析的步骤:

查看Processor\%Idle Time性能计数器的值

该计数器描述的是CPU总的空闲时间。如果该值持续低于10%,表明瓶颈是CPU。可以考增加一个处理器或换一个更快的处理器。

PS:该计数器的值可以通过top命令输出结果。

查看Processor\%User Time
和 System\%User Time、System\CPU context switches

Processor\%User Time是指系统非内核操作消耗的CPU时间。一般来说如果系统中使用了大量的算法和复杂的计算操作,该值会比较大。

System\%User Time系统上所有处理器执行非内核操作的平均时间的百分比,该值反映了用于有用作业上的时间的比率

System\CPU context switches是CPU上下文切换。在vmstat的结果中显示为CS。

例如:CPU 100
6570 User Time,%-%05
Idle Time;大量的上下文切换是可以接受的。

PS:查看processor信息用top命令,system用vmstat应用

可运行队列

每个可运行队列不应该超过1-3个线程(每处理器)。

PS:Vmstat中一些参数介绍:

r CPU
,被
IO ,被处理过的中断数

cs,用户占用的百分比

sys CPU
,所有可运行的线程被
IOCPU
,完全空闲的百分比

PS:mpstat输出多个处理器数据:

对CPU使用率过高的进程中的所有线程进行排序的命令:

ps H -e -o pid,tid,pcpu,cmd --sort=pcpu |grep xxx

单线程CPU使用过高可能有哪些原因?

产生死循环

首先查一下出问题进程的pid: ps -ef | grep icdn

然后top命令查看线程信息:top
-H -p PID号

接下来,我们用gdb来attach目标进程:gdb
icdn PID号(与2一样)

gdb已经列出了各线程正在执行的函数,记住行首标号

执行
thread 行首标号: thread 线程id

然后执行:bt

最后:detach()

调试完指定进程后,可以运行detach命令来让GDB释放该进程,该进程得以继续运行。当回车时,detach不会重复。当执行完detach后,进程和GDB不再相关,GDB可以attach其他进程。

线程太多

机器配置差



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: