首页 理论教育数据库性能管理:CPU调优方法

数据库性能管理:CPU调优方法

【摘要】:使用UNIX时,可通过sar命令确认CPU的使用量。判断为CPU不足时,可以找到问题所在并加以解决,或者考虑增设CPU。在这种情况下,找出当前系统上大量占用CPU的进程并分析原因。此外,最上方显示的进程占用CPU最多。图1-5根据进程确认系统调用如果该进程异常占用较多CPU,则系统调用反复循环的情况非常多,须更加注意。如果系统包含四个CPU并且有两个活跃的异常进程,则已占用系统50%的CPU,系统不可能正常工作。

使用UNIX时,可通过sar命令(图1-3)确认CPU的使用量。正常运行时,CPU建议使用程度为70%~80%,其中需维持20%~30%的空闲时间。如果空闲未达到20%~30%,系统使用量增加时(最后期限、结算、预算编制等),空闲可能为0%(此时空闲为0%可能表示100%使用CPU,但使用超过100%会判定为发生CPU瓶颈现象)。

如图1-3所示,使用sar指令监测CPU的使用量时,通常%idle要闲置20%~30%,但%idle比该值低时,则判定为当前OS的CPU发生不足现象。判断为CPU不足时,可以找到问题所在并加以解决,或者考虑增设CPU。 CPU使用量过大时,则先比较%usr、%sys、%wio的比率。使用数据库应用程序运营的系统,正常情况下显示顺序为%usr>%sys>%wio。如果%wio的值最高,则可以视为I/O等待在占用 CPU。因此,消除 I/O瓶颈现象或提高UNIX文件系统的工作缓冲区缓存的利用率,会减少整个CPU的使用量,这比提高缓冲区缓存的利用率,分配I/O更为有效。如果%sys的使用量高,可能是异常进程占用太多CPU。在这种情况下,找出当前系统上大量占用CPU的进程并分析原因。图1-4所示为在 sun micro systems设备上使用Berkeley ps指令按顺序查看大量占用CPU进程的方法。判断方法分别是 HP为top或glance, IBM为 monitor, DEC为 ps aux command。

图 1-3 sar指令

图1-4 查看大量占用CPU的进程(www.chuimin.cn)

在前面的结果中,需要仔细查看%CPU、%MEM、TIME,它们分别为CPU占用率、内存占用率、启动后CPU的累积使用值。此外,最上方显示的进程占用CPU最多。如果一个进程占用一个CPU的99%或100%并使用较长时间(1 min以上),需要确认该进程是哪种进程并且进行何种操作。这种进程肯定为异常进程,属于不必要地占用系统资源。要在OS上分析任何进程,需要确认该进程的系统调用(system call),此时可使用truss ( sun OS)、tusc(HP)指令等。图1-5所示为使用truss指令监测之前进程中占用CPU最多的23064进程的情况。该进程工作正常,无异常。

图1-5 根据进程确认系统调用

如果该进程异常占用较多CPU,则系统调用反复循环的情况非常多,须更加注意。有时使用truss不会输出或显示任何对象。此种情况为不经过系统调用而在用户模式下执行的情况(例如,for语句在同一个地方不停地执行)。truss命令会显示该进程执行的所有系统调用,因此该命令执行操作时会增加负载,只能在短时间内使用 truss监测进程。如果对任何系统调用都有问题,则可以使用UNIX man指令确认系统调用执行了何种操作(例如:$ man semop)。如果占用较多CPU并且分析结果显示进程有异常时,则确认该进程关联的业务后先停止该进程。这种进程为常进程,多数为只占用系统资源的进程。因此为保证系统正常运行,如果已收集了各种信息则停止进程。如果系统包含四个CPU并且有两个活跃的异常进程,则已占用系统50%的CPU,系统不可能正常工作。