http://www.4oa.com/Article/html/5/28/403/2005/11179.html

性能调试---(三)CPU性能分析

2005-5-27 0:12:29  来源:本站整理  作者:不详 【 投递文章
内容提要:1:CPU 的体系结构和工作原理2:操作系统和进程3:衡量CPU闲忙程度的指标4:CPU资源成为系统性能的瓶颈的征兆5:哪些进程是占用CPU资源的大户?6: 利用SAR工具分析CPU的利用率7:利用SAR...
1:CPU的体系结构和工作原理
2:操作系统和进程
3:衡量CPU闲忙程度的指标
4:CPU资源成为系统性能的瓶颈的征兆
5:哪些进程是占用CPU资源的大户?
6:利用SAR工具分析CPU的利用率
7:利用SAR工具分析运行进程队列长度
8:利用SAR工具分析系统调用
9:利用time命令测试某个命令和程序的执行效率
10:利用top命令查看最耗CPU资源的进程
11:利用uptime命令查看系统整体情况
12:利用GlancePlus分析系统CPU资源利用率
13:对CPU需求密集型系统的性能调试


CPU的体系结构和工作原理


我们所说的CPU一般是指微处理器,即Microprocessor,一般地,一个CPU的主要组成部分为:

CPU(central processing unit)
cache:cache就是高速内存,它的存取时间一般是10-20微秒(ns),这样,CPU可以在一个时钟周期内访问一次cache;而一般的内存的 存取时间为80-90微秒(ns),它的大小对CPU的性能有很大的影响。
TLB(translation lookaside boffer):TLB是高速cache,它用于存放最近访问的虚拟地址和与其对应的物理地址对,这样TLB将可以把虚拟地址转换为物理地址。TLB是内 存中系统转换表的一个子集;TLB通常是指向一个内存页面,而不是一个内存地址;它的大小对CPU的性能有很大的影响。
coprocessor
不同的CPU,一般有不同的时钟频率和高速缓存容量。

CPU在一次时钟周期内一般可以从高速缓存内取到一个指令并执行它。因此,从理论上说,只要CPU的主频越快,单位时间内所能执行的指令则越多。目前,有 些CPU可以在一个时钟周期内执行多条指令,如PA8500可以执行4条指令。
高速缓存的大小会制约CPU的执行效率,虽然CPU主频很快,但它取不到数据,则只有空运行。因此,高速缓存的大小很重要;高速缓存又分数据高速缓存和指 令高速缓存,分别存放从内存预先取来的即将执行的数据和指令单元。
虚拟寻址

一般,系统中的虚拟地址空间要比物理地址空间大得多,例如,如果系统是64位的,则理论上,它的寻址空间可以达到2的64次幂(2**64= 18,447PB),但由于受费用的因素的影响,实际上的物理内存最大只有十几GB的内存。

每个进程都有自己的唯一虚拟地址空间,然而,进程的运行必须把虚拟地址映射到物理地址,这需要TLB、高速缓存和内存三者的配合。如果需要的信息不在内 存,则导致一个页面错。

流水线(Pipelining)

TLB和高速缓存试图在一个时钟周期内给CPU提供它所需的信息,然而,这个过程是100%的利用率,对CPU来说,它必须先用一个时钟周期去取下一个指 令,再一个时钟周期去执行这条指令,这样,CPU的利用率也只有50%。为了让CPU更忙,通常的做法是,采用流水线的方法。如PA8500是采用7个步 骤的流水线。

操作系统和进程


HP-UX一个多用户、多任务的UNIX操作系统。它的性能依赖于用户数的多少、用户任务的类型、硬/软件件的配置。

HP-UX有两种运行级别:

用户级:系统用户可以与操作系统进行交互操作,如运行应用和系统命令。用户级通过系统调用接口访问内核级。
内核级:操作系统自动运行一些功能,它们主要对硬件进行操作。
在操作系统中,用户程序是以进程方式运行。进程的状态有以下几种:

SRUN
SSLEEP
SZOMB
SIDL
SSTOP
CPU的调度

一旦进程所需的数据调入内存后,它将等待CPU调度者来分配CPU时间。一般,在HP-UX中,每个进程都可以得一个 固定的时间片来运行,这个时间片的长度为十分之一秒(1/10秒)。

由于HP-UX是一个多任务的操作系统,它需要一种手段来进程的执行次序,这就是中断。在系统中,时钟中断处理器是用来处理时钟中断的系统软件。具体地 说, 它将收集系统和accounting statistics and does context switching.系统性能也与这种中断发生的频率有关。

进程何优先级

每个进程都有自己的优先级;
实时优先级:-32~127,一个进程如果想以实时优先级运行,则必须用命令#rtprio来设置;
分时系统优先级:128~177;
分时用户优先级:178~251;
优先级:252~255 are used by the system as virtual memory management priorities for process deactivation.
分时进程在初始优先级是由系统分配的,为一个定值。用户可以通过改变进程的nice值来改变分时进程的优先级。因为进程会随着它的执行,将以nice值来 降低它的优先级,当 它在等待执行时,又将以nice值来增加其优先级。nice值的系统缺值为20。
在系统性能分析过程中,我关心不仅仅在完成一个进程耗时多少,还包括时间花在哪以及它的时间多少。


衡量CPU闲忙程度的指标


要分析系统的CPU资源是否够的前提谁占用了CPU资源,占用了多少,时间多长。 下面是一些衡量CPU闲忙程度的经用指标:

1)用户使用CPU的情况

CPU运行常规用户进程
CPU运行niced process
CPU运行实时进程
2)系统使用CPU的情况

用于系统调用
用于I/O管理:中断和驱动
用于内存管理:paging and swapping
用于进程管理:context switch and process start
3)WIO:由于进程等待I/O而使CPU处于空闲状态的比率,这些I/O主要指block I/O,raw I/O,VM paging/swapins;

4)CPU的空闲率,即除了上面的WIO以外的空闲情况;

5)CPU用于上下文交换的比率(Context Switch CPU utilization)

6)nice

7)real-time

8)运行进程队列的长度,即处于可运行状态的进程个数的大小,不过我们关心的是这些在等待CPU调度执行时所花的时间;

9)平均负载(load average)


CPU资源成为系统性能的瓶颈的征兆


CPU就像人的大脑,完成各种交给它的任务。如果任务太多,CPU就要忙不过来,它的运行效率就要下降。就像人生病会有一典型症状一样,当CPU资源 成为系统性能的瓶颈时,它也有一些典型的症状:

很慢的响应时间(slow response time)
CPU空闲时间为零(zero percent idle CPU)
过高的用户占用CPU时间(high percent user CPU)
过高的系统占用CPU时间(high percent system CPU)
长时间的有很长的运行进程队列(large run queue size sustained over time)
processes blocked on prority
必须注意的是,如果系统出现上面的这些症状并不能说一定是由于CPU资源不够

Reply via email to