Назад | Перейти на главную страницу

Как исправить «пропавшую» память после ядра Linux 2.6.18?

Перемещено отсюда: https://stackoverflow.com/questions/7070640/how-to-fix-disappeared-memory-after-linux-2-6-18-kernel

Я думаю, что в настоящее время существует известная проблема с отображением памяти с ядра 2.6.18:

Например:

dmesg | grep Memory
[    0.000000] Memory: 82008k/98304k available (3091k kernel code, 448k absent,        15848k     reserved, 2471k data, 460k init)

что является фактическим объемом памяти на 96-мегабайтном VPS-сервере с ОЗУ с использованием Xen PV.

Однако при использовании free -m вот фактический результат:

free -m
             total       used       free     shared    buffers     cached
Mem:            86         74         11          0          8         48
-/+ buffers/cache:         18         68
Swap:          127          0        127

Похоже, что 10 МБ памяти были "съедены" выходом free -m.

Есть ли у кого-нибудь решение, чтобы это исправить?

Спасибо!

Имея для начала всего 90 МБ, вы замечаете объем памяти, используемый ядром для обеих таблиц ядра и скомпилированный в драйверах, занимающих значительный процент вашей памяти. Эту проблему довольно легко исправить с помощью настройки.

Если вы хотите уменьшить объем памяти, привязанной к ядру, вам, вероятно, следует изучить возможность создания собственного ядра. Из вопроса неясно, какую ОС вы используете, но если вы работаете на CentOS или другом потребительском Linux, ядро, вероятно, имеет кучу скомпилированных вещей, которые вы, вероятно, не используете. Вот несколько ресурсов для создания более тонкого ядра:

http://elinux.org/Kernel_Size_Tuning_Guide

http://www.yolinux.com/TUTORIALS/LinuxTutorialOptimization.html