linux中 vm.overcommit_memory 的含义
2021/11/3 7:11:34
本文主要是介绍linux中 vm.overcommit_memory 的含义,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
vm.overcommit_memory 表示内核在分配内存时候做检查的方式。
这个变量可以取到0,1,2三个值。对取不同的值时的处理方式都定义在内核源码 mm/mmap.c 的 __vm_enough_memory 函数中。
-
取 1 的时候:此时宏为 OVERCOMMIT_ALWAYS,函数直接 return 0,分配成功。
-
取 2 的时候:此时宏为 OVERCOMMIT_NEVER,内核计算:内存总量×vm.overcommit_ratio/100+SWAP 的总量,如果申请空间超过此数值,则分配失败。vm.overcommit_ratio 的默认值为50。
-
取 0 的时候:此时宏为 OVERCOMMIT_GUESS,内核计算:NR_FILE_PAGES 总量+SWAP总量+slab中可以释放的内存总量,如果申请空间超过此数值,则将此数值与空闲内存总量减掉 totalreserve_pages(?) 的总量相加。如果申请空间依然超过此数值,则分配失败。
以上为粗略描述,在实际计算时,如果非root进程,则在计算时候会保留3%的空间,而root进程则没有该限制
vm.overcommit_memory
默认值为:0 从内核文档里得知,该参数有三个值,分别是: 0:当用户空间请求更多的的内存时,内核尝试估算出剩余可用的内存。 1:当设这个参数值为1时,内核允许超量使用内存直到用完为止,主要用于科学计算 2:当设这个参数值为2时,内核会使用一个决不过量使用内存的算法,即系统整个内存地址空间不能超过swap+50%的RAM值,50%参数的设定是在overcommit_ratio中设定。
vm.overcommit_ratio
默认值为:50 这个参数值只有在vm.overcommit_memory=2的情况下,这个参数才会生效。
转载自:http://blog.sina.com.cn/s/blog_d495ebf80101pwwq.html
这篇关于linux中 vm.overcommit_memory 的含义的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南