虚拟内存统计数据的简称,vmstat(8)是一种常用的工具(几十年前首次为 BSD 创建)。它在每行上打印关键服务器统计信息的摘要。
vmstat 运行的参数为 1,打印一秒摘要。第一行输出(在此版本的 vmstat 中)有一些列显示引导后的平均值,而不是前一秒。现在,跳过第一行,除非你想学习和记住哪一列是哪一列。
要检查的列:
r:在 CPU 上运行并等待轮换的进程数量。这比确定 CPU 饱和度的负载平均值提供了更好的信号,因为它不包含 I / O。可以这么理解:大于 CPU 计数的 “r” 值就意味着饱和(saturation)。
free:以千字节为单位的可用内存。如果要计数的位数太多,则有足够的空闲内存。包含在命令 7 中的 “free -m” 命令更好地解释了可用内存的状态。
si,so:交换和换出。如果这些不是零,则表示内存不足。
us,sy,id,wa,st:这些是所有 CPU 平均 CPU 时间的细分。它们是用户时间(user time),系统时间( system time)(内核),空闲(idle),等待 I / O(wait I/O)和被盗时间(stolen time)(由其他客人,或者对于 Xen 而言,客户自己的隔离驱动程序域(isolated driver domain))。
CPU 时间细分将通过将用户 + 系统时间加和(us+sy)来确认 CPU 是否繁忙。等待 I / O 的持续程度指向磁盘瓶颈;这是 CPU 空闲的地方,因为任务被阻塞等待挂起的磁盘 I / O。您可以将等待 I / O 视为另一种形式的 CPU 闲置,这样可以为他们为什么闲置提供线索。
系统时间对于 I / O 处理是必需的。高系统时间的平均值超过 20%可能会让人感兴趣进一步探索:内核可能无效处理 I / O。
在上面的例子中,CPU 时间几乎全部在用户级别,而是指向应用程序级别的使用。 CPU 的平均使用率也超过 90%。这不一定是个问题;使用 “r” 列检查饱和度。