工欲善其事,必先利其器。要对系统进行调优,除知道思路和方法外,还需要知道调优工具,接下来给大家介绍对 Linux 系统进行调优时需要用到的一些工具。熟练掌握这些工具,有助于迅速了解 Linux 的运行状态,最终给出合理、稳妥的系统调优方案。
这里从 Linux 系统的 CPU、内存、磁盘、网络 4 个方面展开介绍,分别说明对这 4 个方面进行性能评估的专业工具。
一、CPU 性能调优工具
cpu 性能评估常用的工具由 vmstat、uptime、mpstat 等,下面分别进行介绍。
1.vmstat 命令
vmstat 是 Virtual Memory Statistics(虚拟内存统计)的缩写,很多 Linux 发行版本部分默认安装了此命令,利用 vmstat 命令可以对操作系统的 CPU 活动、内存信息、进程状态进行监控,不足之处是无法对某个进程进行深入分析。
vmstat 使用语法如下:
vmstat [-V] [-n] [delay [count]]
各个选项及参数含义如下所述:
- -V:表示打印出版本信息。是可选参数。
- -n:表示在周期性循环输出时,输出的头部信息仅显示一次。
- delay:表示两次输出之间的间隔信息。
- count:表示按照 delay 指定的时间间隔统计的次数。默认为1.
例如:
[root@huyouba1 ~]# vmstat 3 //表示每3秒更新一次输出信息,循环输出,按 Ctrl+C 组合键停止输出
[root@huyouba1 ~]# vmstat 3 5 //表示每3秒更新一次输出信息,统计 5 次后停止输出
对上面没想的输出结束如下:
- procs:显示队列和扽会带状态
r 列表示运行和等待 CPU 时间片的进程数,这个值如果长期大于系统 CPU 个数,说明 CPU 不足,需要增加 CPU。
b 列表示在等待资源的进程数,如正在等待I/O、内存交换等。
- memory:显示物理内存状态。
swpd 列表示切换到内存交换区的内存数量(以 KB 为单位)。如果 swpd 的值不为 0,或者比较大,只要si、so的值长期为0,这种情况下一般不用担心,不会影响系统性能。
free 列表示当前空闲的物理内存数量(以 KB 为单位)
buff 列表示 buffers cache 的内存数量,一般对块设备的读写才需要缓冲。
cache 列表示 page cached 的内存数量,一般作为文件系统 cached,频繁访问的文件都会被cached。如果cache值较大,说明cached的文件数较多如果此时I/O中的bi比较小,说明文件系统效率比较好。
- swap:显示交换分区的使用状态
si 列表示由磁盘调入内存,也就是内存进入内存交换区的数量
so 列表示由内存调入磁盘,也就是内存交换区进入内存的数量
一般情况下,si、so 的值都为 0,如果si、so的值长期不为0,则表示系统内存不足。需要增加系统内存。
- io:显示磁盘读写状况
bi 列表示从块设备读入数据的总量(即读磁盘)(KB/s)
bo 列表示写入到块设备的数据总量(即写磁盘)(KB/s)
这里设置的 bi+bo参考值为1000,如果超过1000,而且 wa 值较大,则表示系统磁盘I/O有问题,应该考虑提高磁盘的读写性能。
- system:显示采集间隔内发生的终端数。
in 列表示在某一时间间隔中观测到的每秒设备终端数
cs 列表示每秒产生的上下文切换次数
上面这两个值越大,由内核消耗的 CPU 时间会越多
- cpu:显示 CPU 的使用状态
us 列显示了用户进程消耗的 CPU 时间百分比此列时关注的重点。us 值比较高时,说明用户进程消耗的 CPU 时间多,但是如果长期大于 50%,就需要考虑优化程序或算法
sy 列显示了内核进程消耗的 CPU 时间百分比。sy 值较高时,说明内核消耗的 CPU 资源很多。根据经验,us+sy 的参考值为 80%,如果 us+sy 大于 80% 说明可能存在 CPU 资源不足的情况。
id 列显示了 CPU 处在空闲状态的时间百分比
wa 列显示了 I/O 等待所占用的 CPU 时间百分比。wa 值越高,说明 I/O 等待时间越严重。根据经验 wa 的参考值超过 20%,说明 I/O 等待的原因可能是磁盘大量随机读写造成的,也可能是磁盘或者磁盘控制器的带宽瓶颈造成的(主要是块操作)
综上所述,在对 CPU 的评估中,需要重点主义的是 procs 项 r 列的值和 CPU 项 us、sy 和 id 列的值。