操作系统内存性能诊断

Linux 内核给每一个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的。这样,进程就可以很方便地访问内存,也就是虚拟内存。本文介绍常见内存性能分析命令,以及内存性能分析方法。

Linux 内存性能分析常用命令

  • top

top 命令经常用来监控 Linux 的系统状况,比如 CPU、内存的使用情况,如下图所示:

top命令

图中第四行显示为系统内存状态
total:     物理内存总量
used:      使用中的内存总量
free:      空闲内存总量
buffers:   缓存的内存量

图中第五行显示 swap 交换分区
total:     交换区总量
used:      使用的交换区总量
free:      空闲交换区总量
cached:    缓冲的交换区总量
  • vmstat

vmstat 是 Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、IO 读写、CPU 活动等进行监视,如下图所示:

vmstat命令

memory 部分
swpd:切换到内存交换区的内存大小;
free:当前空闲的物理内存;
buff:baffers cached 内存大小;
swap:
si:内存进入内存交换区的内存大小;
so:由内存进入磁盘,也就是由内存交换区进入内存的内存大小;

Linux 内存性能诊断

这里我们使用 vmstat 来进行分析,如下所示:

[root@dm8 ~]# vmstat 1 10
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 2273472  32968 701004    0    0   458   128  165  154  0  2 98  0  0
 0  0      0 2273748  32968 701004    0    0     0    36  248  253  0  1 99  0  0
 0  0      0 2273812  32976 701004    0    0     0   128  673  530  0  2 98  0  0
 1  0      0 2274360  32976 701020    0    0     0     4  594  439  0  2 98  0  0
 0  0      0 2274728  32976 701024    0    0     0    12  279  256  0  1 99  0  0
 0  0      0 2274684  32976 701024    0    0     0     4  106  191  0  0 100  0  0
 0  0      0 2274684  32976 701024    0    0     0     8  156  203  0  1 100  0  0
 0  0      0 2273832  32984 701016    0    0     0    80  649  531  1  2 98  0  0
 0  0      0 2274052  32984 701056    0    0     0     8  491  431  0  1 98  0  0
 0  0      0 2274336  32984 701060    0    0     0     4  107  192  0  0 100  0  0
  • MEMORY

    • swap:切换到交换内存上的内存(默认以 KB 为单位)。如果 SWAP 的值不为 0,或者还比较大,比如超过 100 MB 了,但是 SI 和 SO 的值长期为 0,这种情况我们可以不用担心,不会影响系统性能。
    • free:空闲的物理内存。
    • buff:作为 buffer cache 的内存,对块设备的读写进行缓冲。
    • cache:作为 page cache 的内存,文件系统的 cache 如果 cache 的值大的时候,说明 cache 处的文件数多,如果频繁访问到的文件都能被 cache,那么磁盘的读 IO bi 会非常小。
  • SWAP

    • si:交换内存使用,由磁盘调入内存。
    • so:交换内存使用,由内存调入磁盘。
注意

内存够用的时候,这 2 个值都是 0,如果这 2 个值长期大于 0 时,系统性能会受到影响,磁盘 IO 和 CPU 资源都会被消耗。

空闲内存 (FREE) 很少的或接近于 0 时,并不能认定为内存不够用,Linux 是抢占内存的 OS,还要结合 si 和 so;如果 free 很少,si 和 so 也很少(大多时候是 0),那么不用担心,系统性能这时不会受到影响的。

微信扫码
分享文档
扫一扫
联系客服