5.5. 调整虚拟内存
虚拟内存一般由进程、文件系统缓存以及内核消耗。虚拟内存的使用由很多因素决定,受以下参数影响:
swappiness
- 参数值可为 0-100,控制系统 swap 的程序。高数值可优先系统性能,在进程不活跃时主动将其转换出物理内存。低数值可优先互动性并尽量避免将进程转换处物理内存,并降低反应延迟。默认值为
60
。 min_free_kbytes
- 保证系统间可用的最小 KB 数。这个值可用来计算每个低内存区的水印值,然后为其大小按比例分配保留的可用页。
警告
设定这个参数时请小心,因为该值过低和过高都有问题。min_free_kbytes
太低可防止系统重新利用内存。这可导致系统挂起并让 OOM 杀死多个进程。但将这个参数值设定太高(占系统总内存的 5-10%)会让您的系统很快会内存不足。Linux 的设计是使用所有可用 RAM 缓存文件系统数据。设定高min_free_kbytes
值的结果是在该系统中花费太多时间重新利用内存。 dirty_ratio
- 规定百分比值。当脏数据组成达到系统内存总数的这个百分比值后开始写下脏数据(pdflush)。默认值为
20
。 dirty_background_ratio
- 规定百分比值。当脏数据组成达到系统内存总数的这个百分比值后开始在后端写下脏数据(pdflush)。默认值为
10
。 drop_caches
- 将这个值设定为
1
、2
或者3
让内核放弃各种页缓存和 slab 缓存的各种组合。- 1
- 系统无效并释放所有页缓冲内存。
- 2
- 系统释放所有未使用的 slab 缓冲内存。
- 3
- 系统释放所有页缓冲和 slab 缓冲内存。
这是一个非破坏性操作。因为无法释放脏项目,建议在运行sync
设定这个参数值。重要
不建议在产品环境中使用drop_caches
释放内存。
要在调节时临时设定这些值,请将所需值 echo 到 proc 文件系统中的适当文件中。例如:要将
swappiness
临时设定为 50
,请运行:
# echo 50 > /proc/sys/vm/swappiness
要永久设定这个值,则需要使用
sysctl
命令。有关详情请参考《部署指南》,网址为 http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/。