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 可以有效地监控系统性能,发现和解决系统中的性能瓶颈问题。
相关推荐
moxiaoran57534 分钟前
Flask学习笔记(一)
后端·python·flask
ajassi20005 分钟前
linux C 语言开发 (八) 进程基础
linux·运维·服务器
..过云雨16 分钟前
05.【Linux系统编程】进程(冯诺依曼体系结构、进程概念、进程状态(注意僵尸和孤儿)、进程优先级、进程切换和调度)
linux·笔记·学习
你的人类朋友22 分钟前
🔒什么是HMAC
后端·安全·程序员
matlab的学徒1 小时前
Web与Nginx网站服务(改)
linux·运维·前端·nginx·tomcat
Insist7531 小时前
prometheus安装部署与alertmanager邮箱告警
linux·运维·grafana·prometheus
盖世英雄酱581361 小时前
Read timed out问题 排查
java·数据库·后端
BAGAE2 小时前
MODBUS 通信协议详细介绍
linux·嵌入式硬件·物联网·硬件架构·iot·嵌入式实时数据库·rtdbs
灿烂阳光g2 小时前
SELinux 策略文件编写
android·linux
xqlily2 小时前
Linux操作系统之Ubuntu
linux·运维·ubuntu