整个问题让我想知道linux是否需要以某种我不知道的方式进行交换.解释是否是这种情况以及为什么会受到高度赞赏.我熟悉交换概念层面的想法(即虚拟内存,分页,过度使用),但我想知道是否有任何我可能错过的实现细节.
解决方法 真正的问题是,为什么你没有交换运行?特别是如果你看到(严重的)与RAM耗尽有关的性能问题?你知道没有交换实际上会让你的系统变慢,对吗?显而易见的解决方案是添加一些交换空间,而不是让你的系统丢失.考虑到磁盘空间有多便宜,我想不出任何常见的情况,你应该在没有交换的情况下构建一个系统.
至于回答你的问题,我不记得关于为什么交换很重要的所有低级细节,即使在你不会耗尽内存的系统上,但是在linux内核邮件列表上有关于是否在没有交换的情况下运行系统是合理的(并且没有很多确凿的答案).普遍的共识通常是始终具有交换,并根据需要调整交换.
另外,我认为你误解了有关linux OOM杀手的一些重要警告.首先,依靠它来处理你的内存不足问题是一个非常糟糕的想法(tm).它可以非常不加区别地杀死它,你完全有可能留下一个不稳定甚至无法使用的系统.是的,它试图杀死最近进程,这些进程占用了大量内存(一个小小的保护措施,试图赶上逃跑过程),但是没有任何保证.我已经看到它杀死ssh,杀死Xen进程(在Xen虚拟主机服务器上,导致VM崩溃),并且在一种情况下它杀死了NFS.
至于IO. . .我不确定会导致什么.文件系统或磁盘相关进程可能已被杀死?当一个进程无法分配足够的内存时,它可能会内置某种“缓存到磁盘”功能?
另请注意,如果这是桌面,则挂起到磁盘需要交换.如果它是一台服务器,那么依赖OOM永远不是一个好主意,因为它会影响稳定性,完全没有理由.
[1]嵌入式系统是唯一明显的例外,它们并不是特别常见(如果您正在处理嵌入式系统,那么您已经开始意识到这些要求).
总结以上是内存溢出为你收集整理的Linux OOM磁盘I / O.另外:交换,有什么好处?全部内容,希望文章能够帮你解决Linux OOM磁盘I / O.另外:交换,有什么好处?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)