整个问题让我想知道Linux是否需要以某种我不知道的方式进行交换.解释是否是这种情况以及为什么会受到高度赞赏.我熟悉交换概念层面的想法(即虚拟内存,分页,过度使用),但我想知道是否有任何我可能错过的实现细节.
解决方法
显而易见的解决方案是添加一些交换空间,而不是让你的系统丢失.考虑到磁盘空间有多便宜,我想不出任何常见的情况,你应该在没有交换的情况下构建一个系统.
至于回答你的问题,我不记得关于为什么交换很重要的所有低级细节,即使在你不会耗尽内存的系统上,但是在Linux内核邮件列表上有关于是否在没有交换的情况下运行系统是合理的(并且没有很多确凿的答案).普遍的共识通常是始终具有交换,并根据需要调整交换.
另外,我认为你误解了有关Linux OOM杀手的一些重要警告.首先,依靠它来处理你的内存不足问题是一个非常糟糕的想法(tm).它可以非常不加区别地杀死它,你完全有可能留下一个不稳定甚至无法使用的系统.是的,它试图杀死最近进程,这些进程占用了大量内存(一个小小的保护措施,试图赶上逃跑过程),但是没有任何保证.我已经看到它杀死ssh,杀死Xen进程(在Xen虚拟主机服务器上,导致VM崩溃),并且在一种情况下它杀死了NFS.
至于IO. . .我不确定会导致什么.文件系统或磁盘相关进程可能已被杀死?当一个进程无法分配足够的内存时,它可能会内置某种“缓存到磁盘”功能?
另请注意,如果这是桌面,则挂起到磁盘需要交换.如果它是一台服务器,那么依赖OOM永远不是一个好主意,因为它会影响稳定性,完全没有理由.
[1]嵌入式系统是唯一明显的例外,它们并不是特别常见(如果您正在处理嵌入式系统,那么您已经开始意识到这些要求).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。