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

来源:互联网 发布:编程判断字母大小写 编辑:程序博客网 时间:2024/05/17 21:17

                            处理器分析方法


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


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

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

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

  2. 查看每个CPUProcessor\%ProcessorTimeProcessor\%UserTimesProcessor\%PrivilegedTime

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

  3. 研究系统处理器瓶颈

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

     


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

Linux/UNIX处理器分析方法

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

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

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

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


  1. 查看Processor\%User Time System\%User TimeSystem\CPU context switches

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

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

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

    例如:CPU 1006570 User Time%-05 Idle Time大量的上下文切换是可以接受的

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

  1. 可运行队列

    每个可运行队列不应该超过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使用过高可能有哪些原因?

  1. 产生死循环

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

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

  3. 接下来,我们用gdbattach目标进程gdb icdn PID号(与2一样)
    gdb已经列出了各线程正在执行的函数,记住行首标号

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

  5. 然后执行:bt

  6. 最后:detach()

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

  1. 线程太多

  2. 机器配置差




0 0
原创粉丝点击