linux内存管理模块参数的个人理解
先上一个参数图
Mem
total:总共有多少内存
used:用了多少内存(这里的内存不仅包括真正在用的,还包括给应用程序预留的,这部分空间有一部分其实等于没用,因为它是预留的,别的程序内存不够它照样得把这部分分给人家T.T,但很新手一看used就瞬间紧张了。。。)
free:系统没有用的,也可以理解为是这部分扔在那既没有预留给哪个程序,也没有被系统使用的部分。。。
shared:程序用来共享的部分,但其实它也是预留的,并没有使用。。。
buffers:缓存的内存,也可以理解为预留的,并没有使用。。。
cached:缓存的内存,也可以理解为预留的,还是没有使用。。。
那么第一行就可以理解了
total = used + free
服务器的可用内存 = used - shared - buffers - cached + free
是不是看的一头雾水哈哈哈哈哈哈哈哈哈
正常,我看别人教程也是这感觉,那么换个说法
8001(total) ≈ used(6412) + free(1588)
服务器的可用内存 = used(6412) - shared(66) - buffers(269) - cache(3826) + free(1588) ≈ +buffers/cache (5684)
服务器的已用内存 = used(6412) - shared(66) - buffers(269) - cache(3826) ≈ -buffers/cache (2251)
这里就出现了第二行的参数
-buffers/cache && +buffers/cache
我们可以看出+buffers/cache ≈ 服务器的可用内存
-buffers/cache ≈ 服务器的已用内存
我们就可以近似的理解为第二行是linux服务器帮助我们计算的真实已用内存(-buffers/cache)和真实可用内存(+buffers/cache)
至于为什么会有差异,因为内存管理不仅涉及这几个模块,还涉及到很多的内存管理,只不过没有过多展示,想深入的可以做些研究
swap
sawp空间很好理解,类似于windows的虚拟内存,当内存不够时系统会自动开始与磁盘进行文件IO交互,但由于内存和磁盘写入的巨大差异自然而然就会出现服务器的延迟高现象,而且由于系统频繁的释放缓存内存也会导致服务器负载增高进而导致一系列问题,所以当我们看到sawp空间的数值开始频繁变动的时候,那就真的要加内存条了~
PS:阿里云默认不创建交换空间,这样做既可以降低磁盘损耗,也可以保证服务器更快响应,当然最重要的是多赚钱~~~
linux内存管理模块参数的个人理解
最新推荐文章于 2023-03-30 18:05:48 发布