5个Linux性能监控命令

dafenqi
2024-01-11 / 0 评论 / 11 阅读 / 正在检测是否收录...

这些命令提供了宝贵的系统性能统计数据,有助于分析资源利用率、识别瓶颈和优化效率。

1. vmstat – 报告虚拟内存统计数据

vmstat 命令可打印有关内存、交换、I/O 和 CPU 活动的详细报告。其中包括已用/可用内存、交换入/出、磁盘块读/写和 CPU 进程/闲置时间等指标。

例子:

vmstat 5

其他有用的 vmstat 选项:

  • -a – 显示活动和非活动内存
  • -s – 显示事件计数器和内存统计信息
  • -S – 以 KB 而不是块为单位输出
  • 5 – 每 5 秒刷新一次输出。

上面的示例每 5 秒输出一次内存和 CPU 数据,直到中断为止,这对监控实时系统性能非常有用。

[root@xx web]# vmstat 5
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 115732      0 952956    0    0     0     2    2    4  0  0 99  0  0

每一列代表的意思:

procs: 进程统计信息

  • r: 运行队列中正在运行的进程数
  • b: 等待运行的进程数

memory: 内存统计信息

  • swpd: 使用的交换空间大小(单位为KB)
  • free: 空闲内存大小(单位为KB)
  • buff: 用于缓冲的内存大小(单位为KB)
  • cache: 用于缓存的内存大小(单位为KB)

swap: 交换空间统计信息

  • si: 从磁盘读取到交换空间的数据大小(单位为KB/s)
  • so: 从交换空间写入到磁盘的数据大小(单位为KB/s)

io: I/O 统计信息

  • bi: 块设备接收的块数(单位为块/s)
  • bo: 块设备发送的块数(单位为块/s)

system: 系统统计信息

  • in: 每秒中断的数量
  • cs: 每秒上下文切换的数量

cpu: CPU 统计信息

  • us: 用户进程使用 CPU 的时间百分比
  • sy: 系统进程使用 CPU 的时间百分比
  • id: CPU 处于空闲状态的时间百分比
  • wa: CPU 正在等待 I/O 完成的时间百分比
  • st: 被虚拟化环境(例如虚拟机)偷取的时间百分比

2. iostat – 报告 CPU 和 I/O 统计数据

iostat 命令监控并显示 CPU 利用率和磁盘 I/O 指标。其中包括 CPU 负载、IOPS、读/写吞吐量等。

一些 iostat 选项:

  • c – 显示 CPU 使用率信息
  • t – 为每份报告打印时间戳
  • x – 显示服务时间和等待计数等扩展统计信息
  • d – 显示每个磁盘/分区的详细统计信息,而不是合计总数
  • p – 显示特定磁盘设备的统计信息

下面每 5 秒钟显示一次 sda 每个设备的详细 I/O 统计信息。

iostat -d -p sda 5

iostat 可帮助分析磁盘子系统的性能,找出硬件瓶颈。

[root@xx web]# iostat
Linux 4.19.188-10.el7.ucloud.x86_64 (10-50-90-250)     01/11/2024     _x86_64_    (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.41    0.00    0.36    0.00    0.00   99.23

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
vda               0.45         0.10         4.60     433948   19644449

每一列参数代表的意思:

avg-cpu:这一行统计了 CPU 使用情况的平均值。

  • %user:用户态进程使用 CPU 的百分比。
  • %nice:以较高优先级运行的用户态进程使用 CPU 的百分比(优先级较低的用户态进程)。
  • %system:内核进程使用 CPU 的百分比。
  • %iowait:CPU 等待 I/O 完成的百分比。
  • %steal:当 hypervisor(虚拟化环境中的宿主机)需要让出 CPU 给其他虚拟机时,该 CPU 被偷取的百分比。
  • %idle:CPU 空闲时间的百分比。

Device:这一行显示了每个磁盘设备的统计数据。

  • tps:每秒传输的 I/O 请求数。这个值反映了磁盘设备的工作负载。
  • kB_read/s:每秒从设备读取的数据量,以千字节 (KB) 为单位。
  • kB_wrtn/s:每秒写入设备的数据量,以千字节 (KB) 为单位。
  • kB_read:从设备读取的总数据量,以千字节 (KB) 为单位。
  • kB_wrtn:写入设备的总数据量,以千字节 (KB) 为单位。

3. free – 显示可用和已用内存量

free 命令显示系统中物理内存和交换内存的总量、已用量和空闲量。这将提供可用内存的总体情况。

例子:

free -h

free 命令的一些选项:

  • b – 以字节为单位显示输出
  • k – 以 KB(而非默认字节)为单位显示输出结果
  • m – 以 MB 为单位显示输出,而不是以字节为单位
  • h – 以 GB、MB 等人类可读格式打印统计数据,而不是字节。

以人类可读格式(GB、MB 等)打印内存统计数据。当你想快速了解内存容量时,它非常有用。

4. df – 报告文件系统磁盘空间使用情况

df 命令显示文件系统的磁盘空间使用情况。它会显示文件系统名称、总/已用/可用空间和容量。

常用的参数选项:

  • -h :以人类可读的格式显示磁盘使用情况,以 K、M、G 等单位表示文件系统的大小和可用空间。
  • -T :显示文件系统类型。
  • -i :显示 inode 的使用情况而不是磁盘空间。
  • -a :显示所有文件系统,包括系统特有的文件系统。
  • -x type :排除指定类型的文件系统。例如,-x tmpfs 将排除 tmpfs 类型的文件系统。
  • -hT :同时使用 -h 和 -T 参数,以人类可读的格式显示文件系统以及各个文件系统类型。
  • --total :在最后一行显示所有文件系统的总空间和已使用空间。
  • --help :显示 df 命令的帮助信息,包括所有可用的参数选项和用法示例。

例子:

df -h

上述命令将以人类可读的格式打印磁盘利用率。也可以不带参数运行该命令,以块大小获得相同的数据。

[root@xx web]# df -T
Filesystem     Type     1K-blocks    Used Available Use% Mounted on
devtmpfs       devtmpfs    891628       0    891628   0% /dev
tmpfs          tmpfs       904464       0    904464   0% /dev/shm
tmpfs          tmpfs       904464  107052    797412  12% /run
tmpfs          tmpfs       904464       0    904464   0% /sys/fs/cgroup
/dev/vda1      xfs       62903276 4308344  58594932   7% /
tmpfs          tmpfs       180896       0    180896   0% /run/user/0

各列的含义:

  • Filesystem:文件系统的名称或挂载点名称。
  • Type:文件系统的类型。
  • 1K-blocks:文件系统的总块数(以千字节为单位)。
  • Used:已使用的块数(以千字节为单位)。
  • Available:可用的块数(以千字节为单位)。
  • Use%:已使用空间占总空间的百分比。
  • Mounted on:文件系统的挂载点。

5. sar – 收集和报告系统活动

sar 工具收集并记录一段时间内 CPU、内存、I/O、网络等系统活动信息。通过分析这些数据,可以发现性能问题。

语法:

sar [options] [interval [count]]

其中,[options] 是可选的命令选项,[interval] 是数据收集的时间间隔(以秒为单位),[count] 是指定收集的次数。

一些常用的 sar 参数选项和示例:

  • -u:显示 CPU 使用率统计数据。
    示例:sar -u
  • -r:显示内存使用情况统计数据。
    示例:sar -r
  • -b:显示磁盘 I/O 统计数据。
    示例:sar -b
  • -n DEV:显示网络接口的统计数据,其中 DEV 是网络接口的名称,如 eth0。
    示例:sar -n DEV
  • -q:显示运行队列和负载平均值的统计数据。
    示例:sar -q
  • -A:显示所有可用的统计数据。
    示例:sar -A
  • -s HH:MM:SS:从指定的起始时间开始显示统计数据。
    示例:sar -s 10:00:00
  • -e HH:MM:SS:显示到指定的结束时间的统计数据。
    示例:sar -e 12:00:00
  • -f FILE:指定 sar 数据文件的路径,用于读取预先记录的数据。在 Linux 系统上,默认情况下,sar 数据文件存储在 /var/log/sa/ 目录下,文件名以 sa 开头,后面跟着日期的数字表示,如 sa01、sa02 等。每个数据文件包含了特定日期的系统活动报告数据。
    示例:sar -f /var/log/sa/sa01
  • -o OUTPUT_FILE:将统计数据写入指定的输出文件中,以便后续使用。
    示例:sar -o output.txt

例子:

sar -u 5 60

每 5 秒采样一次 CPU 使用情况,持续 60 次。

sar 提供了实时工具无法提供的详细历史系统性能数据。

0

评论 (0)

取消