在 Solaris 系统运维工作中,监控系统性能始终是日常操作的核心环节。今天我们将系统梳理几个高频使用的命令:vmstat、iostat 和 df。这些工具虽然基础,但只要运用得当,就能帮助你迅速定位性能瓶颈。话不多说,直接进入正题。
查看虚拟内存统计信息(vmstat)
vmstat 是 Solaris 系统中极具代表性的经典工具,专门用于查看虚拟内存的统计指标。除了内存信息外,它还能同步呈现 CPU 负载、页面调度情况、上下文切换次数、设备中断以及系统调用等关键数据。
简单来说,vmstat 的输出主要包含以下几个核心模块:
procs 报告进程相关状态:
- r:处于分派队列中的内核线程数量。如果该数值长期高于 CPU 核心数,则表明 CPU 可能已成为性能瓶颈。
- b:正在等待资源(例如 I/O)而阻塞的内核线程数量。
- w:等待处理完成从而被换出的轻量进程(LWP)数量。
memory 反映内存使用状况:
- swap:当前可用的交换空间大小。
- free:物理空闲列表的大小。
page 以秒为单位报告页面错误及分页活动,这是判断内存压力的重要依据:
- re:回收的页面数量。
- mf:次要错误与主要错误的总和。
- pi:每秒换入的千字节数。
- po:每秒换出的千字节数。
- fr:每秒释放的千字节数。
- de:最近换入进程所需的预计内存。
- sr:由 page 守护进程扫描且当前未使用的页面数。如果该值不为零,说明 page 守护程序正在运作,内存可能趋于紧张。
disk 报告磁盘每秒的操作数,最多可显示四块磁盘的数据。
faults 报告每秒的陷阱与中断速率:
- in:每秒的中断次数。
- sy:每秒的系统调用数。
- cs:CPU 上下文切换速率。该值过高通常意味着系统正在频繁切换进程,整体效率将受到影响。
cpu 报告 CPU 时间使用占比:
- us:用户态时间占比。
- sy:系统态时间占比。
- id:空闲时间占比。
查看虚拟内存统计信息(vmstat)
如果需要持续监控,可以指定时间间隔(单位为秒)。例如 $ vmstat n,其中 n 代表两次报告之间的间隔秒数。
显示系统事件统计(vmstat -s)
执行 $ vmstat -s 可查看自系统上次引导以来所发生的各类系统事件总数。这一信息对分析长期运行趋势非常有用。
显示交换统计信息(vmstat -S)
使用 $ vmstat -S 可以查看交换统计信息。输出中各字段的含义如下:
- si:每秒换入的平均 LWP 数。
- so:每秒换出的完整进程数。
需要注意的是,vmstat 在输出时可能会截断 si 和 so 这两个字段,因此阅读时需特别留意。
显示每台设备的中断次数(vmstat -i)
运行 $ vmstat -i 可以查看每台设备产生的中断次数,这对排查设备驱动或硬件故障非常有帮助。
显示磁盘使用率信息(iostat)
iostat 命令专门用于报告磁盘的输入/输出统计信息。它提供的测量指标包括吞吐量、使用率、队列长度、事务速率和服务时间。
显示磁盘使用率信息(iostat)
通过指定时间间隔运行 $ iostat 5,就能每 5 秒获取一次磁盘使用率数据。输出第一行显示的是自系统启动以来的累计统计,后续每一行则代表一个时间间隔内的数据。默认情况下,iostat 会展示终端(tty)、磁盘(fd 和 sd)以及 CPU 的统计信息。
显示磁盘使用率信息
来看一个每 5 秒收集统计信息的示例:$ iostat 5。输出分为以下几个部分:
终端:
- tin:终端输入队列中的字符数。
- tout:终端输出队列中的字符数。
磁盘:
- bps:每秒传输的块数。
- tps:每秒的事务数。
- serv:平均服务时间,单位为毫秒。
CPU:
- us:用户模式下的占比。
- sy:系统模式下的占比。
- wt:等待 I/O 完成的时间占比。
- id:空闲时间占比。
iostat -xtc 命令
如果使用 iostat -xtc,它会为每一块磁盘单独显示一行输出。各字段的含义如下:
- r/s:每秒的读取次数。
- w/s:每秒的写入次数。
- kr/s:每秒读取的千字节数。
- kw/s:每秒写入的千字节数。
- wait:等待服务的平均事务数(即队列长度)。数值越大,说明 I/O 等待越严重。
- actv:处于活跃服务状态的平均事务数。
- svc_t:平均服务时间,单位为毫秒。
- %w:队列不为空的时间百分比。
- %b:磁盘处于繁忙状态的时间百分比。如果该值接近 100%,磁盘基本已满负荷运转。
磁盘空间统计信息(df)
df 命令展示的是每个已挂载文件系统上的可用磁盘空间。需要注意的是,df 报告的可用空间实际上只反映了容量极限的 90%,因为系统默认会预留 10% 的头空间以保证磁盘性能。换句话说,df 中显示的已用百分比,计算方式是用已用空间除以可用空间。
当文件系统使用量超过 90% 时,就需要考虑进行清理。可以使用 cp 命令将文件转移到有空闲空间的磁盘上,或者利用 tar、cpio 命令将数据备份到磁带中。当然,直接删除不需要的文件也是最直接的办法。
显示磁盘空间信息(df -k)
使用 $ df -k 命令,可以以千字节为单位清晰显示磁盘空间信息。输出中各列的含义如下:
- kbytes:文件系统中可用空间的总大小。
- used:已使用的空间量。
- a vail:当前可用的空间量。
- capacity:已用空间占总容量的百分比。
- mounted on:文件系统的挂载点。
