top命令
可以实时展示linux系统的运行时信息,包括系统负载,内存使用情况,进程信息等.
top命令执行,信息展示如下:
load average
这三个数字分别表示的是1分钟、5分钟、15分钟的负载情况,这些数值是使用当前的进程信息计算出来的. 对于字段的说明,找到一个说的蛮清楚的文章 top命令的Load average 含义及性能参考基值,数值大小的影响,文章中的三个法则挺有用的:
- “需要进行调查法则”: 如果长期你的系统负载在 0.70 上下,那么你需要在事情变得更糟糕之前,花些时间了解其原因。
- “现在就要修复法则”:1.00 。 如果你的服务器系统负载长期徘徊于 1.00,那么就应该马上解决这个问题。否则,你将半夜接到你上司的电话,这可不是件令人愉快的事情。
- “凌晨三点半锻炼身体法则”:5.00。 如果你的服务器负载超过了 5.00 这个数字,那么你将失去你的睡眠,还得在会议中说明这情况发生的原因,总之千万不要让它发生。
%Cpu(s) - 每个数字代表不同情况下使用cpu的百分比
- us (user) 用户进程运行时间百分比
- sy (system) 系统进程运行时间百分比
- ni (nice) 调整过优先级的用户进程运行时间百分比
- id (idle) cpu闲置时间百分比
- wa (io wait) 等待IO完成的cpu时间百分比
- hi (Hardware IRQ) 处理硬件中断的cpu时间百分比
- si (Software Interrupts) 处理软件中断的cpu时间百分比
- st (Steal Time) Xen Hypervisor 分配给运行在其它虚拟机上的任务的实际 CPU 时间
关于 st , 看这里linux top命令%st值高是怎么回事:
st 的全称是 Steal Time ,就是 Xen Hypervisor 分配给运行在其它虚拟机上的任务的实际 CPU 时间。
IBM 关于 steal time 的定义相当好: %st(Steal time) 是当 hypervisor 服务另一个虚拟处理器的时候,虚拟 CPU 等待实际 CPU 的时间的百分比。 那么,这究竟是什么意思呢? Steal 值比较高的话,你需要向主机供应商申请扩容虚拟机。服务器上的另一个虚拟机可能拥有更大更多的 CPU 时间片,你可能需要申请升级以与之竞争。
进程信息
- PR (Priority) 进程优先级,rt表示实时调度优先,有这种任务则先执行该任务
- NI 进程优先级,越小越高
- VIRT (Virtual Memory Size) 进程使用的虚拟内存 VIRT=SWAP+RES
- RES (Resident Memory Size) 驻留内存大小。驻留内存是任务使用的非交换物理内存大小 RES=CODE+DATA
- SHR (Shared Memory Size) SHR是进程使用的共享内存。
- S 这个是进程的状态。它有以下不同的值:D - 不可中断的睡眠态。R – 运行态。S – 睡眠态。T – 被跟踪或已停止。Z – 僵尸态
- TIME+ 任务启动后到现在所使用的全部CPU时间,精确到百分之一秒(包含子进程所使用的时间)。
NI 是优先值,是用户层面的概念, PR是进程的实际优先级, 是给内核(kernel)看(用)的。 一般情况下,PR=NI+20, 如果一个进程的优先级PR是20, 那么它的NI(nice)值就是20-20=0。