暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

linux工具大师-系统监控与性能工具浅入系统资源的世界

囧囧妹 2023-09-04
121

点击上方蓝字【囧囧妹】一起学习,一起成长!

在Linux世界中,系统监控和性能分析工具是系统管理员和开发人员的得力助手。它们能够帮助你深入了解系统的运行情况,解决性能问题,以及优化系统资源的使用。本文将深入研究几个重要的系统监控和性能分析工具:top、htop、vmstat、iostat、sar和dstat。我们将不仅介绍它们的基本用法,还会解释各个参数的含义,以便你更好地利用这些工具监视和分析你的Linux系统。


  1. top 和 htop:监视系统资源和进程
  • top 是一个基于终端的实时进程查看工具。它通过读取 proc 目录下的系统信息和进程信息,然后将其格式化并在终端上显示。top定期(通常每秒一次)读取这些信息,然后计算和展示CPU利用率、内存使用、进程列表等数据。
  • htop 也是一个进程查看工具,它在top的基础上提供了更多的交互性和信息展示。htop的内部实现与top类似,但它使用了更多的颜色和可视化效果,使用户更容易理解系统状态。
top指令演示:

  1. 顶部信息行:

    • top
      :显示当前正在运行的top
      命令。

    • 17:34:50
      :当前系统时间(时:分:秒)。

    • up 0 min,
      系统已经运行的时间,即系统启动后经过的时间(天,小时:分钟)。

    • 0 users
      :当前系统登录的用户数。

    • load average: 0.52, 0.58, 0.59
      :系统的平均负载,分别表示1分钟、10分钟和15分钟的平均负载。负载反映了系统中等待执行的进程数量。在多核CPU中,负载应该不高于CPU核心的数量。

  2. 第二行:

    • Tasks: 4 total
      :总的进程数量。

    • 1 running
      :正在运行的进程数量。

    • 3 sleeping
      :休眠中的进程数量。

    • 0 stopped
      :停止的进程数量。

    • 0 zombie
      :僵死的进程数量(僵尸进程是已经结束但仍在系统中占用资源的进程)。

  3. 第三行(CPU利用率):

    • %us
      :用户空间占用CPU百分比,表示用户进程使用的CPU时间。

    • %sy
      :内核空间占用CPU百分比,表示内核操作使用的CPU时间。

    • %ni
      :用户进程空间内改变过优先级的进程占用CPU百分比。

    • %id
      :空闲CPU百分比,表示系统CPU的空闲时间百分比(越大越空闲)。

    • %wa
      :等待I/O操作的CPU百分比。

    • %hi
      :CPU处理硬件中断的时间百分比。

    • %si
      :CPU处理软件中断的时间百分比。

    • %st
      :对于虚拟CPU,表示被虚拟机偷走的CPU时间百分比。

  4. 第四行(内存信息 - Mem):

    • KiB Mem
      :物理内存的总量。

    • total
      :总的物理内存。

    • used
      :已使用的物理内存大小。

    • free
      :空闲的物理内存大小。

    • buffers
      :用于内核缓存的内存大小。

  5. 第五行(交换空间信息 - Swap):

    • KiB Swap
      :交换空间的总大小。

    • total
      :总的交换空间大小。

    • used
      :已使用的交换空间大小。

    • free
      :空闲的交换空间大小。

    • cached
      :缓冲的交换空间大小。

  6. 进程列表:

    • 列表中包括了运行在系统上的各个进程的详细信息,如进程号(PID)、运行用户、优先级(PR)、任务nice值(NI)、虚拟内存大小(VIRT)、物理内存用量(RES)、共享内存用量(SHR)、进程状态(S)、CPU占用百分比(%CPU)、内存占用百分比(%MEM)、累计CPU占用时间(TIME+)和命令名称(COMMAND)。

这些信息大部分对于排查问题都比较关键,有时我们还需要对top增加一些参数来执行,以展示更多的信息,比如线程信息可以添加 -H,具体可以参考man手册。

htop指令展示:

htop是top的改进版本,提供了更多的交互性和信息展示。

  • F1:显示帮助。

  • F4:按命令过滤进程。

  • F9:发送信号给选定的进程。

2. vmstat 和 iostat:监控虚拟内存和磁盘I/O性能
  • vmstat(Virtual Memory Statistics)用于监视虚拟内存的性能。它通过读取 proc/meminfo 文件和 proc/stat 文件来获取内存和CPU的相关信息。vmstat显示这些信息,并计算内存交换、I/O等性能指标。
  • iostat(Input/Output Statistics)用于监视磁盘I/O性能。它通过读取 proc/diskstats 文件来获取磁盘I/O统计数据。iostat会定期读取这些数据,计算每个磁盘的读写速率、队列长度、等待时间等信息,并将其显示出来。


vmstat指令演示:

这些列分别表示:

  • procs
    :进程信息。

    • r
      :正在运行的进程数量。

    • b
      :在等待资源的进程数量。

  • memory
    :内存使用情况。

    • swpd
      :已使用的交换空间大小。

    • free
      :空闲物理内存大小。

    • buff
      :用于缓冲的内存大小。

    • cache
      :用于缓存的内存大小。

  • swap
    :交换空间使用情况。

    • si
      :从磁盘交换到内存的数据量(swap in)。

    • so
      :从内存交换到磁盘的数据量(swap out)。

  • io
    :I/O操作。

    • bi
      :每秒块设备读操作数(blocks in)。

    • bo
      :每秒块设备写操作数(blocks out)。

  • system
    :系统相关指标。

    • in
      :每秒中断的数量(interrupts)。

    • cs
      :每秒上下文切换的数量(context switches)。

  • cpu
    :CPU利用率。

    • us
      :用户空间占用CPU的百分比。

    • sy
      :内核空间占用CPU的百分比。

    • id
      :空闲CPU的百分比。

    • wa
      :等待I/O操作的CPU的百分比。

    • st
      :被虚拟机偷取的CPU的百分比。

iostat指令演示:

这些列分别表示:

  • avg-cpu
    :CPU利用率统计。

    • %user
      :用户空间占用CPU的百分比。

    • %nice
      :用户空间低优先级进程占用CPU的百分比。

    • %system
      :内核空间占用CPU的百分比。

    • %iowait
      :等待I/O操作完成的CPU的百分比。

    • %steal
      :被虚拟机偷取的CPU的百分比。

    • %idle
      :空闲CPU的百分比。

  • Device
    :块设备名称。

  • tps
    :每秒传输的I/O请求(事务数)。

  • kB_read/s
    :每秒从设备读取的数据量(千字节/秒)。

  • kB_wrtn/s
    :每秒写入设备的数据量(千字节/秒)。

  • kB_dscd/s
    :每秒被丢弃的数据量(千字节/秒)。

  • kB_read
    :总的读取数据量。

  • kB_wrtn
    :总的写入数据量。

  • kB_dscd
    :总的被丢弃的数据量。


3. sar 和 dstat:性能数据采集与分析
  • sar(System Activity Reporter)是一个强大的系统性能数据采集工具。它通过系统内核的性能计数器来收集各种性能数据,如CPU使用率、内存使用情况、磁盘I/O等。sar默认会将数据写入 /var/log/sa 目录下的文件,供后续分析使用。
  • dstat 是一个实时系统监控工具,它收集各种性能数据,包括CPU、内存、磁盘、网络等。dstat的内部实现通过读取 /proc 文件系统中的数据,并通过计算和分析这些数据来生成实时性能报告。dstat的优势在于它可以根据需要显示多种性能数据,帮助用户更全面地了解系统状态。
sar命令展示:

sar每秒获取一次,获取五次。
  • %user:用户态CPU使用率。

  • %nice:优先级较低的进程使用CPU的百分比。

  • %system:系统态CPU使用率。

  • %iowait:等待I/O完成的CPU时间百分比。

  • %idle:CPU空闲时间百分比。

dstat命令展示:

  • -c:显示CPU统计信息。

  • -m:显示内存统计信息。

  • -n:显示网络统计信息。

以上这些工具将成为你深入了解和优化Linux系统性能的利器。现在,你不仅知道如何使用它们,还明白了它们输出的各个参数的含义。通过监控系统资源和性能,你能更好地维护和管理你的Linux系统,确保其高效稳定地运行。其实linux提供了很多的工具,后面有机会也会进行一些实战演示。

关注囧囧妹公众号,探索更多有关Linux、技术和编程的精彩内容!

欢迎留言分享你对命令行工具的使用经验和想法。如果你有任何问题,也可以在评论区提问,我会尽力为你解答。

觉得不错,点击“分享”,“赞”,“在看”传播给更多热爱嵌入式的小伙伴吧!

文章转载自囧囧妹,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论