CPU占有率
指标细分
CPU使用率从以下3个方面监控:
1、具体进程的CPU占有率及其随时间的变化规律(纵向对比)。
不能超过特定数值或百分比。
2、各CPU独立内核CPU占有率分配情况(横向对比)。
横向分配均匀。
查看CPU核心的运行情况
主要有sar,mpstat,vmstat,top。
其中,top消耗资源较多,不适合在性能期间持续运行。
mpstat可以查看各个CPU核心的负载情况,可以设定刷新时间和次数。比较适合。
sar
linux198:~ # sar 1 3
Linux 2.6.16.46-0.12-smp (linux198) 07/26/12
18:03:41 CPU %user %nice %system %iowait %idle
18:03:42 all 14.76 0.00 4.09 0.00 81.14
18:03:43 all 13.95 0.00 1.99 0.25 83.81
18:03:44 all 9.31 0.00 5.58 1.36 83.75
Average: all 12.67 0.00 3.89 0.54 82.90
mpstat
linux39:~ # mpstat -P ALL 3 4
Linux 2.6.16.46-0.12-smp (linux39) 07/26/12
15:35:37 CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s
15:35:40 all 2.24 0.00 1.29 0.04 0.04 1.41 0.00 94.97 7645.70
15:35:40 0 0.33 0.00 0.33 0.00 0.00 0.00 0.00 99.34 0.00
15:35:40 1 1.66 0.00 1.32 0.00 0.00 0.99 0.00 96.36 1527.81
15:35:40 2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.34 5.96
15:35:40 3 6.62 0.00 2.32 0.00 0.00 4.30 0.00 86.75 2905.63
15:35:40 4 0.33 0.00 0.66 0.00 0.00 0.00 0.00 98.68 0.00
15:35:40 5 0.66 0.00 0.33 0.66 0.00 0.33 0.00 97.68 109.27
15:35:40 6 8.28 0.00 5.63 0.00 0.00 5.96 0.00 80.46 2807.95
15:35:40 7 0.33 0.00 0.33 0.00 0.00 0.00 0.00 98.68 289.40
vmstat
linux198:~ # vmstat 1 3
procs -----------memory---------- - --swap-- -----io---- -system- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 4499660 10534364 29408 1725604 0 1 12 14 1 3 23 5 72 0 0
3 0 4499660 10549164 29408 1715324 0 0 0 48 2847 12769 29 12 59 0 0
1 0 4499660 10549500 29408 1715324 0 0 0 0 2157 12800 16 3 81 0 0
Procs
r: The number of processes waiting for run time.即load average
CPU
These are percentages of total CPU time.
us: Time spent running non-kernel code. (user time, including nice time)
sy: Time spent running kernel code. (system time)
id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.
wa: Time spent waiting for IO. Prior to Linux 2.5.41, shown as zero.
st: Time spent in involuntary wait. Prior to Linux 2.6.11, shown as zero.
top
分析%usr :%sys :%wio的情况,
%usr是指CPU用于执行应用程序百分比,
%sys是指CPU应用执行系统程序(通常是操作系统的系统调用)的百分比,
%wio是指CPU在等待IO的百分比。
通常情况下,%sys和%wio都不应该太高,否则就说明应用程序设计不合理,需要分析原因。
完成同样功能的应用程序,其CPU占用率应该大致相等,否则说明系统负荷分配不均匀。
对于多CPU的系统,各CPU的占用率也应该大致相等,否则说明系统对CPU资源的使用不均衡,需要优化配置。
总的CPU平均占用率不应该太高,如超过90%,否则说明可能系统性能已经受限于CPU资源。
查看进程的CPU运行情况
ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 780 76 ? S Jul13 0:09 init [3]
root 2 0.0 0.0 0 0 ? S Jul13 0:00 [migration/0]
root 3 0.0 0.0 0 0 ? SN Jul13 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S Jul13 0:00 [migration/1]
root 5 0.0 0.0 0 0 ? SN Jul13 0:00 [ksoftirqd/1]
root 6 0.0 0.0 0 0 ? S Jul13 0:00 [migration/2]
root 7 0.0 0.0 0 0 ? SN Jul13 0:00 [ksoftirqd/2]
linux上进程有5种状态:
1. 运行(正在运行或在运行队列中等待)
2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
ps工具标识进程的5种状态码:
D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct ("zombie") process
注: 其它状态还包括W(无驻留页), <(高优先级进程), N(低优先级进程), L(内存锁页).
性能测试关注指标及查看命令
性能测试期间,不能有大量僵死进程。
完成同样功能的进程,CPU占有率相近。
关键进程运行状态正常,CPU占有率正常。是否需要特定进程的实时CPU占有率?个人认为不需要,因为,端到端场景中,往往需要多个进程之间协作,关心特定进程的占有率意义不大,关心全部进程占有率工作量太大且无明显意义。只要保证进程状态正常,CPU整体占有率合适且各内核占有率均衡即可。
所以,命令上选择:mpstat和ps aux