首页/系统/Linux 内核与性能调优速查/vm.overcommit_memory 内存超售策略
本包目录(357 条)
sysctl 内核参数72 条
CPU 与调度60 条内存与 OOM58 条磁盘与 IO32 条网络栈调优98 条性能分析工具37 条

vm.overcommit_memory 内存超售策略

控制内核接受内存申请的宽松程度:0 启发式判断、1 总是允许、2 严格拒绝超售;影响 fork、大页与数据库行为。

参数vm.overcommit_memory
取值0 启发式(默认) / 1 总是允许 / 2 严格模式
严格模式配合 vm.overcommit_ratio 或 overcommit_kbytes 计算 CommitLimit

查看与设置

查看与设置
sysctl vm.overcommit_memory
sysctl -w vm.overcommit_memory=1
cat /proc/meminfo | grep -E 'CommitLimit|Committed_AS'
Redis 官方文档建议将其设为 1,以避免后台 fork 持久化时受启发式判断影响(公开文档建议)。

易错点

  • 严格模式(2)把 CommitLimit 卡死后,malloc/mmap 失败会以 Cannot allocate memory 出现在应用层,排查时容易误判
  • 从 0 切到 2 前必须核算 Committed_AS 与现有超售规模,数据库服务器尤其谨慎

数据来源与参考

  • Linux 内核 Documentation/admin-guide/sysctl/vm.rst
  • Redis 官方文档(Background saving 章节)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌