@H_
404_0@假设我已经禁用了所有的OOM相关function(没有OOM杀手)。
一个进程占用了所有可用的内存,并且仍然试图从mmapped磁盘
文件中读取一些不在任何
页面caching中的字节。 这个过程是否会得到
一个OOM信号,这样它可以被动地释放一些内存并在以后重试?@H_
404[email protected]重写规则,以防止caching的CSS,JS,图像
文件。@H_
404_0@如何以编程方式清除Windows中的caching?@H_
404_0@如何创build
一个caching/交换/内存caching@H_
404_0@fflush,fsync和sync与内存层@H_
404_0@在
Nginx中覆盖Cache-Control:Private@H_
404_0@这取决于很多条件。@H_
404_0@1)你如何禁用杀手?@H_
404_0@假设你写了2到/ proc / sys / vm / overcommit_memory,这意味着:@H_
404_0@2:总是检查,永远不要过分(见man 5 proc)@H_
404_0@之后,你叫mmap。@H_
404_0@2)你在“mmap”中使用了哪些标志?@H_
404_0@假设你使用了MAP_
norESERVE,在另一种情况下(没有MAP_
norESERVE),如果没有足够的物理内存,mmap只是返回
错误。@H_
404_0@3)你的overcommit_ratio值是多少? 我们假设它不是零,如果它是零,那么mmap返回
错误,我们不能处于“无
文件页面”的情况。@H_
404_0@如果所有这些假设都是真的,那么你来:mm / oom_kill.c :: pagefault_out_of_memory,@H_
404_0@又
一个新的条件:@H_
404_0@4)可能是我们在与OOM禁用Cgroup?@H_
404_0@如果是,那么我们就去睡觉。@H_
404_0@最后称为杀手@H_
404_0@
关于禁用oom@H_
404_0@而“我们只是去睡觉”,你的意思是系统暂停吗?@H_
404_0@请参阅linux-source / Documentation / cgroups / memory.txt:@H_
404_0@如果OOM杀手被禁用,则cgroup下的任务将在请求可疑内存时在内存cgroup的OOM等待队列中挂起/休眠。@H_
404_0@因此,处理与残疾杀手的部分cgroup去睡觉,而不是所有的系统。@H_
404_0@
用户态进程是否有可能处理这个
页面错误?@H_
404_0@1)可以这样做: https : //lwn.net/Articles/550555/@H_
404_0@2)或者你可以看OOM杀手事件。@H_
404_0@再次查看linux-source / Documentation / cgroups / memory.txt:@H_
404[email protected]_control
文件用于OOM
通知和其他控件。@H_
404_0@内存cgroup使用cgroup
通知API实现OOM
通知程序(请参阅cgroups.txt)。 它允许
注册多个OOM
通知传递并在OOM发生时获得
通知。@H_
404_0@要
注册通知程序,应用程序必须:…@H_
404_0@如果你禁用了oom-killer那么进程将不会得到信号,但是一旦内存耗尽, malloc()
调用将会失败。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。