CentOS下内存分析free meminfo详解
<p><span><strong>一.前言</strong></span></p>
<p>
监测Linux系统的内存使用情况,使用【free】是最直接的。</p>
<p>
查看机器的内存使用信息【/proc/meminfo】</p>
<p>
<span><strong>二.分析</strong></span></p>
<p>
1.【free】</p>
<p>
我们一起看下面的一个输出:</p>
<p align="center">
<img style="max-width:100%!important;height:auto!important;"title="CentOS下内存分析free meminfo详解" alt="CentOS下内存分析free meminfo详解" src="https://zhuji.jb51.net/uploads/img/20230519/8d7a23bd1252a1aa6a686df7d24c4f84.jpg"></p>
<p>
free –m 表示以M为单位查看内存使用情况,在这个输出中,我们重点关注的应该是free列与cached列的输出值。</p>
<p>
由输出可知,此系统共7.8G内存,系统空闲内存还有621M,其中,Buffer Cache占用了210M,Page Cache占用了4056M,由此可知系统缓存了很多的文件和目录,而对于应用程序来说,可以使用的内存还有4888M,当然这个4888M包含了Buffer Cache和Page Cache的值。在swap项可以看出,交换分区还未使用。所以从应用的角度来说,此系统内存资源还非常充足。 </p>
<p>
一般有这样一个经验公式:</p>
<p>
<strong>应用程序可用内存/系统物理内存>70%时,表示系统内存资源非常充足,不影响系统性能,</strong></p>
<p>
<strong>应用程序可用内存/系统物理内存<20%时,表示系统内存资源紧缺,需要增加系统内存,</strong></p>
<p>
<strong>20%<应用程序可用内存/系统物理内存<70%时,表示系统内存资源基本能满足应用需求,暂时不影响系统性能。</strong></p>
<p>
(比如上图,4888/7869=0.621,所以基本满足性能)</p>
<p>
tips:</p>
<p>
watch是一个非常有用的命令,几乎每个linux发行版都带有这个工具,通过watch,可以动态的监控命令的运行结果,省去手动执行的麻烦。)</p>
<p>
例如:</p>
<p align="center">
<img style="max-width:100%!important;height:auto!important;"title="CentOS下内存分析free meminfo详解" alt="CentOS下内存分析free meminfo详解" src="https://zhuji.jb51.net/uploads/img/20230519/2bd7f46ecc976dd75b1b06e7babbb59d.jpg"></p>
<p>
在【watch】后面跟上需要运行的命令,watch就会自动重复去运行这个命令,默认是2秒钟执行一次,并把执行的结果更新在屏幕上。</p>
<p>
-n:指定重复执行的时间</p>
<p>
-d:表示高亮显示变动。</p>
<p>
<strong>2.【meminfo】</strong></p>
<p>
$cat /proc/meminfo 读出的内核信息进行解释</p>
<p align="center">
<img style="max-width:100%!important;height:auto!important;"title="CentOS下内存分析free meminfo详解" alt="CentOS下内存分析free meminfo详解" src="https://zhuji.jb51.net/uploads/img/20230519/529f8cc9ccafdff4c50d054a35ecb1fc.jpg"></p> 感谢楼主的详细分享!
这个帖子对Linux内存分析的讲解非常全面,对于我们这些系统管理员和运维人员来说很有帮助。
补充一点个人经验:
在实际工作中,除了关注free命令的输出,我还会注意以下几个关键点:
1. Swap使用率:如果发现Swap频繁使用,即使free显示有内存,也可能是内存不足的信号,这时候需要结合应用场景来判断。
2. 内存碎片:有时候free显示内存足够,但系统仍然变慢,可能是内存碎片问题,可以通过slabtop命令查看。
3. OOM Killer:密切关注系统日志(/var/log/messages),如果出现Out of Memory killer的记录,说明内存确实紧张了。
另外,楼主提到的watch命令确实很实用,我经常用它来配合free -m -s 5监控内存变化情况。
再次感谢楼主的干货分享!希望以后能多多看到这样的技术帖,大家一起学习进步~
有问题欢迎随时讨论!
頁:
[1]