Loading... 这些命令提供了宝贵的系统性能统计数据,有助于分析资源利用率、识别瓶颈和优化效率。 ## 1. vmstat – 报告虚拟内存统计数据 vmstat 命令可打印有关内存、交换、I/O 和 CPU 活动的详细报告。其中包括已用/可用内存、交换入/出、磁盘块读/写和 CPU 进程/闲置时间等指标。 例子: ```bash vmstat 5 ``` 其他有用的 vmstat 选项: - -a – 显示活动和非活动内存 - -s – 显示事件计数器和内存统计信息 - -S – 以 KB 而不是块为单位输出 - 5 – 每 5 秒刷新一次输出。 上面的示例每 5 秒输出一次内存和 CPU 数据,直到中断为止,这对监控实时系统性能非常有用。 ```bash [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 统计信息。 ```bash iostat -d -p sda 5 ``` iostat 可帮助分析磁盘子系统的性能,找出硬件瓶颈。 ```bash [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 命令显示系统中物理内存和交换内存的总量、已用量和空闲量。这将提供可用内存的总体情况。 例子: ```bash 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 命令的帮助信息,包括所有可用的参数选项和用法示例。 例子: ```bash df -h ``` 上述命令将以人类可读的格式打印磁盘利用率。也可以不带参数运行该命令,以块大小获得相同的数据。 ```bash [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、网络等系统活动信息。通过分析这些数据,可以发现性能问题。 语法: ```bash 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 例子: ```bash sar -u 5 60 ``` 每 5 秒采样一次 CPU 使用情况,持续 60 次。 sar 提供了实时工具无法提供的详细历史系统性能数据。 最后修改:2024 年 01 月 15 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏