当前位置: 首页 > news >正文

Linux(十六)——top命令详解

文章目录

  • 前言
  • 一、top命令输出结构解析
    • 1.1 第一行:系统概况
    • 1.2 第二行:进程状态统计
    • 1.3 第三行:CPU使用详情
    • 1.4 第四行:物理内存使用情况
    • 1.5 第五行:交换分区(Swap)信息
    • 1.6 第七行及以下:进程列表
  • 总结

前言

top命令是Linux系统中常用的性能监控工具,能够实时显示系统中各个进程的资源占用状况。本文档详细解析top命令输出信息的各个部分,帮助系统管理员和开发人员更好地理解系统运行状态,快速定位性能问题。

一、top命令输出结构解析

1.1 第一行:系统概况

在这里插入图片描述

15:32:10 — 当前系统时间  
126 days, 14:29 — 系统运行时长(自上次启动后未重启)  
2 users — 当前登录用户数  
load average: 1.15, 1.42, 1.44 — 系统负载(1分钟、5分钟、15分钟平均值)
  • 负载说明:若负载值接近或超过CPU核心数,表明系统可能过载。

1.2 第二行:进程状态统计

在这里插入图片描述

Tasks: 177 tota  
1 running — 运行中的进程数  
176 sleeping — 休眠的进程数  
0 stopped — 停止的进程数  
0 zombie — 僵尸进程数
  • 僵尸进程:若数值非零,需检查并清理已终止但未被父进程回收的进程。

1.3 第三行:CPU使用详情

在这里插入图片描述

Cpu(s):  
0.2% us — 用户空间进程占用  
0.2% sy — 内核进程占用  
0.0% ni — 调整过优先级的进程占用  
99.3% id — CPU空闲率  
0.0% wa — I/O等待时间  
0.0% hi — 硬中断时间  
0.0% si — 软中断时间  
0.0% st — 虚拟机偷取时间
  • 关键指标
    • wa:高值可能表示磁盘I/O瓶颈。
    • st:虚拟化环境中,高值表示物理CPU资源被其他虚拟机占用。

1.4 第四行:物理内存使用情况

在这里插入图片描述

KiB Mem:  
3861300k total — 内存总量  
2073924k free — 空闲内存  
979340k used — 已用内存  
808112k buff/cache — 内核缓存内存
  • 注意:Linux会利用空闲内存作缓存,因此“free”值低不一定表示内存不足。

1.5 第五行:交换分区(Swap)信息

在这里插入图片描述

KiB Swap:  
4194300k total — 交换区总量  
4194300k free — 空闲交换区  
0k used — 已用交换区  
2620612k avail Mem — 可用内存(含缓存回收)
  • Swap使用:若“used”值持续增长,可能需优化内存配置或扩容。

1.6 第七行及以下:进程列表

列名说明
PID进程ID
USER进程所有者
PR动态优先级(由内核调整)
NINice值(-20到19),负值表示更高优先级
VIRT虚拟内存占用(含申请未使用的内存和共享库)
RES实际物理内存占用(不含Swap)
SHR共享内存大小(含其他进程共享部分),虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
S进程状态(D=不可中断睡眠,R=运行,S=睡眠,T=停止,Z=僵尸)
%CPUCPU占用百分比
%MEM物理内存占用百分比
TIME+累计CPU使用时间(单位1/100秒)
COMMAND启动命令
  • 内存计算:进程实际独占内存 ≈ RES - SHR。
  • VIRT与RES
    • VIRT(虚拟内存):表示进程当前占用的全部虚拟内存空间,包括实际使用的库、代码、数据等。其特点是反映进程"申请"而非"实际使用"的内存大小。例如,当进程申请100MB内存但仅使用10MB时,VIRT仍会显示增加100MB。
    • RES(常驻内存):指进程实际占用的物理内存大小。与VIRT不同,它只计算真实使用的内存量。沿用上述例子,当申请100MB仅使用10MB时,RES仅增加10MB。与 VIRT 相反。

在这里插入图片描述


总结

top命令提供了全面的系统性能快照,通过分析其输出,可以快速掌握以下信息:

  1. 系统负载:通过运行时间、负载平均值判断系统压力。
  2. CPU瓶颈:结合用户态、内核态、I/O等待时间定位问题。
  3. 内存使用:区分缓存、实际占用及Swap使用情况。
  4. 进程监控:识别高资源占用进程及异常状态(如僵尸进程)。

建议:结合其他工具(如vmstatiostat)进一步分析性能问题根源。

http://www.dtcms.com/a/336402.html

相关文章:

  • wrap go as a telnet client lib for c to implement a simple telnet client
  • 堆的实际应用场景
  • 【Virtual Globe 渲染技术笔记】8 顶点变换精度
  • C11期作业17(07.05)
  • Microsoft WebView2
  • AMBA-AXI and ACE协议详解(十)
  • Rust:DLL 输出对象的生命周期管理
  • 影刀初级B级考试大题2
  • STM32CUBEMX配置stm32工程
  • Linux学习-多任务(线程)
  • LangChain4j
  • 三分钟在VMware虚拟机安装winXP教程,开箱即用
  • HTTP0.9/1.0/1.1/2.0
  • linux下timerfd和posix timer为什么存在较大的抖动?
  • USB-A 3.2 和 USB-A 2.0的区别
  • 集成电路学习:什么是ORB方向性FAST和旋转BRIEF
  • 外贸电商选品方案的模型
  • 天地图应用篇: 增加缩放、比例尺控件
  • 集运业务突围:三大关键问题的智能化解决方案
  • 【数据结构与算法-Day 16】队列的应用:广度优先搜索(BFS)的基石与迷宫寻路实战
  • vulnhub-lampiao靶机渗透
  • 002.Redis 配置及数据类型
  • 安装pytorch3d后报和本机cuda不符
  • LLM、RAG、Agent知识点思维导图
  • 简单了解BeanFactory和FactoryBean的区别
  • AMBA-AXI and ACE协议详解(八)
  • Critic-V: VLM Critics Help Catch VLM Errors in Multimodal Reasoning(CVPR 2025)
  • C++零拷贝网络编程实战:从理论到生产环境的性能优化之路
  • Word和Excel的一些功能记录
  • PHP现代化全栈开发:测试驱动开发与持续交付实践