Что такое «эффективно используемая» память в Linux? "использовано" или ("всего" -"доступно" )?

Если вы хотите использовать строки из File1 в качестве шаблонов и напечатать все строки, которые «соответствуют» одной из них, вы можете использоватьgrep:

grep -f File1 File2
0
07.11.2019, 11:35
2 ответа

Это зависит от того, что должно отражать ваше использование. В выводе free:

  • «используется» рассчитывается как «всего — свободно — буферы — кеш», поэтому он отражает объем памяти, в которой в настоящее время хранятся полезные данные, исключая кеш;
  • Под «доступным» понимается объем физической памяти, который можно немедленно сделать доступным для других целей.

«Всего — доступно» будет означать что-то вроде «физической памяти, используемой в настоящее время, и -не заменяемой». Разница между этим и «используемым», упомянутыми вами 5 ГБ и 15 ГБ, заключается в объеме физической памяти, в которой в настоящее время хранятся данные, которые еще не доступны где-либо еще, , т.е. грязные буферы (, поэтому в вашем PostgreSQL больше данных. ожидание удара по диску ). «Доступно» отражает максимальный объем физической памяти, который программа может запросить без принуждения к свопингу (, хотя ничто не гарантирует, что, если бы программа использовала такой объем памяти, она все равно не свопалась бы, учитывая остальную часть поведения системы в то время ).

Таким образом, ваши два значения отражают используемую память с немного разными определениями. Какой из них вы используете, зависит от вас (или ваших требований ). «Доступно» более точно, чем «использовано», поэтому, вероятно, это более полезное значение, если вы хотите сохранить только одно.

Другой способ подумать об этом — рассмотреть, на какие вопросы отвечают ценности:

  • «используется» сообщает вам, полезны ли 128 ГБ ОЗУ для вашей текущей рабочей нагрузки;
  • «доступно» говорит вам, сколько места у вас еще осталось;
  • «всего — доступно» сообщает вам, сколько физической оперативной памяти вам действительно нужно(т. е. насколько меньше может быть ваш следующий сервер или виртуальная машина, если вы готовы потерять прирост производительности от кэша ).

Идеального компромисса не существует, поэтому freeпоказывает оба значения.

Память, доступная сразу в системе управления памятью Linux и Как я могу получить объем доступной памяти, переносимый между дистрибутивами? предоставляют более подробную информацию о точном значении слова «доступный». Это не эквивалентно «бафф/кэшу», потому что последний включает в себя память, которая не подлежит восстановлению (, поскольку она еще не была записана на диск ), и существуют другие пулы памяти, которые могут быть восстановлены, но не t засчитывается в «баф/кеш».

3
28.01.2020, 02:22

В дополнение к существующему ответу:

Этот "простой" вопрос касается очень важной темы :управления памятью. Это даже основная «подсистема» ядра. «Купите больше оперативной памяти» по-прежнему верно для всех. Но независимо от того, сколько у вас есть :, каждая ОС должна справляться со случаем, когда совместное использование ОЗУ превращается в перегрузку, в подкачку, в перегрузку.

Существует тонкая грань между эффективным использованием ресурсов и исчерпанием ресурсов. Я просмотрел ваши цифры и получил такую ​​интерпретацию:

ява:

«используется» показывает 83% от «всего». Это высоко. И своп активен; очень маленький, и еще со свободным местом.

"бесплатно" указывает на проблему. Менее 1%. Где 16%? Это так называемые «доступные», здесь 16 ГБ, что составляет около 16%.

«общие» (4G )плюс «бафф/кэш» (19G )немного больше, чем эти «доступные» 16G --, отражающие, что ядро ​​может «пожертвовать» двумя третями Это.Но то, как сейчас работает java в системе, так и получается.

Таким образом, эта отсутствующая шестая, x = общее количество-(использовано+свободно)(132G-(110+1 )), здесь равно 21G, что находится между «доступно» (16G )и "sh" + "b/c" (23G вместе ).

Вы должны прочитать freeслева направо, сначала проверить «своп», а затем спросить, КАК он используется :как «общий» и/или «бафф/кеш», и сколько из этого "доступный".

Активация свопа и «бесплатно» менее 1% показывают красный свет, но доступно 16%, и сведения о свопе показывают, что все в порядке.

(Я думаю, что своп слишком мал для 132G; Я надеюсь, что служба Java тоже что-то делает )


Пример SQL:

Это показывает, как "должно быть" :достаточно оперативной памяти и приложения и ОС, работающих вместе:

Используется только 5%. Но 50% не бесплатно. Они используются как «общие» и зарезервированы как «бафф/кеш». Свап не активен. Опять же, вы не можете получить весь 61G, но большую его часть.


Бесполезно определять новые слова -это вопрос толкования. В конце концов, это ядро ​​знает, и freeидеально подходит для обзора верхнего уровня. Вы должны спросить «оператора», что он хочет, теперь с этой информацией, или, может быть, теперь вы даже знаете, не спрашивая.

1
28.01.2020, 02:22

Теги

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