Linux - 内存性能评估
Posted 小小工匠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux - 内存性能评估相关的知识,希望对你有一定的参考价值。
文章目录
概述
内存的管理和优化是系统性能优化的一个重要部分,内存资源的充足与否直接影响应用系统的使用性能。在进行内存优化之前,一定要熟悉Linux的内存管理机制,这里我们重点探讨如何通过系统命令监控Linux系统的内存使用状况。
free 命令
free是监控Linux内存使用状况最常用的指令.
[root@artisan~]# free -m
total used free shared buffers cached
Mem: 8111 7185 925 0 243 6299
-/+ buffers/cache: 643 7468
Swap: 8189 0 8189
“free –m”表示以MB为单位查看内存使用情况。
在这个输出中,我们重点关注的应该是free列与cached列的输出值,由输出可知,
-
此系统共8GB内存,
-
系统空闲内存还有925MB,
-
其中,缓冲区缓存占用了243MB,
-
页面缓存占用了6299MB,由此可知,系统缓存了很多的文件和目录。
-
而对于应用程序来说,可以使用的内存还有7468MB,当然,这个7468MB包含了缓冲区缓存和页面缓存的值。
-
在Swap项可以看出,交换分区还未使用。
所以,从应用的角度来说,此系统内存资源还非常充足。
一般有这样一个经验公式:当应用程序可用内存/系统物理内存>70%时,表示系统内存资源非常充足,不影响系统性能;当应用程序可用内存/系统物理内存<20%时,表示系统内存资源紧缺,需要增加系统内存;当20%<应用程序可用内存/系统物理内存<70%时,表示系统内存资源基本能满足应用需求,暂时不影响系统性能。
指定的时间段内不间断地监控内存的使用情况
free命令还可以适时监控内存的使用状况,使用“-s”参数可以在指定的时间段内不间断地监控内存的使用情况。
[root@VM-24-3-centos ~]# free -b -s 5
其中,“-b”表示以千字节(也就是1024字节为单位)来显示内存使用情况。 当然了,也可以 free -m -s 5
通过watch与free相结合动态监控内存状况
通过watch,可以动态监控命令的运行结果,省去手动执行的麻烦。
在watch后面跟上需要运行的命令,watch就会自动重复运行这个命令,默认2秒钟执行一次,并把执行的结果更新在屏幕上。
watch -n 3 -d free
其中,
- “-n”指定重复执行的时间,
- “-d”表示高亮显示变动。
vmstat命令监控内存
vmstat命令在监控系统内存方面功能强大。
请看下面的一个输出。
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 906440 22796 155616 1325496 340 180 2 4 1 4 80 0 10 10
0 0 906440 42796 155616 1325496 320 289 0 54 1095 287 70 15 0 15
0 0 906440 42884 155624 1325748 236 387 2 102 1064 276 78 2 5 15
对于内存的监控,在vmstat中重点关注的是swpd、si和so行。从这个输出可以看出,此系统内存资源紧缺,swpd占用了900MB左右内存,si和so占用了很大内在,而由于系统内存的紧缺,导致出现15%左右的系统等待,此时增加系统的内存是必须要做的。
“sar –r”命令组合
sar命令也可以监控Linux的内存使用状况。可以通过“sar –r”命令组合查看系统内存和交换空间的使用率。
[root@VM-24-3-centos ~]#sar -r 2 3
Linux 2.6.9-42.ELsmp (webserver) 11/30/2008 _i686_ (8 CPU)
09:57:33 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
09:57:35 PM 897988 7408556 89.19 249428 6496532 786556 4.71
09:57:37 PM 898564 7407980 89.18 249428 6496532 784276 4.70
09:57:39 PM 899196 7407348 89.17 249440 6496520 782132 4.69
Average: 898583 7407961 89.18 249432 6496528 784321 4.70
其中,
- kbmemfree表示空闲物理内存大小,
- kbmemused表示已使用的物理内存空间大小,
- %memused表示已使用内存占总内存大小的百分比,
- kbbuffers和kbcached分别表示缓冲区缓存和页面缓存的大小,
- kbcommit和%commit分别表示应用程序当前使用的内存大小和使用百分比。
可以看出sar的输出其实与free的输出完全对应,不过sar更加人性化,不仅给出了内存使用量,还给出了内存使用的百分比以及统计的平均值。从%commit项可知,此系统目前内存资源充足。
小结
这里介绍了内存监控常用的几个指令以及一些经验规则。其实现在的系统在内存方面出现的瓶颈已经很少,因为内存价格很低,充足的内存已经完全能满足应用程序和系统本身的需要。如果系统在内存方面出现瓶颈,很大的可能是应用程序本身的问题造成的。
以上是关于Linux - 内存性能评估的主要内容,如果未能解决你的问题,请参考以下文章