如何防止系统崩溃(RAM不足)时系统无响应?


11

我有8GB的RAM,但有时我会运行几个VM和足够的Chrome进程来耗尽我的大部分内存。通常,这很好,但是有时我的系统开始崩溃,并且由于UI大部分处于冻结状态,如果不等待一切变得更好,我很难从中恢复。

在所有这些情况下,使用我的大部分RAM的程序都可以被取消优先级。如果Chrome或VM变得无响应,但是我的图形环境和终端仍然响应,我可以切换到终端,找到罪魁祸首并杀死它。我可以想象像内存那样的“不错”(这样我就可以用Chrome和我的VM了),或者可以强制图形环境和终端保留在内存中而不进行交换的东西。

有什么方法可以确保在系统崩溃时UI保持响应状态?

谢谢!

编辑:我仍然对是否有一个不错的内存感兴趣,但我只是发现我的系统没有任何交换空间。我认为发生这种情况是因为我开始使用加密的home和加密的交换(请参阅交换不使用干净的home进行干净的14.04安装)。因此,由于我没有任何交换空间,因此我的系统可能会变得无响应,因此当系统内存不足时,我的系统将无法交换出不必要的程序。


因此,看来您已找到问题的原因(未分配交换)-您现在是否想知道如何设置加密交换?也许您可以编辑问题或开始新问题。
thomasrutter 2014年

1
我仍然对RAM-nice风格的东西感兴趣,因为即使在我有交换文件的时候,我也遇到了与问题中所描述的问题类似的问题。
山姆·金

Answers:


2

我刚刚发现我的系统没有任何交换空间

如果是这样,则可能是问题所在。

通过使用具有大量内存分配的多个VM,通常会超出正常使用范围的内存(8GB)会变得越来越紧,这意味着您的系统将无法使用那么多的缓存,并且想要交换。现在,如果没有交换,内存上的压力将更大,甚至可能由于内存不足而导致任务被杀死。

Swap通过将内存中一些已分配但很少使用的数据重新分配到磁盘上,以释放正在使用的数据的内存,从而尝试在上述情况下提高整体稳定性和性能。如果您确实没有交换,则添加交换将有所帮助。但是,就性能而言,如果您购买更多的RAM或使用更少的RAM,您将获得更大的改进。

在一个系统,你运行的虚拟机,但你在那里使用VM主机上的常规桌面,你不想让你的虚拟机占用你所有的RAM,其实我节省一半的RAM(最大支持4GB ),因为您正在主机上运行软件并希望它能够响应。

还要注意,VM固有的效率低下不仅是因为它们的RAM是完全独立的,它们不共享任何缓存或缓冲区,而且它们在多个抽象层下运行着一个完整的独立OS。因此,如果您决定在主机上而不是在VM中运行某些程序,则始终可以获得更高的效率-尽管如果使用VM的目的是使用其他操作系统,则将无法实现。

有什么方法可以确保在系统崩溃时UI保持响应状态?

当您拥有的RAM数量有问题时,您只能做一个破解-真正的解决方案是购买更多RAM(尽管就我而言,您可能只分配了更少的VM)。

您的问题用简单的术语表示-即使IO拥塞,您也希望UI能够继续平稳运行。但是,答案很复杂。您的系统已经尽了最大的努力:不需要磁盘访问的操作不会被延迟。如果您的“ UI停顿了”,那是因为负责该UI的特定进程需要磁盘访问权限。在内存不足的情况下,以及磁盘发生故障时,由于磁盘缓存的耗尽,即使通常通常是微不足道的某些操作(例如从主目录读取一些配置以了解您的显示首选项)也会很慢。

我可以想象像“不错”的内存(这样我就可以很好的Chrome和我的VM)

确实没有“很好的记忆”。内存访问是如此之快,以至于您通常几乎可以忽略它。当您发生故障时,不是内存,而是磁盘,这就是问题所在。因此有一个“离子”。虽然那可能不是我建议的问题。

另一个“内存不错”的等效概念是交换-您无法控制每个进程的交换方式,但是系统在确定您正在使用的进程方面做得很好,因此保留在其中的优先级更高内存。

但是正如我所说的,并且作为黄金法则,如果您的内存不足,那么购买更多的内存是最省心又省心的解决方案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.