x86_64 和内存问题

x86_64 和内存问题

最近我从 ubuntu 32 位切换到 64 位版本。现在我遇到了一些问题。

所有应用程序都占用两倍以上的内存。有些应用程序占用的内存甚至更多。例如,新服务器上的 sshd:

root      6608  0.0  0.0  67972  2912 ?        Ss   14:43   0:00 sshd: deploy [priv]
deploy    6616  0.0  0.0  67972  1724 ?        S    14:43   0:00 sshd: deploy@pts/4
root     20892  0.0  0.0  50916  1160 ?        Ss   15:53   0:00 /usr/sbin/sshd
root     21170  0.0  0.0  67972  2912 ?        Ss   15:56   0:00 sshd: deploy [priv]
deploy   21173  0.0  0.0  67972  1728 ?        S    15:56   0:00 sshd: deploy@pts/0
root     23802  0.0  0.0  67972  2912 ?        Ss   16:08   0:00 sshd: deploy [priv]
deploy   23804  0.0  0.0  67972  1724 ?        S    16:08   0:00 sshd: deploy@pts/1
root     24570  0.0  0.0  67972  2908 ?        Ss   12:45   0:00 sshd: deploy [priv]
deploy   24573  0.0  0.0  68112  1804 ?        S    12:45   0:00 sshd: deploy@pts/3
deploy   25014  0.0  0.0   5168   852 pts/0    S+   16:13   0:00 grep ssh

旧服务器上也一样:

root      4867  0.0  0.0   5312  1028 ?        Ss   Mar23   0:00 /usr/sbin/sshd
root     23753  0.0  0.0   8052  2556 ?        Ss   16:15   0:00 sshd: deploy [priv]
deploy   23755  0.0  0.0   8052  1524 ?        S    16:15   0:00 sshd: deploy@pts/0
deploy   23770  0.0  0.0   3004   748 pts/0    D+   16:15   0:00 grep ssh

postfix、nginx 和其他一些应用程序也存在同样的问题。

答案1

事实上情况比这更复杂一些。

是的,64 位可执行文件将消耗更多的 RAM,因为在 64 位系统上程序的一些基本构建块更大。

但是,从您提供的输出来看,情况并没有那么糟糕。除非存在物理内存的实际争用,否则 RSS(驻留集大小,即进程在物理 RAM 中的部分)列更为合适,从您的输出来看,RAM 消耗量远低于两倍。

关于内存使用的更全面的讨论可以在这里找到:了解 Linux 上的内存使用情况

答案2

欢迎使用 64 位。由于默认数据类型的大小是其两倍,默认指令大小也是如此,因此内存中的映像将更大。

编辑:一些(非 SSH)程序不太适合 64 位系统。有一次,一家知名 UPS 供应商的电源监控守护程序在 64 位 Java 运行时上运行时,体积从原本很大的 400M 膨胀到巨大的 1.5G。他们对错误报告的回应是告诉我在 32 位 Java 上运行它。:)

相关内容