最近我从 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 上运行它。:)