Для начала воспользуемся командой lsmem для просмотра информации об использовании оперативной памяти. Команда, кстати, полезная. Рекомендую запомнить и использовать. С её помощью можно быстро посмотреть полную информацию об оперативе сервера:
# lsmemRANGE SIZE STATE REMOVABLE BLOCK0x0000000000000000-0x00000000f7ffffff 3.9G online yes 0-300x0000000100000000-0x0000000107ffffff 128M online yes 32Memory block size: 128MTotal online memory: 4GTotal offline memory: 0BКоманда показывает в том числе блоки оперативной памяти, на которые её разбивает ядро. Вот с этими блоками и можно работать. Видим, что у нас 32 блока по 128M, а всего 4G памяти и вся она активна. Отключим 1G c помощью chmem.
# chmem -d 1Gили отключим 8 произвольных блоков:
# chmem -d -b 22-29Утилита пройдётся по всем блокам памяти. Те, что могут быть освобождены, она отключит. Процесс может занимать много времени, так как утилита будет пытаться перемещать информацию по памяти, чтобы высвободить заданный объём.
Проверяем, что получилось:
# lsmemRANGE SIZE STATE REMOVABLE BLOCK0x0000000000000000-0x00000000afffffff 2.8G online yes 0-210x00000000b0000000-0x00000000efffffff 1G offline 22-290x00000000f0000000-0x00000000f7ffffff 128M online yes 300x0000000100000000-0x0000000107ffffff 128M online yes 32Memory block size: 128MTotal online memory: 3GTotal offline memory: 1GВозвращаем всё как было:
# chmem -e 1GВряд ли вам часто может быть нужна эта возможность. Но иногда может пригодиться, так что стоит знать о ней. Например, в некоторых системах виртуализации, добавленная на ходу память добавляется как offline и её нужно вручную активировать.
Ещё вариант, если вы точно знаете диапазон битой памяти. Вы можете отключить содержащий её блок с помощью chmem и какое-то время сервер ещё поработает.
#linux #terminal