top命令

2016年03月23日

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。