性能测试-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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?