centos修改系统可用内存

编程入门 行业动态 更新时间:2024-10-15 04:26:01

centos修改系统可用<a href=https://www.elefans.com/category/jswz/34/1771154.html style=内存"/>

centos修改系统可用内存

在 Linux 系统中,为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接操作磁盘。

内存查看

当我们使用 free -h 命令时,会显示如下的信息:

total used free shared buff/cache available

Mem: 7.6G 166M 7.0G 8.5M 515M 7.2G

Swap: 7.9G 0B 7.9G

total:内存总数

used:已经使用的内存数

free:空闲的内存数

shared:共享内存数

buff/cache:代表的是buff 和 cache 的内存

available:活跃的内存

available 代表一个新的应用程序可以使用内存的估计值,它不等于 free + buff/cache

官方定义

Estimation of how much memory is available for starting new applications, without swapping. Unlike the data provided by the cache or free fields, this field takes into account page cache and also that not all reclaimable memory slabs will be reclaimed due to items being in use (MemAvailable in /proc/meminfo,available on kernels 3.14, emulated on kernels 2.6.27+, otherwise the same as free

大致意思就是立即可以使用的内存大小。

比如:一个新的程序要运行需要的最小内存,如果 available 大于这个最小内存就可以安装。

关系

total = used + available

手动释放Linux 内存 cache

当在 Linux 下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为 caching。

[root@localhost ~]#dd if=/dev/zero of=bigfile bs=1M count=20480 &

[1] 19883

[root@localhost ~]#free -h

total used free shared buff/cache available

Mem: 7.6G 133M 131M 8.5M 7.4G 7.2G

Swap: 7.9G 0B 7.9G

使用 dd 模拟系统读写,此时:

used 为 133M

buff/cache 为 7.4G

单从这两项来看,内存已经被 buff/cache 耗尽。当 dd 命令执行完毕,等待一段时间 buff/cache 是否会释放掉内存到 free 中呢?

等待一段时间,查看内存:

[root@localhost ~]#free -h

total used free shared buff/cache available

Mem: 7.6G 129M 133M 8.5M 7.4G 7.2G

Swap: 7.9G 0B 7.9G

系统并没有自动释放 buff/cache 那么是否能够通过手工来进行释放呢?

PS:在 CentOS 7.X 版本中,真正可用内存应该看 available 项。

在 /proc 目录下除了只读文件,在 /proc/sys/ 子目录下有很多文件内容可以进行修改,修改了这些文件可以更改内核的运行特性。写入的格式一般为:echo N > /path/to/your/filename

如果要手动释放buff/cache 则需要对 /proc/sys/vm/drop_caches 进行操作。

对于 /proc/sys/vm/drop_caches 官方文档介绍:

操作如下:

[root@localhost ~]#free -h

total used free shared buff/cache available

Mem: 7.6G 128M 133M 8.5M 7.4G 7.2G

Swap: 7.9G 0B 7.9G

[root@localhost ~]#sync

[root@localhost ~]#sync

[root@localhost ~]#sync

[root@localhost ~]#free -h

total used free shared buff/cache available

Mem: 7.6G 128M 133M 8.5M 7.4G 7.2G

Swap: 7.9G 0B 7.9G

[root@localhost ~]#echo 3 > /proc/sys/vm/drop_caches

[root@localhost ~]#free -h

total used free shared buff/cache available

Mem: 7.6G 128M 7.5G 8.5M 43M 7.4G

Swap: 7.9G 0B 7.9G

通过执行: echo 3 > /proc/sys/vm/drop_caches 效果很明显,buff/cache 释放了内存到 free 中。

总结

手动释放 buff/cache 只需要执行 echo 3 > /proc/sys/vm/drop_caches 就能实现,但是前提需要执行 sync 确保缓存区都写入到磁盘,否则会造成文件的丢失等问题。

在释放前和释放后, available 并没有发生太大的变化,个人认为在 CentOS 7.X 版本中,真正空闲的内存更应该是 available 稍后通过实例来说明。

手动释放 Swap 分区内存

Swap 用途:Swap 意思是交换分区,通常我们说的虚拟内存,是从硬盘中划分出一个分区。当物理内存不够用的时候,内核就会释放缓存区(buffers/cache)里一些长时间不用的程序,然后将这些程序临时放到 Swap中,也就是说如果物理内存和缓存区内存不够用的时候,才会用到 Swap

查看了部分资料,清理 Swap 的方式比较野蛮:

swapoff -a && swapon -a

在执行该命令之前,建议多次执行 sync 避免文件的丢失。

注意:这样清理有个前提条件,空闲的内存必须比已经使用的Swap空间要大!

这里有个配置是关于 Swap 的 /proc/sys/vm/swappiness

swappiness 值的大小对如何使用 Swap 分区有着很大的联系。swappiness=0 的时候表示最大限度使用物理内存࿰

更多推荐

centos修改系统可用内存

本文发布于:2024-03-06 05:44:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1714513.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:内存   系统   centos

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!