一.概述概述
比如一秒内有100个cpu时间片,这个cpu时间片就是cpu工作的最小单位。那么这100个cpu时间片在不同的区域和目的进行操作使用,就代表这个区域所占用的cpu时间比。也就是这里得出的cpu时间百分比。
如下为TOP命令看到的信息,每个参数将表示cpu时间片被占用的分布情况,如下所有相加为100%。
如下,%Cpu(s)计算为所有,多少个核心都是100%
显示的进程的%CPU为单个核心,占满一个核心为100%,2个就是200%
二.详解
us和sy
us 用户空间占用CPU百分比
sy 内核空间占用CPU百分比
用户 CPU 使用率,包括用户态 CPU使用率(user)和低优先级用户态 CPU使用率(nice),表示 CPU 在用户态运行运行的时间百分比用户 CPU 使用率高,通常说明有应用程序比较繁忙。
系统 CPU 使用率,表示 CPU 在内核态运行时间百分比(不包括中断)。系统 CPU 使用率高,说明内核比较繁忙。
4G的进程地址空间(内存)被人为的分为两个部分--用户空间与内核空间。用户空间从0到3G(0xc0000000),内核空间占据3G到4G。用户进程通常情况下只能访问用户空间的虚拟地址,不能访问内核空间的虚拟地址。例外情况只有用户进程进行系统调用(代表用户进程在内核态执行)等时刻可以访问到内核空间。
所以内核的操作占用内核空间,进程的操作占用进程空间
用户空间对应进程,所以每当进程切换,用户空间就会跟着变化;而内核空间是由内核负责映射,它并不会跟着进程变化,是固定的。内核空间地址有自己对应的页表,用户进程各自有不同的页表。
每个进程的用户空间都是完全独立、互不相干的。
ni
用户进程空间内,改变过优先级的进程占用CPU百分比
进程都有优先级的,如果调节优先级,需要耗费cpu的时间段的,那就消耗这个ni
如果ni很高,那就是进程可能频繁调换优先级(当前理解)
id
剩下的id就是除了id以为占用cpu时间片的空闲部分,相当于空间cpu的百分比。
wa
wa指的是CPU等待磁盘写入完成的时间,就是说前提是要进行IO操作。
在进行IO操作的时候,如果程序是阻塞的,他cpu会等待数据写入磁盘才能完成写操作。所以这个时候cpu等待的时间就是wa。
举例:
使用cp复制,如果文件夹中有多个文件,他每复制一次,cpu就指挥文件复制,但是硬盘读写的时候,cpu是要等待的,这时候cpu不动作只是等待。
所以如果一台机器看到wa特别高,那么一般说明是磁盘IO出现问题,可以使用iostat等命令继续进行详细分析。
hi和si
如果程序没有问题,那是没有hi和si的。当键盘打字,cpu就要去立即处理这个东西,那就是中断,意味着中断当前操作来处理需要立即处理的东西。
软中断和硬中断理论一样,但是软件的,具体看详细说明
st
st的解释是实时,但是与虚拟化有关
比如centos上搞kvm(虚拟机,类似win的vmver),那在本机查询st很高
当前理解为,为虚拟机提供的cpu时间片占用数。比如开启2个虚拟机,那虚拟机用的cpu还是由真机提供的,这里应该是应用于虚拟化的数量。
查看每一个cpu的状态mpstatmpstat -P ALL
irq: 硬件中断CPU用量;
sofr: 软件中断CPU用量;
iowait:就是上面说的wa
steal: 耗费在服务其他租户的时间(不懂);
guest: 花在访客虚拟机的时间(不懂);
三.总结
用户 CPU 和 Nice CPU 高,说明用户态进程占用了较多的 CPU,所以应该着重排查进程的性能问题
系统 CPU 高,说明内核态占用了较多的 CPU所以应该着重排查内核线程或者系统调用的性能问题
若 %iowait 的值过高,表示硬盘存在I/O瓶颈;
若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量;
若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU;