常用
-
top
进程模式 -
top –H
线程模式
输出
第一行
** top - 23:57:58 up 9 days, 2:12, 4 users, load average: 0.38, 0.47, 0.43 **
- 第一行描述的是系统负载的整体情况
- load average(系统负载),用Linux内核的任务队列的平均长度表示。0.38, 0.47, 0.43这三个数值分别是系统1分钟前,5分钟前、15分钟前到现在的平均值。当load average的数值/CPU逻辑核心数==1.0时,表示系统满载运行。超过1.0时,表示系统已经超载运行,不堪重负。
- 下面一段话引用自man page:
System load averages is the average number of processes that are either in a runnable or uninterruptable state. A process in a runnable state is either using the CPU or waiting to use the CPU. A process in uninterruptable state is waiting for some I/O access, eg waiting for disk.
第二行
** Tasks: 205 total, 2 running, 203 sleeping, 0 stopped, 0 zombie **
- 第二行描述了系统进程/线程的基本情况。当使用top是,task表示进程;当使用top –H时,task表示线程。
- running – 状态为TASK_RUNNING的task数量。
- sleeping – 状态为TASK_INTERRUPTIBLE或TASK_UNINTERRUPTIBLE的task数量。
- stopped – 状态为__TASK_STOPPED的task数量,正常的系统这种进程状态应该很少。在收到一些“致命”的signal时,task会进入这种状态。
- zombie – 状态为EXIT_ZOMBIE的task。在Linux中,一个task退出后,会进入EXIST_ZOMBIE,需要由父task调用wait系列的函数对其进行回收。如果系统出现大量zombie的task,则很有可能是父task没有对子task调用wait进行回收或者产生太多task,父task还来不及回收。(如果父task在子task之前退出了,则由init task回收zombie task)。
第三行
** %Cpu(s): 4.3 us, 1.2 sy, 0.0 ni, 94.4 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st **
- %Cpu(s)描述了多核CPU使用情况。在top命令的交互界面输入左上角的1可以看到不同CPU核的使用情况。
- us, user: time running un-niced user processes
- sy, system: time running kernel processes
- ni, nice: time running niced user processes
- id, idle: time spent in the kernel idel handler
- wa, IO-wait: time waiting for I/O completion
- hi: time spent servicing hardware interrupts
- si: time spent servicing software interrupts
- st: time stolen from this vm by the hypervisor
第四行
** KiB Mem: 3856200 total, 3201784 used, 654416 free, 221532 buffers **
- 第四行Mem是从OS的角度描述物理内存的使用情况。具体见Linux命令:free。
第五行
** KiB Swap: 3999740 total, 485604 used, 3514136 free. 1374532 cached Mem **
- 第五行Swap显示了虚拟内存的使用情况。
- Cached Mem – 缓冲的交换区总量。内存中的内容被交换到Swap,而后又被换入到内存。内存中和Swap中的内容都未被修改,则相应的内存再次被换出时可不必再对Swap写入。
第六行
** PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND **
- 这一行是下面描述各个进程/线程的情况的标题。