代码改变世界

[转载]调整虚拟内存

2016-01-22 16:43  潇湘隐者  阅读(800)  评论(0编辑  收藏  举报

本文转自调整虚拟内存,支持原创、尊重原创,分享知识!个人发现有些翻译不当的地方,稍微做了下修改、调整。如果英文足够NB,建议阅读英文。

 

虚拟内存通常被进程、文件系统缓存以及内核消耗。虚拟内存的使用由很多因素决定,受以下参数影响:
swappiness
参数值可为 0-100,控制系统 swap 的使用程度。高数值可优先系统性能,在进程不活跃时主动将其转换出物理内存。低数值可优先互动性并尽量避免将进程转换处物理内存,并降低反应延迟。默认值为 60
 

Warning

Since RHEL 6.4, setting swappiness=0 more aggressively avoids swapping out, which increases the risk of OOM killing under strong memory and I/O pressure.
A low swappiness value is recommended for database workloads. For example, for Oracle databases, Red Hat recommends a swappiness value of 10.
 
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
将这个值设定为 12 或者 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/