Я настраивал новый сервер (64-битный Debian) и, пытаясь сделать процесс apache как можно более маленьким, отключил все ненужные мне модули.Затем я сравнил вывод pmap с apache на 32-битной коробке Debian с большим количеством модулейЯ был очень удивлен, увидев, что «оптимизированный» на 64-битной машине, похоже, потребляет гораздо больше памяти.
pmap -d (только итоговая строка) показывает:
64bit: mapped: 188584K writeable/private: 14680K shared: 72K
32bit: mapped: 33824K writeable/private: 7304K shared: 888K
Присмотритесь к выходу.Я вижу различия в распределении памяти для .so libs.Взяв в качестве примера libc ...
64bit:
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
32bit:
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-разрядной машине?