;-)

;-)

我的里面/etc/fstab没有swap分区。

top显示器KiB Swap: 0 total, 0 free, 0 used

并且swapon什么也没显示。

因此看起来交换被禁用了。但是当系统耗尽物理内存时,它开始表现得像在交换一样:系统几乎没有响应,磁盘访问指示灯一直亮着;如果我设法关闭一个繁重的进程(或者如果它被杀死,可能是被内存不足杀手杀死),系统就会再次响应。

在这种情况下 Ubuntu 还能交换吗?

系统是Ubuntu 16.04。

答案1

简短的回答是:

如果没有交换,Ubuntu 将不会交换。

长答案:

所发生的情况是,Linux 内核内存管理器(实际上并不是 Ubuntu 本身)将首先尝试将内存合并为可以分配给请求所述内存的应用程序的块(您看到的速度减慢),如果不能,这些应用程序将崩溃,从而释放它们的内存以供没有崩溃的、表现更好的应用程序使用。

内核的 OOM Killer¹仅当没有其他方法时才会调用²看到你的高磁盘使用率,你正在运行内存分配规则太小而无法失败相关章节指出:

换句话说,分配进程无法继续,因为它正在等待其分配调用返回。该调用在内存释放之前无法返回,这需要受害进程退出。OOM 终止程序还将等待受害进程退出,然后(可能)选择第二个要终止的进程。

咆哮:

当我还是个孩子的时候仅有的进入 IT 行业所需的资格是能够阅读手册,32K 是常态,64K 则是“哇”,我们过去常常检查每个内存分配,当我们无法在应用程序级别分配内存时,会显示“内存不足”,而今天的孩子程序员不再这样做了,因为他们被多个显示器、巨大的 SSD 和通常比他们的软件实际运行的系统更好的系统宠坏了,他们不再习惯系统耗尽内存......

;-)

相关内容