在我/etc/fstab
这里没有swap
分区。
top
展示 KiB Swap: 0 total, 0 free, 0 used
并swapon
说明不了什么。
因此,看起来交换已禁用。但是,当系统用尽物理内存时,它会像交换一样开始工作:系统几乎没有响应,磁盘访问指示灯一直亮着;如果我设法关闭一个繁重的进程(或者它可能被内存不足的杀手杀死),则系统将再次响应。
在这种情况下,Ubuntu是否仍会交换?
系统是Ubuntu 16.04。
如果没有交换,Ubuntu将不会交换。
发生的情况是Linux内核内存管理器(不是Ubuntu本身)首先会尝试将内存合并为可以分配给请求该内存的应用程序的块(您看到的是速度变慢),如果不能,则这些应用程序将崩溃,因此,它们可以为没有崩溃的性能更好的应用程序释放它们的内存。
内核的OOM杀手¹当且仅当有这样做的没有其他办法时才会激活²,看着你的磁盘占用率过高,你跑入太小失败的内存分配规则。相关部分指出:
换句话说,分配过程无法进行,因为它正在等待分配调用返回。在释放内存之前,该调用无法返回,这需要受害者进程退出。OOM杀手还将等待受害者退出,然后再(有可能)选择第二个杀人程序。
早在我还是个孩子的时候,您在IT行业就需要具备的唯一资格是阅读手册的能力,标准是32K,“哇”是64K,我们过去经常检查每个内存分配并显示“ Out of memory”(内存不足)当我们不能在应用层面,今日的分配内存的孩子程序员没有做任何更多,他们正在与多台监视器,巨大的固态硬盘和系统通常更好腐烂变质比系统软件的实际运行上他们是不再习惯于系统耗尽内存...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句