第一行 任务队列信息

13:54:09   当前时间
up 1:16    系统运行时间,格式为时:分
1 user    当前登录用户数
load average: 0.24, 0.05, 0.02    系统负载,即任务队列的平均长度。三个数值分别为 1分钟c、5分钟、15分钟前到现在的平均值。

第二、三行 任务和CPU的信息

任务:
total 进程总数
running 正在运行的进程数
sleeping 睡眠的进程数
stopped 停止的进程数
zombie 僵尸进程数
%Cpu(s): 
0.5 us 	用户空间占用CPU百分比
1.4 sy 	内核空间占用CPU百分比
0.0 ni 	用户进程空间内改变过优先级的进程占用CPU百分比
98.1 id 空闲CPU百分比
0.0 wa 	等待输入输出的CPU时间百分比
0.0 hi	硬件CPU中断占用百分比
0.0 si	软中断占用百分比
0.0 st	虚拟机占用百分比

第四、五行 内存信息

KiB Mem:
4002264 total       物理内存总量
1213228 free        空闲内存总量    
1703096 used        使用的物理内存总量
1085940 buff/cache  用作内核缓存的内存量
KiB Swap: 
1942896 total       交换区总量
1942896 free        空闲交换区总量
0        used        使用的交换区总量
1992616 avail Mem   可用交换区总量

进程信息区统计信息

依次对应: 
PID — 进程id 
USER — 进程所有者 
PR — 进程优先级 
NI — nice值。负值表示高优先级,正值表示低优先级 
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES 
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA 
SHR — 共享内存大小,单位kb 
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 
%CPU — 上次更新到现在的CPU时间占用百分比 
%MEM — 进程使用的物理内存百分比 
TIME+ — 进程使用的CPU时间总计,单位1/100秒 
COMMAND — 进程名称(命令名/命令行)

实存(RES) 与 虚存(VIRT)分析

VIRT:

1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据,以及malloc、new分配的堆空间和分配的栈空间等;
2、假如进程新申请10MB的内存,但实际只使用了1MB,那么它会增长10MB,而不是实际的1MB使用量。

RES:这个才是进程实实在在占用的内存

1、进程当前使用的内存大小,包括使用中的malloc、new分配的堆空间和分配的栈空间,但不包括swap out量;
2、包含其他进程的共享;
3、如果申请10MB的内存,实际使用1MB,它只增长1MB;

SHR:

1、除了自身进程的共享内存,也包括其他进程的共享内存;
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小;
3、计算某个进程所占的物理内存大小公式:RES – SHR;
4、swap out后,它将会降下来。

VIRT高是因为分配了太多地址空间导致。
一般来说不用太在意VIRT太高,因为你有16EB的空间可以使用

top命令一直跳,可以使用 grep 打印只需要看的进程,比如只看java进程的top

top | grep java

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐