在linux系统中输入top命令后可以看到如下界面:
我们先对top界面各行含义作一下解释:
第一行:top - 11:53:32 up 2:08, 1 user, load average: 0.87, 0.72, 0.86
11:53:32 当前时间
up 2:08系统运行时间(当前运行时长为2个小时8分钟)
1 user 当前系统登陆用户数量
load average: 0.87, 0.72, 0.86 cpu的平均负载,三个数字分别代表1分钟内 5分钟内 15分钟内的平均运行队列中的进程数。
注释:
那么这里的负载指什么?指的是运行队列中的进程数。
运行队列中的进程数是指正在运行的进程和准备好正在等待运行的进程的数量。
如果电脑是4核的,那么上面的0.87就代表4个cpu在1分钟内平均每次统计时有0.87个进程在运行队列中,其中统计频率是5秒一次。
使用:
由于单个cpu同时只能执行一个进程,所以一般来讲平均每个cpu的负载在0.7左右就应该开始想办法优化代码了。
当负载除以cpu的数值在1以上了就说明当前系统已经满负载了,这时就应该非常焦虑,赶紧找出问题所在。
当负载除以cpu的数值在5以上那就出事了,就等着写事故报告吧。
第二行:Tasks: 279 total, 1 running, 224 sleeping, 0 stopped, 0 zombie
279 total 进程总数
1 running 正在运行的进程数
224 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数量
第三行:%Cpu(s): 3.6 us, 1.3 sy, 0.0 ni, 94.6 id, 0.0 wa, 0.0 hi, 0.4 si, 0.0 st
3.6 us 用户态使用的cpu时间比
1.3 sy 系统态使用的cpu时间比
0.0 ni 用户进程空间内改变过优先级的进程占用CPU百分比
94.6 id 空闲CPU百分比
0.0 wa 等待输入输出的CPU时间百分比
0.0 hi 硬中断(Hardware IRQ)占用CPU的百分比
0.4 si 软中断(Software Interrupts)占用CPU的百分比
0.0 st
注释:
这里说一下wa,它的含义是在进行IO操作的时候,CPU等待时间,如果wa占用时间太高的话一般说明磁盘IO出现问题,可以使用iostat等命令继续进行详细分析。
第四行:KiB Mem : 8040236 total, 4763724 free, 1680948 used, 1595564 buff/cache
8040236 total 物理内存总量
4763724 free 空闲内存总量
1680948 used 使用的物理内存总量
1595564 buff/cache 用作内核缓存的内存量
注释:
这里的内存单位是kb 8040236 就相当于8G内存
buff/cache含义:
当你读写文件的时候,Linux内核为了提高读写性能与速度,会将文件在内存中进行缓存,
这部分内存就是Cache Memory(缓存内存)。即使你的程序运行结束后,Cache Memory也不会
自动释放。这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存会很少。
其实这缓存内存(Cache Memory)在你需要使用内存的时候会自动释放,所以你不必担心没有
内存可用。如果你希望手动去释放Cache Memory也是有办法的
第五行:KiB Swap: 2097148 total, 2097148 free, 0 used. 5584956 avail Mem
2097148 total 交换区总量
2097148 free 空闲交换区总量
0 used 使用的交换区总量
5584956 avail Mem 可用于进程下一次分配的物理内存数量
进程信息:PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 进程使用的物理内存百分比