2025年Top详解

Top详解Linux 系统可以通过 top 命令查看系统的 CPU 内存 运行时间 交换分区 执行的线程等信息 通过 top 命令可以有效的发现系统的缺陷出在哪里 是内存不够 CPU 处理能力不够 IO 读写过高 一 top 命令的第一行 top 19 56 47 up 39 min 3 users load average 0 00 0 00 0 00 显示的内容依次为 系统当前时间

大家好,我是讯享网,很高兴认识大家。

Linux系统可以通过top命令查看系统的CPU、内存、运行时间、交换分区、执行的线程等信息。通过top命令可以有效的发现系统的缺陷出在哪里。是内存不够、CPU处理能力不够、IO读写过高


讯享网

 一、top命令的第一行“top - 19:56:47 up 39 min, 3 users, load average: 0.00, 0.00, 0.00”显示的内容依次为“系统当前时间 、系统到目前为止已运行的时间、当前登录系统的用户数量、系统负载(任务队列的平均长度)三个值分别为1分钟、5分钟、15分钟前到现在的平均值【这三个一般会小于1,如果持续高于5,请仔细查看那个程序影响系统的运行】”

二、top命令的第二行“Tasks: 120 total, 2 running, 118 sleeping, 0 stopped, 0 zombie”显示的内容依次“所有启动的进程数”、“正在运行的进程数”、“挂起的进程数”、“停止的进程数”、“僵尸进程数”。在 linux 系统中,一般把进程和线程统称为任务 ;第二行信息是对当前系统中所有任务的统计

 

三、top命令的第三行“Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st”显示的内容依次为“用户空间占用CPU百分比”、“内核空间占用CPU百分比”、“用户空间内改变过优先级的进程占用CPU百分比”、“空闲CPU百分比”、“等待输入输出CPU时间百分比”、“CPU服务于硬件中断所耗费的时间总额”、“CPU服务软中断所耗费的时间总额”、“Steal Time”;

us:进程在用户地址空间中消耗 CPU 时间的百分比。像 shell程序、各种语言的编译器、数据库应用、web 服务器和各种桌面应用都算是运行在用户地址空间的进程。这些程序如果不是处于 idle 状态,那么绝大多数的 CPU 时间都是运行在用户态

ni:如果系统中没有进程被调整过 nice 值,那么 ni 就显示为 0;

sy:对于操作系统的设计来说,消耗在内核态的时间应该是越少越好。在实践中有一类典型的情况会使 sy 变大,那就是大量的 IO 操作,因此在调查 IO 相关的问题时需要着重关注它

id:CPU 处于 idle 状态的百分比。一般情况下, us + ni + id 应该接近 100%

wa:CPU 等待磁盘 IO 操作的时间。和 CPU 的处理速度相比,磁盘 IO 操作是非常慢的。有很多这样的操作,比如:CPU 在启动一个磁盘读写操作后,需要等待磁盘读写操作的结果。在磁盘读写操作完成前,CPU 只能处于空闲状态。Linux 系统在计算系统平均负载时会把 CPU 等待 IO 操作的时间也计算进去,所以在我们看到系统平均负载过高时,可以通过 wa 来判断系统的性能瓶颈是不是过多的 IO 操作造成的

hi&si:这两个值表示系统处理中断消耗的时间。中断分为硬中断和软中断,hi 表示处理硬中断消耗的时间,si 表示处理软中断消耗的时间。硬中断是硬盘、网卡等硬件设备发送给 CPU 的中断消息,当 CPU 收到中断消息后需要进行适当的处理(消耗 CPU 时间)。软中断是由程序发出的中断,最终也会执行相应的处理程序(消耗 CPU 时间)

st:只有 Linux 在作为虚拟机运行时 st 才是有意义的。它表示虚机等待 CPU 资源的时间(虚机分到的是虚拟 CPU,当需要真实的 CPU 时,可能真实的 CPU 正在运行其它虚机的任务,所以需要等待)

top 命令默认以 K 为单位显示内存大小

 四、top命令第四行“Mem: k total, k used, 28648k free, 41944k buffers”显示内容依次为“物理内存总量”、“已使用的物理内存”、“空闲物理内存”、“内核缓存内存量”

 五、top命令第5行“Swap: k total, 0k used, k free, k cached”显示内容依次为“交换区总量”、“已使用交互区总量”、“空闲交换区总量”、“缓冲的交换区总量”。

六、top命令第6行“PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND ”显示内容依次为“进程ID”、“进程所有者”、“优先级”、“nice值,负值表示高优先级,正值表示低优先级”、“进程使用的虚拟内存总量”、“进程使用的、未被换出的物理内存大小”、“共享内存大小”、“进程状态”、“上次更新到现在的CPU时间占用百分比”、“进程使用的物理内存百分比”、“进程使用CPU总时间”、“命令名、命令行”
 

top查看线程/进程

1、查看某个进程的线程

ps -T -p <pid>

top -H -p <pid>

通过名字

top -H -p $(pidof name)

top -H -p $(pgrep -f name)

如果有多个同名进程,用:eval top -p $(echo $(pidof name)|tr ' ' ',')

                                           eval top -H -p $(echo $(pidof name)|tr ' ' ',')

只查某几个进程的信息

top -p 21538,31117,31116,31115,31114

2、查看所有的线程

top -H  

top翻页:Shift+<   上翻    Shift+> 下翻

根据进程名字进行查询:

# pstree -p `ps -e | grep server | awk '{print $1}'`

# pstree -p `ps -e | grep server | awk '{print $1}'` | wc -l
3.查找线程的父进程

借鉴:【调试】linux top查看线程/进程_linux查看线程_bandaoyu的博客-CSDN博客

4.查看多核CPU命令

5.监控java线程数

ps -eLf | grep java | wc -l

6.监控网络客户连接数

netstat -n | grep tcp | grep 侦听端口 | wc -l

上面两个命令,可改动grep的参数,来达到更细致的监控要求。

在Linux系统“一切都是文件”的思想贯彻指导下,所有进程的运行状态都可以用文件来获取。系统根目录/proc中,每一个数字子目录的名字都是运行中的进程的PID,进入任一个进程目录,可通过其中文件或目录来观察进程的各项运行指标,例如task目录就是用来描述进程中线程的,因此也可以通过下面的方法获取某进程中运行中的线程数量(PID指的是进程ID)

ls /proc/PID/task | wc -l
在linux中还有一个命令pmap,来输出进程内存的状况,可以用来分析线程堆栈

 pmap PID

大家都熟悉Linux下可以通过top命令来查看所有进程的内存,CPU等信息。除此之外,还有其他一些命令,可以得到更详细的信息,例如进程相关

cat /proc/your_PID/status  

通过top或ps -ef | grep '进程名' 得到进程的PID。该命令可以提供进程状态、文件句柄数、内存使用情况等信息。
内存相关
    vmstat -s -S M  
该可以查看包含内存每个项目的报告,通过-S M或-S k可以指定查看的单位,默认为kb。结合watch命令就可以看到动态变化的报告了。

也可用  cat /proc/meminfo  

要看cpu的配置信息可用

cat /proc/cpuinfo  

它能显示诸如CPU核心数,时钟频率、CPU型号等信息。

要查看cpu波动情况的,尤其是多核机器上,可使用

mpstat -P ALL 10 

该命令可间隔10秒钟采样一次CPU的使用情况,每个核的情况都会显示出来,例如,每个核的idle情况等。
只需查看均值的,可用
    iostat -c 
IO相关
    iostat -P ALL  
该命令可查看所有设备使用率、读写字节数等信息

top命令的交互式操作

h或?

显示帮助信息,给出交互式命令的一些说明

k

终止一个进程,系统将提示用户输入一个需要终止进程的PID

i

忽略闲置进程和僵死进程,这是一个开关式命令

s

改变top输出信息两次刷新之间的时间,系统将提示输入新的时间,单位是秒。如果输入小数,就换算成毫秒;如果输入0,系统输出将不断刷新,默认刷新时间是3秒;需要注意的是,如果设置太短的时间,可能会引起系统不断刷新,无法看清输出显示情况,而且系统负载也会加大

o或者O

改变top输出信息中显示项的顺序。按小写的a-z键可以将相应的列向右移动,而按大写的A-Z键可以将相应的列向左移动。最后按enter确定

f或者F 从当前显示列表中添加或者删除项,

按f键之后会显示列的列表,按a-z键即可显示或隐藏对应的列。最后按enter确定

m

切换显示内存信息

t

切换显示进程和cpu状态信息

r

重新设置一个进程的优先级,系统提示用户输入需要改变的进程PID以及需要设置的进程

优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认

值是10

I

切换显示平均负载和启动时间信息

q

退出top显示

c

切换显示完整命令行和命令名称信息

M

根据驻留内存大小进行排序输出

N

以PID来排序

P

根据CPU使用百分比大小进行排序输出

T

根据时间/累计时间进行排序输出

S

切换到累计模式

W

将当前top设置写入~/.toprc文件中

 

小讯
上一篇 2025-01-07 07:55
下一篇 2025-01-25 07:25

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/55973.html