top命令中各部分详解

Linux top命令详解

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器

 

一、任务队列信息

top - 13:26:56 up 0 min, 1 user, load average: 0.09, 0.03, 0.01

第一行,任务队列信息,同 uptime 命令的执行结果

系统时间:13:26:56

运行时间:up 0 min,

当前登录用户: 1 user

负载均衡(uptime) load average: 0.09, 0.03, 0.01

average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。

load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了

计算公式:load(t) = load(t-1) e^(-5/60) + n (1 - e^(-5/60)),迭代计算,其中n为run-queue length。

为什么采用这个计算公式呢?

由Exponential Smoothing方程有,Y(t)= Y(t-1) + a*[X(t) - Y(t-1)],whereX(t) is the input raw data, Y(t - 1) is the value due to the previoussmoothing iteration and Y(t) is the new smoothed value.

令a=1-b,b为e^(-5/60),就可以得到load average的计算公式

采用此公式的好处:局部的load抖动不会对load average造成重大影响,使其平滑。

 
https://blog.csdn.net/duzilonglove/article/details/80111753

 

二、Tasks — 任务(进程)

Tasks: 75 total, 1 running, 74 sleeping, 0 stopped, 0 zombie

总进程:75 total, 运行:1 running, 休眠:74 sleeping, 停止: 0 stopped, 僵尸进程: 0 zombie

ps aux

S 进程状态 l 内存中有锁定空间 N 优先级低 < 优先级高 + 前台运行 s 顶级进程

僵尸进程:如果子进程退出,但是父进程没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符pid仍然保存在系统中,那么该子进程叫做僵尸进程

孤儿进程:即父进程退出后,它的一个或多个子进程还在运行,那么这些子进程叫做孤儿进程

处理僵尸进程:找出父进程号,然后kill 父进程,之后子进程(僵尸进程)会被托管到其他进程,如init进程,然后由init进程将子进程的尸体(task_struct)释放掉。

init进程是linux内核启动的第一个用户级进程。init有许多很重要的任务,比如像启动getty(用于用户登录)、实现运行级别、以及处理孤立进程。

 

进程:https://www.cnblogs.com/yinbiao/p/11201937.html

僵尸进程处理:https://zhuanlan.zhihu.com/p/42199755

 

三、cpu状态信息

%Cpu(s): 0.0 us, 16.7 sy, 0.0 ni, 83.3 id, 0.0 wa, 0.0 hi, 0.0 si,

0.0 us【user space】— 用户空间占用CPU的百分比。

16.7 sy【sysctl】— 内核空间占用CPU的百分比。

0.0 ni【nice】— 改变过优先级的进程占用CPU的百分比

83.3 id【idolt】— 空闲CPU百分比

0.0 wa【wait】— IO等待占用CPU的百分比

0.0 hi【Hardware IRQ】— 硬中断占用CPU的百分比

0.0 si【Software Interrupts】— 软中断占用CPU的百分比

 
us + sy + ni + id + wa + hi + si + st = 100%

 
hi、si:https://blog.csdn.net/pxz_002/article/details/7327668

 

四、内存状态

KiB Mem : 999696 total, 756568 free, 104484 used, 138644 buff/c

total : 总内存大小

free : 是未使用内存的大小

used : 是已使用内存的大小,包含了共享内存

buff / cache : 缓存和缓冲区的大小
 

可用内存=free + buffer + cached

普通机器:total=used+free

虚拟机器:total=used+free+buff/cache

 

buffer

即写如磁盘时,先保存到磁盘缓冲区(buffer),然后再写入到磁盘。

cache

即读磁盘时,数据从磁盘读出后,暂留在缓冲区(cache),为后续程序的使用做准备。
 

五、swap交换分区信息

KiB Swap: 1048572 total, 1048572 free, 0 used. 734956 avail

avail:可用交换取总量

如果系统的物理内存用光了,则会用到swap。系统就会跑得很慢,但仍能运行;如果Swap空间用光了,那么系统就会发生错误。通常会出现“application is out of memory”的错误,严重时会造成服务进程的死锁。所以要高度重视。

swap=VIRT-RES

 
 
查看哪些进程用了Swap分区:

查看文件:awk '/^Swap:/ {SWAP+=KaTeX parse error: Expected 'EOF', got '}' at position 2: 2}̲END{print SWAP"…(pid)/smaps

外部命令:iotop

 
 
查看哪些进程用了Swap分区:https://www.cnblogs.com/EasonJim/p/8100499.html

 

六、空行

空行

 

七、各进程(任务)的状态监控

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+

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 — 进程名称(命令名/命令行)

NI 是优先值,来是用户层面的概念,源 PR是进程的实际优先级, 是给百内核(kernel)看(用)的。
一般情度况下,PR=NI+20, 如果一个进程知的优先级PR是20, 那么它的NI(nice)值就道是20-20=0

VIRT:virtual memory usage 虚拟内存
进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量

RES:resident memory usage 常驻内存

进程当前使用的内存大小,但不包括swap out
包含其他进程的共享
如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
关于库占用内存的情况,它只统计加载的库文件所占内存大小

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

DATA
数据占用的内存。如果top没有显示,按f键可以显示出来。
真正的该程序要求的数据空间,是真正在运行中要使用的。

%CPU和cpu(s)的差别:

我们发现Cpu(s)表示的是 所有用户进程占用整个cpu的平均值,由于每个核心占用的百分比不同,所以按平均值来算比较有参考意义。而**%CPU显示的是进程占用一个核的百分比**,而不是整个cpu(12核)的百分比,有时候可能大于100,那是因为该进程启用了多线程占用了多个核心,所以有时候我们看该值得时候会超过100%,但不会超过总核数*100。

 
 

%CPU和cpu(s):https://blog.csdn.net/q2519008/article/details/79985673

八、top命令的使用

s – 改变画面更新频率
l – 关闭或开启第一部分第一行 top 信息的表示
t – 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示
m – 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示
N – 以 PID 的大小的顺序排列表示进程列表
P – 以 CPU 占用率大小的顺序排列进程列表
M – 以内存占用率大小的顺序排列进程列表
h – 显示帮助
n – 设置在进程列表所显示进程的数量
q – 退出 top
s – 改变画面更新周期

 

https://www.cnblogs.com/niuben/p/12017242.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值