我正在搭建一个新的服务器(64位Debian),为了尽可能地减小Apache进程的大小,我禁用了不需要的所有模块。然后,我将64位机器上的Apache与开启了更多模块的32位Debian机器上的Apache进行了pmap输出比较。令我惊讶的是,在64位机器上“优化”后的Apache似乎消耗了更多的内存。
pmap -d(只显示摘要行)显示:
64bit: mapped: 188584K writeable/private: 14680K shared: 72K
32bit: mapped: 33824K writeable/private: 7304K shared: 888K
仔细查看输出结果后,我发现.so库的内存分配存在差异。以libc为例...
64位:
00007f9988e8d000 1380 r-x-- 0000000000000000 008:00001 libc-2.11.3.so
00007f9988fe6000 2044 ----- 0000000000159000 008:00001 libc-2.11.3.so
00007f99891e5000 16 r---- 0000000000158000 008:00001 libc-2.11.3.so
00007f99891e9000 4 rw--- 000000000015c000 008:00001 libc-2.11.3.so
32位:
b7501000 1364 r-x-- 0000000000000000 008:00001 libc-2.7.so
b7656000 4 r---- 0000000000155000 008:00001 libc-2.7.so
b7657000 8 rw--- 0000000000156000 008:00001 libc-2.7.so
因此,64位输出的第二行存在差异。我无法找到任何解释Mode="-----"的分配方式,并且每个.so文件似乎都有一个,并且大小始终为2044或2048。这是否与64位机器上的内存分配有关?相比于32位机器,我是否真的会获得更少的处理器每GB RAM的数量?