我正在设置一个新服务器(64 位 Debian),并试图使 apache 进程尽可能小,禁用任何我不需要的模块。然后,我将 pmap 输出与 32 位 Debian 机器上的 apache 进行了比较,打开了更多模块。看到 64 位机器上的“优化”版本似乎消耗了更多内存,我感到非常惊讶。
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。
这与 64but 机器上的内存分配有关吗?与 32 位机器相比,每 GB RAM 获得的 procs 真的会少得多吗?