当我工作繁重时,我不时地体验到我的系统(Ubuntu13.10)冻结了。Syslog说,一个进程必须被杀死以导致内存短缺。
Killed process 4693 (chromium-browse) total-vm:1386284kB, anon-rss:31688kB, file-rss:3424kB即使我的互换几乎是空的,也会发生这种情况。我有4GB内存和4GB交换分区。
托普说:
KiB Mem: 3932056 total, 2828880 used
KiB Swap: 4079612 total, 332492 used,所以有足够的空间。但后来我发现,有些进程根本没有使用交换。他们似乎吃掉了我所有的物理内存,甚至没有考虑把一些页面交换到磁盘上。我使用"top"'s交换栏来验证每个进程的交换使用情况。
例如,Chromium浏览器和VirtualBox。其他的,如Firefox,Netbeans等,正在进行交换。
那么,是谁“决定”了什么过程是交换的,哪些不是呢?据我理解,这是由内核完成的,因为从应用程序的角度来看,内存是内存,而不区分交换内存和物理RAM。这是真的吗,还是Chromium将应用程序设置为只使用物理RAM?
谢谢你的帮忙!
发布于 2014-03-21 21:53:57
我认为你的“问题”是在VirtualBox。
基本内存--这设置了在VM运行时分配和分配给VM的RAM数量。指定的内存量将从主机操作系统中请求,因此在试图启动VM时,它必须可用或作为空闲内存在主机上可用,并且在VM运行时对主机不可用。
我在VirtualBox论坛上发现了类似的评论(尽管它们没有那么有用)。
请参阅:https://forums.virtualbox.org/viewtopic.php?f=2&t=50179
因此,我猜virtualbox内核模块会为来宾分配空闲内存,但没有礼貌地通知主机。因此,当您查看空闲RAM (使用free -m等工具)时,您似乎有足够的内存,但是.因为内核模块没有通知主机操作系统,所以主机无法适当地管理交换,然后应用程序崩溃,导致内存不足(空闲或交换)。
我建议你提交一份错误报告,但是,我猜它会被关闭,因为“不会修复”
来自VirtualBox论坛上的帖子,链接在Tim的评论中:
要回答您关于VBox是否可以使用交换的问题,不行,只有操作系统才能这样做。交换不是实际可用的内存。
发布于 2014-03-21 17:35:03
Linux内核“决定”了这一点。它使用一个名为交换性的可调参数来完成此操作。
https://askubuntu.com/questions/437453
复制相似问题