linux 的overcommit_memory、overcommit_ratio、swappiness 的说明

本文详细解析了Linux系统中vm.overcommit_memory与vm.swappiness参数的功能及应用场景。介绍了三种不同的vm.overcommit_memory设置及其对内存分配的影响,以及vm.swappiness的不同值如何控制内存与swap空间的使用策略。

vm.overcommit_memory

vm.overcommit_memory = 0
vm.overcommit_memory = 1
vm.overcommit_memory = 2

0 默认设置。表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
遗憾的是因为内存是使用启发式overcommitting handle(会尽量减少swap的使用)而非准确算法计算进行部署,这个设置有时可能会造成系统中的可用内存超载。

1 允许超过CommitLimit,即允许分配所有的物理内存,而不管当前的内存状态如何。
使用这个设置会增大内存超载的可能性,但也可以增强大量使用内存任务的性能。

2 拒绝超过CommitLimit的分配,即拒绝等于或者大于总可用 swap 大小以及 overcommit_ratio 指定的物理 RAM 比例的内存请求。如果您希望减小内存过度使用的风险,这个设置就是最好的。

公式:CommitLimit = (Physical RAM * vm.overcommit_ratio / 100) + Swap

vm.overcommit_ratio

vm.overcommit_ratio = 90 

默认为50,为物理内存分配时的比例。
只有当vm.overcommit_memory = 2的时候才会生效

查看系统overcommit信息

# cat /proc/meminfo |grep -i commit
CommitLimit:    90971304 kB
Committed_AS:   64872556 kB

CommitLimit:最大能分配的内存(个人理解仅仅在vm.overcommit_memory=2时候生效),具体的值是
SWAP内存大小 + 物理内存 * overcommit_ratio / 100

Committed_AS:当前已经分配的内存大小

临时设置

#sysctl vm.swappiness=10

vm.swappiness

vm.swappiness = 1 

默认值为60,代表 当剩余物理内存低于40%(40=100-60)时,开始使用交换空间

vm.swappiness = 0
最大限度使用物理内存,然后才是 swap空间,即在内存不足的情况下–当剩余空闲内存低于vm.min_free_kbytes limit时,使用交换空间。
在内存紧张时优先减少RAM里文件系统缓存的大小,而非使用swap空间,这是一种提高数据库性能的推荐做法。

vm.swappiness = 1
内核版本3.5及以上、Red Hat内核版本2.6.32-303及以上,进行最少量的交换,而不禁用交换。

vm.swappiness = 10
当系统存在足够内存时,推荐设置为该值以提高性能。

vm.swappiness = 60
默认值

vm.swappiness = 100
积极的使用交换空间。

对于内核版本为3.5及以上,Red Hat内核版本2.6.32-303及以上,多数情况下,设置为1可能比较好,0则适用于理想的情况下(it is likely better to use 1 for cases where 0 used to be optimal)

临时设置

# echo 10 > /proc/sys/vm/swappiness

转载于:https://www.cnblogs.com/ctypyb2002/p/9792921.html

root@dahua:/proc# ls -al sys/vm total 0 dr-xr-xr-x 1 root root 0 Jan 1 00:00 . dr-xr-xr-x 1 root root 0 Jan 1 00:00 .. -rw-r--r-- 1 root root 0 Jan 1 02:59 admin_reserve_kbytes -rw-r--r-- 1 root root 0 Jan 1 02:59 block_dump --w------- 1 root root 0 Jan 1 02:59 compact_memory -rw-r--r-- 1 root root 0 Jan 1 02:59 compact_unevictable_allowed -rw-r--r-- 1 root root 0 Jan 1 02:59 compaction_proactiveness -rw-r--r-- 1 root root 0 Jan 1 02:59 dirty_background_bytes -rw-r--r-- 1 root root 0 Jan 1 02:59 dirty_background_ratio -rw-r--r-- 1 root root 0 Jan 1 02:59 dirty_bytes -rw-r--r-- 1 root root 0 Jan 1 02:59 dirty_expire_centisecs -rw-r--r-- 1 root root 0 Jan 1 02:59 dirty_ratio -rw-r--r-- 1 root root 0 Jan 1 02:59 dirty_writeback_centisecs -rw-r--r-- 1 root root 0 Jan 1 02:59 dirtytime_expire_seconds --w------- 1 root root 0 Jan 1 02:59 drop_caches -rw-r--r-- 1 root root 0 Jan 1 02:59 extfrag_threshold -rw-r--r-- 1 root root 0 Jan 1 02:59 laptop_mode -rw-r--r-- 1 root root 0 Jan 1 02:59 legacy_va_layout -rw-r--r-- 1 root root 0 Jan 1 02:59 lowmem_reserve_ratio -rw-r--r-- 1 root root 0 Jan 1 02:59 max_map_count -rw-r--r-- 1 root root 0 Jan 1 02:59 memory_failure_early_kill -rw-r--r-- 1 root root 0 Jan 1 02:59 memory_failure_recovery -rw-r--r-- 1 root root 0 Jan 1 02:59 min_free_kbytes -rw-r--r-- 1 root root 0 Jan 1 02:59 mmap_min_addr -rw------- 1 root root 0 Jan 1 02:59 mmap_rnd_bits -rw------- 1 root root 0 Jan 1 02:59 mmap_rnd_compat_bits -rw-r--r-- 1 root root 0 Jan 1 02:59 oom_dump_tasks -rw-r--r-- 1 root root 0 Jan 1 02:59 oom_kill_allocating_task -rw-r--r-- 1 root root 0 Jan 1 02:59 overcommit_kbytes -rw-r--r-- 1 root root 0 Jan 1 00:00 overcommit_memory -rw-r--r-- 1 root root 0 Jan 1 02:59 overcommit_ratio -rw-r--r-- 1 root root 0 Jan 1 02:59 page-cluster -rw-r--r-- 1 root root 0 Jan 1 02:59 page_lock_unfairness -rw-r--r-- 1 root root 0 Jan 1 02:59 panic_on_oom -rw-r--r-- 1 root root 0 Jan 1 02:59 percpu_pagelist_fraction -rw-r--r-- 1 root root 0 Jan 1 02:59 stat_interval -rw------- 1 root root 0 Jan 1 02:59 stat_refresh -rw-r--r-- 1 root root 0 Jan 1 02:59 swappiness -rw-r--r-- 1 root root 0 Jan 1 02:59 user_reserve_kbytes -rw-r--r-- 1 root root 0 Jan 1 02:59 vfs_cache_pressure -rw-r--r-- 1 root root 0 Jan 1 02:59 watermark_boost_factor -rw-r--r-- 1 root root 0 Jan 1 02:59 watermark_scale_factor root@dahua:/proc# 这些都是什么?
最新发布
09-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值