详解Linux vmstat命令:从CPU、内存到磁盘IO全方位监控

1、CPU负载2、内存使用情况3、磁盘I/O在Linux系统中,您可以了解系统的CPU负载、内存使用情况和磁盘I/O等方面的信息。CPU负载首先来看一下如何使用vmstat命令来查看CPU负载。

在Linux系统中,vmstat是一个非常实用的命令工具,它可以为我们提供有关系统资源使用情况的详细信息。通过使用vmstat命令,您可以了解系统的CPU负载、内存使用情况和磁盘I/O等方面的信息。本文将针对这些方面进行详细介绍。

CPU负载

首先来看一下如何使用vmstat命令来查看CPU负载。在终端中输入以下命令:

“`

$ vmstat 1

其中数字1表示每秒钟刷新一次数据。执行该命令后,您将看到类似于以下内容的输出:

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 2480448 493936 2097128 0 0  4  7   75   144   2   2   96   0   0

下面是各个列所代表意义:

– r:表示正在运行或等待运行进程数量。

– b:表示处于不可中断状态(例如等待I/O操作完成)且正在等待资源(例如磁盘I/O)的进程数量。

– swpd:表示使用的交换空间大小(以KB为单位)。

– free:表示可用内存大小(以KB为单位)。

– buff:表示缓冲区使用量(以KB为单位)。

– cache:表示缓存使用量(以KB为单位)。

– si/so:分别表示从磁盘读取/写入到磁盘的交换空间大小(以KB为单位),如果这些值不是零,说明系统正在频繁地进行交换操作,这将导致性能下降。一般来说,如果常规运行时si和so值超过了几百kb,则需要考虑增加物理内存容量或者调整应用程序配置来减少内存压力。

– bi/bo:分别代表块设备输入/输出操作数目,也就是磁盘I/O次数。在高负载情况下,如果这些数字很大,则说明系统可能存在I/O瓶颈问题。

– in/cs :每秒中断数和每秒上下文切换次数。在CPU负载高时上下文切换会增加,并且会影响整体性能和响应时间。

– us/sy/id/wa/st :用户进程占用CPU时间、系统核心占用CPU时间、处于闲置状态的CPU时间、等待I/O操作完成所消耗的CPU时间、虚拟机被hypervisor暂停的时间(仅在虚拟化环境下出现)。

内存使用情况

vmstat命令也可以用来查看内存使用情况。在终端中输入以下命令:

$ vmstat -s

该命令将会输出类似于以下内容的结果:

8041056 K total memory

2486240 K used memory

4005672 K active memory

1483464 K inactive memory

 667480 K free memory

 494060 K buffer memory

2097152 K swap cache

 0   total swap

 0   used swap

 0   free swap

85508 non-nice user cpu ticks

           nice user cpu ticks

          system cpu ticks

详解Linux vmstat命令:从CPU、内存到磁盘IO全方位监控

          idle cpu ticks

          IO-wait cpu ticks

         IRQ cpu ticks

         softirq cpu ticks

        stolen cpu ticks

        pages paged in

        pages paged out

        pages swapped in

        pages swapped out

         interrupts

         context switches

         CPU migrations

         page faults

    major page faults

    free areas of different sizes available for use

– total:表示系统总共可用的物理内存大小。

– used:表示已经被占用的物理内存大小。

– active:表示正在被使用或最近被使用过的物理页数。

– inactive:表示未被使用的物理页数。

– free:表示空闲的物理内存大小。

– buffer:表示用于缓存文件系统中块设备的缓冲区大小。

– swap cache:表示用于缓存交换设备中块设备的缓冲区大小。

– total swap/used swap/free swap:分别代表总共可用、已使用和空闲的交换空间大小(以KB为单位)。

– non-nice/nice/system/idle/IO-wait/IRQ/softirq/stolen cpu ticks :各种CPU时间片统计信息,其中stolen cpu ticks是指在虚拟化环境下被hypervisor暂停的时间。

– pages paged in/paged out/swapped in/swapped out :页面调度统计信息。

– interrupts/context switches/CPU migrations/page faults/major page faults :系统调度统计信息。

磁盘I/O

vmstat命令还可以用来查看磁盘I/O情况。在终端中输入以下命令:

$ vmstat -d

disk_io:   ios /dev/sda   reads     kbread/s      writes       kbs/wrtn

disk_io: 2223226 sda        0            0         0               0

– ios:表示从硬件层面上完成读写操作所需花费的时间(以毫秒为单位)。

– reads/kbread/s:表示每秒钟从磁盘读取的块数和每秒钟读取数据量(以KB为单位)。

– writes/kbs/wrtn:表示每秒钟写入到磁盘的块数和每秒钟写入数据量(以KB为单位)。

在本文中,我们详细了解了vmstat命令在CPU、内存和磁盘I/O等方面提供的信息。通过使用该命令,您可以更好地监控系统资源使用情况,并及时调整系统配置以提高性能。如果您想要深入了解Linux系统管理知识,请关注我们后续文章。