В чем разница между отчетом об использовании памяти в System Monitor и отчетом free?

Я использую системный монитор 2.28.0. Когда я смотрю на вкладке «Ресурсы», я вижу хороший график для памяти и подкачки. Память составляет около 60% 2,3 ГиБ из 3,8. Когда я набрал команду free, я получил:

             total       used       free     shared    buffers     cached
Mem:       3994908    3962396      32512          0     100852    1477032
-/+ buffers/cache:    2384512    1610396
Swap:      8000328      28468    7971860

cat / proc / meminfo | grep MemFree give

MemFree:           34536 kB

Ситуация сохранялась в течение нескольких минут. Я начал много процесса со сценарием, и сценарий ожидает освобождения свободной памяти. В соответствии с тем, что я вижу на вкладке «Процесс» (или сверху), число в системном мониторе кажется слишком закрытым для общего объема памяти процесса, который сообщается бесплатно.

Спасибо

15
задан 4 June 2011 в 02:22

2 ответа

Разница в том, включена ли "буферная" и "кэшированная" память в счет "использованных" или нет.

Обычно системная память Linux используется ядром для двух целей: процессы и файловый/сетевой кэш/буферы. Если внимательно посмотреть на вывод free, то уже показано:


             total       used       free     shared    buffers     cached
Mem:       3994908    3962396      32512          0     100852    1477032
-/+ buffers/cache:    2384512    1610396
Swap:      8000328      28468    7971860

Если добавить "буферы" и "кэш", а затем вычесть это из столбца "used", то получится вторая строка под "used" (строка, которая начинается с -/+ буферов/кэша), которая показывает около 2. 3G (2384512), которая соответствует используемой памяти, о которой сообщает System Monitor (он игнорирует буферы/кэшированные данные, потому что они уйдут, чтобы освободить место для большего количества процессов).

Ваша grep против /proc/meminfo на самом деле соответствует столбцу "свободный" в первой строке (32512 достаточно близко к 34536 -- скорее всего, он изменился между двумя выходами команд).

17
ответ дан 4 June 2011 в 02:22

Когда я взял в руки системный монитор, использование памяти, указанное на вкладке «Ресурсы», было таким же, как в столбце свободно в / usr / bin / free .

Проблема в том, что свободной физической памяти рано или поздно становится почти 0: Linux активно кэширует, поэтому деньги, потраченные на покупку ОЗУ, используются эффективно. А это означало, что график будет постоянно показывать> 98% использования памяти, что было бесполезно.

Итак, я / мы решили сделать то же, что и - / + buffers / cache: строка из / usr / bin / free . Таким образом, график становится осмысленным и позволяет пользователю наблюдать за использованием памяти приложением / пользовательской средой вместо физического состояния памяти.

Я знаю, это немного вводит в заблуждение,потому что большинство (l) пользователей не понимают, что свободная физическая память - это пустая трата денег и производительности. На работе я столкнулся с той же проблемой: каждый понедельник серверы перезагружались, а в следующие 24 часа каждый сервер вызывал предупреждение о заполнении памяти. Таким образом, у меня было исправлено вычисление свободной памяти в программном обеспечении для наблюдения, как и в системном мониторе.

Текущая версия Solaris имеет ту же проблему: кэш ZFS (ARC) не включается в свободную память, сообщаемую такими инструментами, как vmstat , из-за чего глупые администраторы БД жалуются, что «ZFS - это плохо» :)

0
ответ дан 4 June 2011 в 02:22

Другие вопросы по тегам:

Похожие вопросы: