性能测试-top-实时显示系统中各个进程的资源占用状况, 也可以查看线程

 

正文

1.top命令介绍

top命令是Linux系统中常用的性能分析工具,可以实时地查看系统的运行情况,比如内存、CPU、负载以及各个进程的资源占用情况

top界面主要分为两个部分,前5行展示的是系统的整体性能,光标下面部分是系统中每个进程的具体信息。光标所在处是用来输入操作命令的。

常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况

 

buffer 缓冲区-磁盘虚拟出来的,用来加快读的速度的空间

swap 交换分区-磁盘虚拟出来的,内存数据转移,比如内存满了,要存磁盘临时移动用的空间。

2.top命令输出结果分析

第一行:

top - 14:39:05 up 36 days, 21:26,  3 users,  load average: 56.31, 55.92, 56.03
  • top:名称
  • 14:39:05:系统当前时间
  • up 36 days, 21:26:系统以及运行的时间,和uptime命令相等
  • 3 users:当前有3个用户在线
  • load average: 56.31, 55.92, 56.03:系统一定时间内的平均负载,分别是1分钟、5分钟、15分钟。

主要关注load average这个值,所谓系统负载就是:在一段时间内,CPU正在处理以及等待CPU处理的进程数之和。系统在同一时间运行的进程数和系统CPU核数相关,一般来说Load Average的数值别超过这台机器的总核数,就没什么问题。

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

如何知道我们现在系统的负载情况?

load average: 0.00, 0.01, 0.05 
看第1个值 是上升趋势,还是下将
第1个值小于第二值,现在系统负载正在下降,再过一段时间可能会恢复正常。

系统负载值,不等于cpu使用率值。因为系统的负载值,它主要由两部分组成: cpu的使用率+ io使用率
历史的经验,系统负载高低,与cpu的数量有一定关系。
以后,不要说系统负载值大于cpu数量,就一定负载高。

查看当前系统cpu使用率最高的4个进程: n 4 回车

top命令默认3秒钟刷新一次数据: s\d 数字 比如 d 5,就是5秒刷新一次

我只想看某个进程下的线程资源使用情况: top -H -p pid值

us\usr、sy\sys--相同,不同写法

第二行:

Tasks: 265 total,   2 running, 263 sleeping,   0 stopped,   0 zombie
  • Tasks:任务,也就是进程,切换为线程用H
  • 265 total:当前总共有265个任务,也就是265个进程
  • 2 running:2个进程正在运行
  • 263 sleeping:263个进程正在休眠
  • 0 stopped:0个停止的进程
  • 0 zombie:0个僵尸进程

第三行:

%Cpu(s): 88.9 us,  7.9 sy,  0.0 ni,  1.7 id,  0.0 wa,  1.4 hi,  0.0 si,  0.0 st
  • %Cpu(s):CPU使用率,所有cpu数量的一个总体使用率,按1,可以查看每个核cpu的使用情况
  • 88.9 us:用户空间占用CPU的百分比(大部分进程都运行在用户态,通常都是希望用户空间CPU越高越好)
  • 7.9 sy:内核空间占用CPU的百分比(Linux内核态占用的CPU时间,系统 CPU占用越高,表明系统某部分存在瓶颈。通常这个值越低越好)
  • 0.0 ni:改变过优先级的进程占用CPU的百分比(ni是nice的缩写,进程用户态的优先级,如果调整过优先级,那么展示的就是调整过nice值的进程消耗掉的CPU时间,如果系统中没有进程被调整过nice值,那么ni就显示为0)
  • 1.7 id:空闲CPU百分比,等待进程运行
  • 0.0 wa:等待输入输出的占用CPU百分比(CPU的处理速度是很快的,磁盘IO操作是非常慢的。wa表示 CPU 在等待 IO 操作完成所花费的时间。系统不应该花费大量的时间来等待 IO 操作,否则就说明 IO 存在瓶颈)
  • 1.4 hi:CPU硬中断占用CPU百分比(硬中断是硬盘、网卡等硬件设备发送给CPU的中断消息 )
  • 0.0 si:CPU软中断占用CPU百分比(软中断是由程序发出的中断 )
  • 0.0 st:被强制等待(involuntary wait)虚拟 CPU 的时间,此时 Hypervisor 在为另一个虚拟处理器服务。

第四行:

MiB Mem :  15508.4 total,   3858.4 free,   3369.3 used,   828.07 buff/cache
  • MiB Mem:内存,切换单位按大写的E
  • 15508.4 total:物理内存总量
  • 3858.4 free:空闲内存量
  • 3369.3 used:已使用的内存量
  • 828.07 buff/cache:用作内核缓存的内存量

第五行:

MiB Swap:   4096.0 total,   3855.1 free,    240.9 used.  10823.7 avail Mem
  • MiB Swap:交换内存空间(虚拟内存,当内存不足的时候,把一部分硬盘空间虚拟成内存使用,一般为内存的2倍)
  • 4096.0 total:交换区总量
  • 3855.1 free:空闲交换区总量
  • 240.9 used:使用的交换区总量
  • 10823.7 avail Mem:可用于启动一个新应用的内存(物理内存),和free不同,它计算的是可回收的page cache和memory slab

第四行和第五行输出信息,等同于使用free -m命令。

第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。

如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached,按这个公式此台服务器的可用内存:18537836k +169884k +3612636k = 22GB左右。

对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

 PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  • PID:进程id  下面切单位用小写e,上面切单位用大写的E
  • USER:进程所有者
  • PR:进程的优先级,越小优先级越高
  • NI:nice值,负值表示高优先级,正值表示低优先级
  • VIRT:进程使用的虚拟内存,单位是kb
  • RES:进程使用的物理内存,单位kb
  • SHR:进程使用的共享内存,单位kb  ---进程的内存相关数据,按小写e 可以切换单位
  • S:进程状态(S表示休眠,R表示正在运行, Z表示僵死状态,N表示该进程优先值为负数,I表示空闲状态)
  • %CPU:进程占用的CPU使用率
  • %MEM:进程使用的物理内存和总内存的百分比
  • TIME+:进程使用的CPU时间总计,单位1/100秒
  • COMMAND:命令行

参考链接:

https://blog.csdn.net/m0_51627713/article/details/118091336

https://blog.csdn.net/weixin_40734030/article/details/125558689

posted @   依羽杉  阅读(739)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示