我正在为游戏服务器软件开发 Linux 托管解决方案,但是该软件是 32 位的,而我将在主机上运行 64 位。现在,我知道我可以在 32 位 chroot 监狱(或多库系统,但我计划使用前者以将它们隔离在文件系统中)中的 64 位主机上运行 32 位应用程序,但是当所有 32 位应用程序总共使用超过 4GB RAM?
假设我有三个 32 位游戏服务器程序,每个程序使用 2GB - 一旦前两个程序合计达到 4GB 会发生什么,而第三个程序是否能够运行?
我希望通过在 64 位用户模式 Linux 内核下运行 32 位用户空间来解决这个问题,但是我发现我不屑于这样做无法在 64 位 UML 内核下运行 32 位用户区。我想我可以在 32 位用户空间中运行 32 位 UML 内核,但随后我会遇到相同的内存条件,因此可能还是使用chroot
监狱?
答案1
每个进程都在自己的地址空间中运行,并且 32 位将每个进程的地址空间限制为大约 3GB。 32 位应用程序使用的内存总和完全无关。没有什么可以绕过的。
如果这是一个问题,chroot 监狱就没有丝毫帮助的机会。它们仅影响文件的路径。