Linux性能监控神器:深入top命令详解与磁盘IO分析技巧

top 是一个 Linux 系统中的实时性能监控命令,主要用于显示系统中各个进程的实时状态。它可以提供了有关 CPU 使用率、内存使用情况、运行的任务数量、系统负载等信息。

1. top 命令的基本输出内容

当运行 top 命令时,屏幕上会显示以下几部分信息:

1.1 系统信息行(Summary Information)

位于 top 输出的顶部,包含以下内容:

  • uptime:系统已经运行的时间。
  • users:当前登录系统的用户数量。
  • load average:系统的平均负载,分别为过去 1 分钟、5 分钟和 15 分钟的平均值。这个值越高,表示系统的压力越大。
1.2 任务信息(Task Information)

显示当前系统的任务和进程状态:

  • Tasks:表示系统中总的进程数,分为运行(running)、睡眠(sleeping)、停止(stopped)和僵尸(zombie)进程的数量。
  • %Cpu(s):显示 CPU 使用情况,包括用户空间使用率、系统空间使用率、空闲率等。
1.3 内存信息(Memory Information)

显示系统内存的使用情况:

  • KiB Mem:显示物理内存的使用情况,包括总量(total)、已使用(used)、空闲(free)和缓存/缓冲(buffers/cache)。
  • KiB Swap:显示交换分区的使用情况。
1.4 进程列表(Process List)

显示当前系统中的各个进程,包括以下信息:

  • PID:进程 ID。
  • USER:运行该进程的用户。
  • PR:进程优先级。
  • NI:进程的 nice 值(影响进程优先级)。
  • VIRT:进程占用的虚拟内存大小。
  • RES:进程占用的物理内存大小。
  • SHR:进程使用的共享内存大小。
  • S:进程状态(S 表示休眠,R 表示运行,Z 表示僵尸进程等)。
  • %CPU:进程使用的 CPU 资源百分比。
  • %MEM:进程使用的内存资源百分比。
  • TIME+:进程使用的 CPU 时间总计。
  • COMMAND:运行该进程的命令名。

2. top 命令的常用选项和操作

  • -d <秒数>:设置 top 命令的刷新时间间隔。
  • -n <次数>:指定 top 命令运行的次数后自动退出。
  • -p <进程ID>:仅显示指定进程ID的信息。
  • -u <用户名>:仅显示指定用户名的进程信息。
  • -H:显示线程详细信息。
  • -i:不显示闲置或无用的进程。
  • -b:以批处理模式运行,直接将结果输出到文件。
  • -c:显示完整的命令行而不截断。
  • -S:累计显示进程的 CPU 使用时间。

3. 在 top 中的交互操作

  • h:显示帮助信息。
  • k:杀掉一个进程,输入进程的 PID 即可。
  • q :退出 top 命令。
  • r:重新调整某个进程的优先级。
  • s:更改屏幕刷新间隔时间。
  • P:按 CPU 使用率排序(默认排序)。
  • M:按内存使用率排序。
  • T:按运行时间排序。
  • c:显示完整的命令行(COMMAND)信息。
  • 1:显示每个 CPU 的负载信息。

4. 实际使用

  • 监控所有进程的 CPU 和内存使用情况

    bash 复制代码
    top
  • 以 5 秒的刷新间隔运行 top

    bash 复制代码
    top -d 5
  • 只查看指定用户的进程

    bash 复制代码
    top -u username
  • top 的输出保存到文件中

    bash 复制代码
    top -b -n 1 > top_output.txt
  • 显示前 10 个 CPU 使用率最高的进程:

    bash 复制代码
    top -b -n 1 | head -n 10

5. 查看 I/O 情况

top 命令默认情况下不显示详细的 I/O 使用情况。要在 top 中查看基本的 I/O 等待情况,可以关注以下字段:

  • wa : 在 top 命令输出的第三行(%Cpu(s)行),wa 字段表示 I/O 等待时间的百分比。如果该值较高,表示系统大量时间在等待 I/O 操作完成,通常意味着 I/O 子系统可能是性能瓶颈。

6. 其他查看 I/O 情况的工具

要详细查看每个进程的 I/O 使用情况,可以使用 iotopiostat 工具。

  1. iotop 命令 :类似于 top,但专门用于监控 I/O 使用情况。

    • 安装 iotop

      bash 复制代码
      sudo apt-get install iotop   # 对于 Debian/Ubuntu
      sudo yum install iotop       # 对于 CentOS/RHEL
    • 使用 iotop 查看 I/O 使用情况:

      bash 复制代码
      sudo iotop

      iotop 的输出会显示每个进程的 I/O 读取和写入速度,以及它们的 I/O 优先级。

  2. iostat 命令:用于显示设备级别的 I/O 统计信息。

    • 安装 iostat(通常在 sysstat 包中):

      bash 复制代码
      sudo apt-get install sysstat   # 对于 Debian/Ubuntu
      sudo yum install sysstat       # 对于 CentOS/RHEL
    • 使用 iostat 查看 I/O 使用情况:

      bash 复制代码
      iostat -x 1

      iostat -x 1 命令会以 1 秒的间隔显示设备级别的详细 I/O 统计信息,包括读取/写入速度、设备的使用率等。

总结

  • top 命令非常适合查看系统整体的 CPU 和内存使用情况,并可简单地查看 I/O 等待时间。
  • 对于更详细的 I/O 使用情况分析,推荐使用 iotopiostat 工具,它们可以提供进程级别和设备级别的 I/O 数据。
  • top 命令是系统管理员和开发人员在 Linux 系统中进行实时监控的一个强大工具。熟练使用 top 可以有效地监控系统性能,发现和解决系统中的性能瓶颈问题。
相关推荐
默子昂4 分钟前
yolo自动化项目实例解析(二)ui页面整理
运维·yolo·自动化
学习3人组15 分钟前
第4步CentOS配置SSH服务用SSH终端XShell等连接方便文件上传或其它操作
linux·centos·ssh
wd52052115 分钟前
Centos挂载和删除nfs
linux·运维·centos
左直拳20 分钟前
设置spring boot禁止日志输出到控制台
spring boot·后端·乱码·logback·slf4j·输出到控制台
C_player_00121 分钟前
应用层协议——http
linux·网络·网络协议·http
redmond8822 分钟前
linux 双网卡服务器突然断电后网卡单通故障解决
linux·运维·服务器
the丶only27 分钟前
获取zabbix API 监控数据shell脚本,自动日常巡检服务器信息、并发送指定群组
linux·运维·服务器·自动化·bash·zabbix
爱编码的钓鱼佬29 分钟前
浅谈openresty
运维·nginx·openresty
小江湖199436 分钟前
实时系统资源监测:AutoPowerOptionsOK确保电脑性能与节能兼备
运维·学习·计算机视觉·电脑·软件需求·改行学it
Flying_Fish_roe38 分钟前
Spring Boot 自动配置
java·spring boot·后端