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