点击上方蓝字【囧囧妹】一起学习,一起成长!
在Linux世界中,系统监控和性能分析工具是系统管理员和开发人员的得力助手。它们能够帮助你深入了解系统的运行情况,解决性能问题,以及优化系统资源的使用。本文将深入研究几个重要的系统监控和性能分析工具:top、htop、vmstat、iostat、sar和dstat。我们将不仅介绍它们的基本用法,还会解释各个参数的含义,以便你更好地利用这些工具监视和分析你的Linux系统。
top 和 htop:监视系统资源和进程
top 是一个基于终端的实时进程查看工具。它通过读取 proc 目录下的系统信息和进程信息,然后将其格式化并在终端上显示。top定期(通常每秒一次)读取这些信息,然后计算和展示CPU利用率、内存使用、进程列表等数据。 htop 也是一个进程查看工具,它在top的基础上提供了更多的交互性和信息展示。htop的内部实现与top类似,但它使用了更多的颜色和可视化效果,使用户更容易理解系统状态。

顶部信息行:
top
:显示当前正在运行的top
命令。17:34:50
:当前系统时间(时:分:秒)。up 0 min,
系统已经运行的时间,即系统启动后经过的时间(天,小时:分钟)。0 users
:当前系统登录的用户数。load average: 0.52, 0.58, 0.59
:系统的平均负载,分别表示1分钟、10分钟和15分钟的平均负载。负载反映了系统中等待执行的进程数量。在多核CPU中,负载应该不高于CPU核心的数量。第二行:
Tasks: 4 total
:总的进程数量。1 running
:正在运行的进程数量。3 sleeping
:休眠中的进程数量。0 stopped
:停止的进程数量。0 zombie
:僵死的进程数量(僵尸进程是已经结束但仍在系统中占用资源的进程)。第三行(CPU利用率):
%us
:用户空间占用CPU百分比,表示用户进程使用的CPU时间。%sy
:内核空间占用CPU百分比,表示内核操作使用的CPU时间。%ni
:用户进程空间内改变过优先级的进程占用CPU百分比。%id
:空闲CPU百分比,表示系统CPU的空闲时间百分比(越大越空闲)。%wa
:等待I/O操作的CPU百分比。%hi
:CPU处理硬件中断的时间百分比。%si
:CPU处理软件中断的时间百分比。%st
:对于虚拟CPU,表示被虚拟机偷走的CPU时间百分比。第四行(内存信息 - Mem):
KiB Mem
:物理内存的总量。total
:总的物理内存。used
:已使用的物理内存大小。free
:空闲的物理内存大小。buffers
:用于内核缓存的内存大小。第五行(交换空间信息 - Swap):
KiB Swap
:交换空间的总大小。total
:总的交换空间大小。used
:已使用的交换空间大小。free
:空闲的交换空间大小。cached
:缓冲的交换空间大小。进程列表:
列表中包括了运行在系统上的各个进程的详细信息,如进程号(PID)、运行用户、优先级(PR)、任务nice值(NI)、虚拟内存大小(VIRT)、物理内存用量(RES)、共享内存用量(SHR)、进程状态(S)、CPU占用百分比(%CPU)、内存占用百分比(%MEM)、累计CPU占用时间(TIME+)和命令名称(COMMAND)。

htop是top的改进版本,提供了更多的交互性和信息展示。
F1:显示帮助。
F4:按命令过滤进程。
F9:发送信号给选定的进程。
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的百分比。

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

%user:用户态CPU使用率。
%nice:优先级较低的进程使用CPU的百分比。
%system:系统态CPU使用率。
%iowait:等待I/O完成的CPU时间百分比。
%idle:CPU空闲时间百分比。

-c:显示CPU统计信息。
-m:显示内存统计信息。
-n:显示网络统计信息。
以上这些工具将成为你深入了解和优化Linux系统性能的利器。现在,你不仅知道如何使用它们,还明白了它们输出的各个参数的含义。通过监控系统资源和性能,你能更好地维护和管理你的Linux系统,确保其高效稳定地运行。其实linux提供了很多的工具,后面有机会也会进行一些实战演示。
关注囧囧妹公众号,探索更多有关Linux、技术和编程的精彩内容!
欢迎留言分享你对命令行工具的使用经验和想法。如果你有任何问题,也可以在评论区提问,我会尽力为你解答。





