Ubuntu 16.04 几乎不使用交换

Ubuntu 16.04 几乎不使用交换

我正在尝试使用 32 位 Ubuntu 16.04 LTS 设置具有 4Gb 内存的服务器,但遇到了一个有趣的问题,希望能得到一些帮助。

我正在尝试使用 python 在这台新服务器上处理一些大型数据文件,但 python 因内存错误而崩溃(它耗尽了内存)。我已经设置了一个具有多 GB 内存的交换分区,但服务器几乎不使用交换分区。

这里“几乎”是个关键词,因为大约 80 Mb 的交换空间被使用。因此我认为(如果我错了,请纠正我)交换空间设置正确,因为系统正在使用它。

现在我尝试使用交换功能,但似乎没有帮助(当前值为 100)。

这些大型数据文件的处理是在夜间进行的,因此由于交换使用而导致的性能低下不是问题。

有人能向我解释为什么 Ubuntu 可能不使用它的交换内存并只是抛出内存错误吗?

提前致谢,

干杯,希尔伯特

答案1

32 位进程不会使用超过 4GB 的内存(无论是实际内存还是虚拟内存)。

使用聚丙烯酰胺凝胶电泳[*] 允许操作系统使用超过 4GB 的 RAM,但每个进程仍然限制在 4GB 的虚拟空间内。

如果您想在此过程中使用比这更多的 RAM,则必须使用 64 位 CPU、64 位操作系统和 64 位应用程序(即 Python 解释器)。

如果您想坚持使用 32 位操作系统,那么看看是否可以将您的 python 进程分成几个进程,每个进程使用不到 4GB 的 RAM。

[*] 据我所知,所有后期的 32 位 Ubuntu 内核都包含 PAE 支持。

相关内容