“linux top命令”是什么意思?

“linux top命令”是什么意思?,第1张

top命令用于显示系统运行的进程信息,作用类似于windows中的任务管理器,只不过top不是图形化的,而是显示实时文本信息\x0d\x0a\x0d\x0a统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。\x0d\x0aPIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND\x0d\x0a序号列名含义\x0d\x0aPID进程id\x0d\x0aPPID父进程id\x0d\x0aRUSERRealusername\x0d\x0aUID进程所有者的用户id\x0d\x0aUSER进程所有者的用户名\x0d\x0aGROUP进程所有者的组名\x0d\x0aTTY启动进程的终端名。不是从终端启动的进程则显示为?\x0d\x0aPR优先级\x0d\x0aNInice 值。负值表示高优先级,正值表示低优先级\x0d\x0aP最后使用的CPU,仅在多CPU环境下有意义\x0d\x0a%CPU上次更新到现在的CPU时间占用百分比\x0d\x0aTIME进程使用的CPU时间总计,单位秒\x0d\x0aTIME+进程使用的CPU时间总计,单位1/100秒\x0d\x0a%MEM进程使用的物理内存百分比\x0d\x0aVIRT进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES\x0d\x0aSWAP进程使用的虚拟内存中,被换出的大小,单位kb。\x0d\x0aRES进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA\x0d\x0aCODE可执行代码占用的物理内存大小,单位kb\x0d\x0aDATA可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb\x0d\x0aSHR共享内存大小,单位kb\x0d\x0anFLT页面错误次数\x0d\x0anDRT最后一次写入到现在,被修改过的页面数。\x0d\x0aS进程状态。\x0d\x0aD=不可中断的睡眠状态\x0d\x0aR=运行\x0d\x0aS=睡眠\x0d\x0aT=跟踪/停止\x0d\x0aZ=僵尸进程\x0d\x0aCOMMAND命令名/命令行\x0d\x0aWCHAN若该进程在睡眠,则显示睡眠中的系统函数名\x0d\x0aFlags任务标志,参考sched.h

Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。下面让我们一起去了解Linux TOP命令 按内存占用排序和按CPU占用排序。

   Linux TOP命令 按内存占用排序和按CPU占用排序:

:在命令行提示符执行top命令

2:输入大写P,则结果按CPU占用降序排序。输入大写M,结果按内存占用降序排序。(注:大写P可以在capslock状态输入p,或者按Shift+p)

另外:

认识top的显示结果

top命令的显示结果如下所示:

top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48 Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si Mem: 191272k total, 173656k used, 17616k free, 22052k buffers Swap: 192772k total, 0k used, 192772k free, 123988k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1379 root 16 0 7976 2456 1980 S 0.7 1.3 0:11.03 sshd 14704 root 16 0 2128 980 796 R 0.7 0.5 0:02.72 top 1 root 16 0 1992 632 544 S 0.0 0.3 0:00.90 init 2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0统计信息区

前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:

01:06:48当前时间

up 1:22系统运行时间,格式为时:分

1 user当前登录用户数

load average: 0.06, 0.60, 0.48系统负载,即任务队列的平均长度。

三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

Tasks: 29 total进程总数

1 running正在运行的进程数

28 sleeping睡眠的进程数

0 stopped停止的进程数

0 zombie僵尸进程数

Cpu(s): 0.3% us用户空间占用CPU百分比

1.0% sy内核空间占用CPU百分比

0.0% ni用户进程空间内改变过优先级的进程占用CPU百分比

98.7% id空闲CPU百分比

0.0% wa等待输入输出的CPU时间百分比

0.0% hi

0.0% si

最后两行为内存信息。内容如下:

Mem: 191272k total物理内存总量

173656k used使用的物理内存总量

17616k free空闲内存总量

22052k buffers用作内核缓存的内存量

Swap: 192772k total交换区总量

0k used使用的交换区总量

192772k free空闲交换区总量

123988k cached缓冲的交换区总量。

内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,

该数值即为这些内容已存在于内存中的交换区的大小。

相应的内存再次被换出时可不必再对交换区写入。

进程信息区

统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

序号列名含义

aPID进程id

bPPID父进程id

cRUSERReal user name

dUID进程所有者的用户id

eUSER进程所有者的用户名

fGROUP进程所有者的组名

gTTY启动进程的终端名。不是从终端启动的进程则显示为 ?

hPR优先级

iNInice值。负值表示高优先级,正值表示低优先级

jP最后使用的CPU,仅在多CPU环境下有意义

k%CPU上次更新到现在的CPU时间占用百分比

lTIME进程使用的CPU时间总计,单位秒

mTIME+进程使用的CPU时间总计,单位1/100秒

n%MEM进程使用的物理内存百分比

oVIRT进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

pSWAP进程使用的虚拟内存中,被换出的大小,单位kb。

qRES进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

rCODE可执行代码占用的物理内存大小,单位kb

sDATA可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb

tSHR共享内存大小,单位kb

unFLT页面错误次数

vnDRT最后一次写入到现在,被修改过的页面数。

wS进程状态。

D=不可中断的睡眠状态

R=运行

S=睡眠

T=跟踪/停止

Z=僵尸进程

xCOMMAND命令名/命令行

yWCHAN若该进程在睡眠,则显示睡眠中的系统函数名

zFlags任务标志,参考 sched.h

默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。

更改显示内容

通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。

按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。

按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。

    服务器出现由内存问题引发的故障,例如系统内部服务响应速度变慢、服务器登录不上、系统触发 OOM(Out Of Memory)等。通常情况下当实例内存使用率持续高于90%时,可判断为实例内存使用率过高。CPU/内存使用率过高的问题原因可能由硬件因素、系统进程、业务进程或者木马病毒等因素导致。     笔者以前写过一篇文章- Linux 下的 60 秒分析的检查清单 ,适用于 任何性能问题 的分析工作,这一篇文章是关于CPU/内存使用率的具体的排查思路总结。     执行 top 命令后按  M ,根据驻留内存大小进行排序,查看 “RES” 及 “SHR” 列是否有进程占用内存过高。按 P,以 CPU 占用率大小的顺序排列进程列表,查看是否有进程占用cpu过高。     如果有异常进程占用了大量 CPU 或内存资源,记录需要终止的进程 PID,输入k,再输入需要终止进程的 PID ,按 Enter。     另外说明一下,top 运行中可以通过 top 的内部命令对进程的显示方式进行控制,最常用的是M和P。     CPU 空闲但高负载情况,Load average 是 CPU 负载的评估,其值越高,说明其任务队列越长,处于等待执行的任务越多。执行ps -axjf命令,查看进程状态,并检查是否存在 D 状态进程。D 状态指不可中断的睡眠状态,该状态进程无法被杀死,也无法自行退出。若出现较多 D 状态进程,可通过恢复该进程依赖资源或重启系统进行解决。     Linux 系统通过分页机制管理内存的同时,将磁盘的一部分划出来作为虚拟内存。而 kswapd0 是 Linux 系统虚拟内存管理中负责换页的进程。当系统内存不足时,kswapd0 会频繁的进行换页 *** 作。换页 *** 作非常消耗 CPU 资源,导致该进程持续占用高 CPU 资源。     执行top命令,找到 kswapd0 进程。观察 kswapd0 进程状态,若持续处于非睡眠状态,且运行时间较长并持续占用较高 CPU 资源,执行 vmstat ,free,ps 等指令,查询系统内进程的内存占用情况,重启系统或终止不需要且安全的进程。如果 si,so 的值也比较高,则表示系统存在频繁的换页 *** 作,当前系统的物理内存已经不能满足您的需要。  si  表示每秒从交换区写入内存的大小(单位:kb/s) , so  每秒从内存写到交换区的大小。     执行cat/proc/meminfo |grep-i shmem命令查看共享内存。         buddy可以以页为单位获取连续的物理内存了,即4K为单位。slab负责需要频繁的获取/释放并不大的连续物理内存,比如几十字节。执行cat /proc/meminfo | grep -i SUnreclaim命令查看slab 内存。         标准的 4KB 大小的页面外,内存大页管理内存中的巨大的页面,处理较少的页面映射表,从而减少访问/维护它们的开销。执行cat /proc/meminfo | grep -iE "HugePages_Total|Hugepagesize" 查看内存大页。 内存使用率计算:  (Total - available)100% / Total (Total - Free - Buffers - Cached - SReclaimable + Shmem)* 100% / Total   cat /proc/meminfo查看信息含义:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8745111.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存