为什么一个进程在一个操作系统上运行比在另一个操作系统上运行占用更多的内存?

为什么一个进程在一个操作系统上运行比在另一个操作系统上运行占用更多的内存?

我的进程在 Ubuntu 22.04 上执行时比在 Oracle Linux 8 上执行时占用更多内存。这与操作系统有关吗?可能与程序有关(我发现这有点令人困惑,因为执行的是同一个二进制文件)?等等。

补充一些背景信息,我想了解发生了什么,是因为作为一名专业软件开发人员,我经常负责在生产环境中运行我创建的软件,了解我的软件在运行时将如何使用内存等资源很有帮助。我想知道在编写和部署软件时如何高效地使用内存。

细节:

我正在运行的进程是你从以下网址下载 Minecraft (Bedrock Edition) 时获得的过程Minecraft 网站在下载的文件中,它被称为bedrock_server,并且您被指示使用命令运行它LD_LIBRARY_PATH=. ./bedrock_server,所以我的理解是至少有一个动态链接文件也是从该目录加载的。

# file bedrock_server
bedrock_server: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[xxHash]=51ffa5a7d5d4a199, stripped

我最初使用运行 Oracle Linux 8 的 1 GB VPS 来运行它。运行时,ps显示以下输出:

$ ps aux | head -1; ps aux | sort -rnk 4 | head -1
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      650031 10.9 31.0 2585888 297956 ?      Ssl  03:57  82:47 ./bedrock_server

我想尝试另一家 VPS 提供商,因为这家提供商的 CPU 占用率太高,所以我也在该提供商上选择了 1 GB 的 VPS。我选择了 Ubuntu 22.04 作为其操作系统。但这次,Minecraft 几分钟后就因为内存耗尽而停止运行。我在调查时注意到,它似乎在这个 VPS 上使用的内存更多:

# ps aux | head -1; ps aux | sort -rnk 4 | head -1
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       13620 11.0 60.1 1238576 535844 ?      Rl   15:53   4:39 ./bedrock_server

据“RSS”称,它似乎使用了大约 250 MB 的内存。

为了进行此比较,我尝试将所有内容保持原样。正在执行并用作世界数据、服务器设置等的 Minecraft 文件已从第一个 VPS 复制到第二个。

因此,据我所知,这些 VPS 之间的唯一区别在于所使用的操作系统。一个是 Oracle Linux 8,另一个是 Ubuntu 22.04。我想了解为什么这会导致内存使用量的差异。或者,如果不是原因,那是什么原因。

注意:我已经发布了这个服务器故障在那里它被认为偏离了主题。他们建议在这里发帖。

相关内容