Что использует мою память?

Что использует мою память?

Я пытаюсь выяснить, что использует память на моем сервере Linux (Ubuntu 20.04).

Через некоторое время после перезагрузки htop показывает следующее:

htop

Это говорит о том, что в данный момент используется 17 ГБ памяти. До перезагрузки он показывал 29,6 ГБ, и компьютер казался вялым. Окно htop отсортировано по памяти, и самый потребляющий процесс использует 0,6% памяти.

Другой вопроспредлагается использовать эту команду:

ps -e -orss=,args= | sort -b -k1,1n

Самый загруженный процесс потребляет 209596 килобайт (?) памяти, что снова составляет небольшую часть доступной оперативной памяти.

Я попробовал довольно загадочную команду, чтобы сложить все числа в первом столбце, выданном этой psкомандой:

ps -e -orss=,args= | sort -b -k1,1n | sed 's/^ \+//' | cut -d \  -f 1 | sed '2,$s/$/+/' | sed '$s/$/p/' | dc

В результате общий объем использованной памяти составил 2965816 килобайт (?), что (если мое предположение о килобайтах верно) составляет менее 3 ГБ. Так куда же уходят остальные 14 ГБ?

Может ли кто-нибудь помочь с этим?

решение1

Да. Это создает мне проблему?

Это не вызывает проблем. Это ожидаемое поведение. ZFS изначально не предназначена для Linux. У нее есть собственная система кэширования (называемая ARC, Adaptive Replacement Cache). В Linux память, выделенная для этого кэша, рассматривается как «используемая», хотя она будет освобождена при повышении нагрузки на память, как и обычное кэширование файловой системы. Максимальный размер ARC по умолчанию составляет 50% от физической памяти.

В современных версиях htop(3+) можно включить отображение статуса ARC:

htop 3 zfs статус

Этот снимок экрана сделан в системе с 8 ГиБ памяти.

решение2

ZFS имеет дисковый кэш на основе ОЗУ, который отделен от обычного дискового кэша Linux. Это связано с не-Linux происхождением ZFS. Этот кэш памяти ZFS называется адаптивным замещающим кэшем, или ARC. Из-за этого разделения ZFS ARC отображается в Linux как «используемая» память, а не «кэшированная», как можно было бы ожидать от собственных файловых систем, таких как EXT4. Вот почему многие новички в ZFS беспокоятся об использовании ОЗУ, но беспокоиться не о чем. Если вы не имеете дело с дедупликацией (что, вероятно, не так и не должно быть), память не является такой уж большой проблемой для ZFS, вопреки тому, что вам скажут многие люди.

Вы видите, что этот дисковый кэш (и, следовательно, память) заполняется, потому что вы перемещаете (что означает чтение) много данных. Предел памяти по умолчанию для ARC обычно составляет 50% от вашей оперативной памяти, но его можно настроить с помощью параметра модуля ядра zfs 'zfs_arc_max', если вы хотите установить максимум. Если свободной памяти когда-либо станет мало, ZFS освободит часть своего ARC, как это делает обычный дисковый кэш Linux. Опять же, не о чем беспокоиться: неиспользуемая оперативная память — это бесполезная оперативная память.

--ХенкАхтерпаард

Связанный контент