Этот вопрос мотивирован моим шоком, когда я обнаружил, что ядро Mac OS X использует 750 МБ ОЗУ .
Я использую Linux в течение 20 лет, и я всегда «знал», что использование ОЗУ в ядре намного меньше X (правда ли это?
Итак, после некоторого поиска, я попробовал, slabtop
который сказал мне:
Active / Total Size (% used) : 68112.73K / 72009.73K (94.6%)
Значит ли это, что мое ядро сейчас использует ~ 72 МБ ОЗУ?
(Учитывая, что RSS top
сообщает Xorg
17M, ядро теперь превосходит X, а не наоборот).
Каково «нормальное» использование ОЗУ ядра (диапазон) для ноутбука?
Почему MacOS использует на порядок больше оперативной памяти, чем Linux?
PS. Здесь нет ответа на последний вопрос, поэтому, пожалуйста, смотрите связанные вопросы:
echo 3 > /proc/sys/vm/drop_caches
, то у меня будет только 80 МБ.Ответы:
Ядро немного неправильное. Ядро Linux состоит из нескольких процедур / потоков + модулей (
lsmod
), поэтому, чтобы получить полную картину, вам нужно рассмотреть весь шар, а не только один компонент.Кстати мои шоу
slabtop
:На странице руководства
slabtop
также было сказано следующее:Сброс кешей
Удаление моих кешей, как предложил @derobert в комментариях к вашему вопросу, делает для меня следующее:
Отправка 3 делает следующее: бесплатный pagecache, dentries и inode. Я обсуждаю это больше в этом разделе вопросов и ответов под названием: Существуют ли какие-либо способы или инструменты для сброса кэша и буфера памяти? ". Таким образом, 110 МБ моего пространства использовалось, просто поддерживая информацию, касающуюся кэша страниц, дентриев и инодов.
Дополнительная информация
slabtop
немного больше деталей. Это называется: Linux-команда дня: slabtop .Так сколько оперативной памяти использует мое ядро?
Эта картина немного более туманная для меня, но вот то, что я «думаю», мы знаем.
горбыль
Мы можем получить снимок использования Slab, используя эту технику. По сути, мы можем извлечь эту информацию из
/proc/meminfo
.Модули
Также мы можем получить значение размера для модулей ядра (неясно, является ли их размер на диске или в оперативной памяти), извлекая эти значения из
/proc/modules
:Slabinfo
Большая часть деталей о SLAB доступна в этой структуре процедур
/proc/slabinfo
:Dmesg
Когда ваша система загружается, появляется строка, которая сообщает об использовании памяти ядром Linux сразу после его загрузки.
Рекомендации
источник
grep Slab /proc/meminfo
./proc/slabinfo
который выглядит как источникslabtop
, поэтому отсюда можно рассчитать суммы для более точного общего подсчета./proc/modules
большей вероятностью будет загружен размером модуля в память, поскольку модули на диске обычно сжимаются (например, в Fedora 27 это xz), я проверилtg3
драйвер NIC, размер на диске (сжатый или оригинальный размер файла) не соответствует размеру байта, отображаемому в/proc/modules
.Как насчет этого:
Это на недавно загруженной, очень маленькой машине, работающей без головы с нормальным ядром. Так что это не требует много.
Как подсказывает Дероберт, ядро будет использовать доступную память для кэширования, и это многое из того, что вы видите
slabtop
. В дополнение к файловому кешу, это связано с разделяемой памятью от процессов пользовательского пространства, которые больше не используются. Ядро оставляет его там до тех пор, пока либо снова не потребуются те же самые вещи, либо что-то активно требует оперативной памяти, и в этом случае это забывается. По аналогии можно взять книгу с полки и разложить ее для чтения на столе: когда вы закончите чтение, вы можете оставить книгу открытой на столе на случай, если вам понадобится снова посмотреть на нее.источник
На этом сервере ОЗУ 512 ГБ, работающем под управлением Solaris, ядро использует 25 ГБ:
Этот меньший имеет более половины своей оперативной памяти, используемой ядром:
Не о чем беспокоиться, неиспользованная ОЗУ тратится впустую ОЗУ в любом случае.
источник
echo ::memstat | mdb -k
на некоторых рабочих серверах Solaris 10, выпущенных до обновления 10/09.