top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。它会以列表的形式展示出系统的当前状态以及进程信息,并且定时刷新,同时也支持一些交互性的操作。

直接执行top命令,就会看到如下界面。

第一行:概况HH:mm:ss:当前的系统时间。up xxx days, HH:mm:从本次开机到现在经过的时间。x user:当前有几个用户登录到该机器。load average:系统1分钟、5分钟、15分钟内的平均负载值。平均负载的详细含义和算法内容很丰富,请暂时参考这里。

第二行:进程计数(Tasks)total:进程总数。running:正在运行的进程数,对应状态TASK_RUNNING。sleeping:睡眠的进程数,对应状态TASK_INTERRUPTIBLE和TASK_UNINTERRUPTIBLE。stopped:停止的进程数,对应状态TASK_STOPPED。zombie:僵尸进程数,对应状态TASK_ZOMBIE。既然已经提到了Linux下的进程状态,干脆直接复习一下进程状态的转换吧。

第三行:CPU使用率(%Cpu(s))us:进程在用户空间(user)消耗的CPU时间占比,不包含调整过优先级的进程。sy:进程在内核空间(system)消耗的CPU时间占比。ni:调整过用户态优先级的(niced)进程的CPU时间占比。id:空闲的(idle)CPU时间占比。wa:等待(wait)I/O完成的CPU时间占比。hi:处理硬中断(hardware interrupt)的CPU时间占比。si:处理软中断(software interrupt)的CPU时间占比。st:当Linux系统是在虚拟机中运行时,等待CPU资源的时间(steal time)占比。

第四、五行:物理内存和交换空间(Mem/Swap)以物理内存为例。free命令也会打印出类似的信息。total:内存总量。free:空闲内存量。used:使用中的内存量。buff/cache:缓存和page cache占用的内存量。