• 第一行:系统运行时间和平均负载
当前时间、系统已运行时间、当前登录用户的数量、最近5、10、15分钟内的平均负载
平均负载 的计算
CPU核心数,指逻辑CPU,即一个CPU不开超线程时为2个物理核心,开了超线程后就变成了4个逻辑核心
查看逻辑cpu个数 。
cat /proc/cpuinfo |grep "model name"|wc -l
uptime 查看平均负载
[root@localhost ~]# uptime
01:50:42 up 1 day, 1:42, 3 users, load average: 0.68, 0.22, 0.11
CPU使用率,是单位时间内CPU繁忙情况的统计,和平均负载并不一定完全对应。比如:
• CPU密集型进程,使用大量CPU会导致平均负载升高,此时这两者是一致的。
• I/O 密集型进程, 等待I/O也会导致平均负载升高,但是CPU使用率不一定很高。
• 大量等待CPU的进程调用也会导致平均负载升高,此时的CPU使用率也会比较高。
• 第二行:任务
• Tasks: 193 total, 1 running, 188 sleeping, 4 stopped, 0 zombie
任务的总数、 运行中(running)的任务、休眠(sleeping)中的任务、停止(stopped)的任务、僵尸状态(zombie)的任务
• 第三行:cpu状态
%Cpu(s): 0.2 us, 0.0 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
us user: 运行(未调整优先级的) 用户进程的CPU时间
sy system: 运行内核进程的CPU时间
ni niced:运行已调整优先级的用户进程的CPU时间
id idle:空闲时间
wa IO wait: 用于等待IO完成的CPU时间
hi 处理硬件中断的CPU时间
si 处理软件中断的CPU时间
st 这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的)虚拟机监视器
• 第四行:内存
KiB Mem: 2051044 total, 1890800 used, 160244 free, 144900 buffers
全部可用内存、已使用内存、 空闲内存、 缓冲内存
• 第五行:swap
KiB Swap: 4194300 total, 114076 used, 4080224 free, 1031996 cached
全部、 已使用、 空闲 缓冲交换空间
• 第七行至N行:各进程任务的的状态监控
字段 释义
PID 进程ID,进程的唯一标识符
USER 进程所有者的实际用户名
PR 进程的调度优先级。这个字段的一些值是’rt’。这意味这这些进程运行在实时态。
NI 进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级
VIRT virtual memory usage 虚拟内存,进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量
RES resident memory usage 常驻内存,驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
1、进程当前使用的内存大小,但不包括swap out
2、包含其他进程的共享
3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小
SHR SHR:shared memory 共享内存
1、除了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
3、计算某个进程所占的物理内存大小公式:RES – SHR
4、swap out后,它将会降下来
S 这个是进程的状态。它有以下不同的值:
• D - 不可中断的睡眠态。
• R – 运行态
• S – 睡眠态
• T – 被跟踪或已停止
• Z – 僵尸态
%CPU 自从上一次更新时到现在任务所使用的CPU时间百分比。%CPU显示的是进程占用一个核的百分比,而不是整个cpu(N核)的百分比,有时候可能大于100,那是因为该进程启用了多线程占用了多个核心,所以有时候我们看该值得时候会超过100%,但不会超过总核数*100
%MEM 进程使用的可用物理内存百分比
TIME+ 任务启动后到现在所使用的全部CPU时间,精确到百分之一秒
COMMAND 运行进程所使用的命令。进程名称(命令名/命令行)