свободная команда linux (память)

Физическая память и виртуальная память

Мы знаем, что чтение и запись данных непосредственно из физической памяти происходит намного быстрее, чем чтение и запись данных с жесткого диска, поэтому мы надеемся, что все чтение и запись данных завершаются в памяти, а память ограничена, что приводит к физической память и виртуальная память.

Физическая память — это объем памяти, предоставляемый системным оборудованием. Это реальная память. По сравнению с физической памятью в Linux также существует понятие виртуальной памяти. Виртуальная память — это стратегия, предлагаемая для удовлетворения нехватки физической памяти. Она использует диск пространство Часть логической памяти, которая виртуализируется, а дисковое пространство, используемое в качестве виртуальной памяти, называется пространством подкачки (Swap Space).

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

Управление памятью в Linux использует механизм доступа к страницам.Чтобы обеспечить полное использование физической памяти, ядро ​​будет автоматически заменять редко используемые блоки данных в физической памяти в виртуальную память в соответствующее время, а часто используемые блоки данных Информация сохраняется в физической памяти.

Чтобы глубже понять механизм работы с памятью в Linux, вам необходимо знать следующие аспекты:

Во-первых, система Linux будет время от времени выполнять операции подкачки страниц, чтобы сохранить как можно больше свободной физической памяти.Даже если нет ничего, что требовало бы памяти, Linux также будет подкачивать временно неиспользуемые страницы памяти. Это позволяет избежать времени, необходимого для ожидания обмена.

Во-вторых, linux выполняет подкачку страниц условно.Не все страницы подкачиваются в виртуальную память, когда они не используются.Ядро linux подкачивает в виртуальную память только некоторые редко используемые файлы страниц в соответствии с алгоритмом "последние наиболее часто используемые".Иногда мы Вы увидите такое явление: Linux по-прежнему имеет много физической памяти, но пространство подкачки также используется много. На самом деле в этом нет ничего удивительного.Например,когда запущен процесс,занимающий большой объем памяти,ему нужно потреблять много ресурсов памяти.Когда процесс завершается и высвобождается много памяти,файл подкачки,который была выгружена только что, не будет автоматически выгружена в физическую память, если в этом нет необходимости, тогда физическая память системы будет в этот момент достаточно свободна, и в то же время будет использоваться пространство подкачки. появилось только что упомянутое. В этом вопросе не беспокойтесь ни о чем, просто знайте, что происходит.
Наконец, страницы области подкачки будут сначала подкачиваться в физическую память, когда они используются.Если физической памяти недостаточно для хранения этих страниц в это время, они будут немедленно выгружены. достаточно места в виртуальной памяти для хранения Эти страницы, которыми обмениваются, в конечном итоге приведут к таким проблемам, как ложные сбои и исключения службы в Linux.Хотя Linux может восстановиться сам по себе в течение определенного периода времени, восстановленная система в основном непригодна для использования.
Поэтому очень важно разумно планировать и проектировать использование памяти Linux.

Два мониторинга памяти

Для системного администратора Linux очень важно следить за состоянием использования памяти.Мониторинг помогает понять состояние использования памяти, например, является ли использование памяти нормальным, не хватает ли памяти и т. д. Наиболее часто Используемые команды для мониторинга памяти: free , top и т. д., следующий вывод системы free:

[haixigov@WEBServer ~]$ free
                       total       used        free      shared      buffers      cached
Mem:                 16402432    16360492      41940        0         465404      12714880
-/+ buffers/cache:   3180208     13222224
Swap:                8193108        264      8192844

Объясним значение каждой опции в результатах вывода:
first — это первая строка:
total : общий объем физической памяти.
used : Сколько физической памяти было использовано.
free : свободное значение физической памяти.
shared : значение памяти, разделяемое несколькими процессами.
buffers/cached : размер дискового кеша.
Вторая строка Mem : представляет использование физической памяти.
Третья строка ( -/+ buffers/cached ): представляет состояние использования дискового кэша.
Четвертая строка: Swap указывает состояние использования памяти пространства подкачки.
Состояние памяти, выводимое командой free , можно рассматривать с двух точек зрения: с точки зрения ядра и с точки зрения прикладного уровня.

1. Просмотр состояния памяти с точки зрения ядра

То есть ядро ​​можно выделить напрямую без дополнительных операций.Это значение пункта Mem во второй строке вышеприведенного вывода команды free.Видно, что физическая память этой системы 16G, а свободная память составляет всего 41940 КБ, что больше 40 М. Один момент, давайте сделаем такой расчет:
16402432-16360492=41940
на самом деле общая физическая память за вычетом используемой физической памяти, чтобы получить размер свободной физической памяти.Обратите внимание, что объем доступной памяти 41940 здесь не включает буферы и размер памяти кэшированного состояния.
Если вы думаете, что свободной памяти этой системы слишком мало, то вы ошибаетесь.На самом деле ядро ​​полностью контролирует использование памяти.Линукс будет сохранять состояние буферов и кешировать когда память нужна,или когда система постепенно. Память становится свободной памятью состояния для использования системой.

2. Просмотр состояния использования системной памяти с точки зрения прикладного уровня

То есть объем памяти, который могут использовать приложения, работающие в Linux, то есть вывод третьей строки "(-/+ buffers/cached)" команды free. Видно, что память, используемая этим система составляет всего 3180208K, а свободная память достигает 13222224K, продолжайте делать такие вычисления:
41940 + (465404 + 12714880) = 13222224
Из этого уравнения мы можем узнать, что объем физической памяти, доступный приложению, является свободным значением Элемент памяти плюс сумма буферов и кэшированных значений, то есть свободное значение Включает в себя размер буферов и кэшированных элементов
Для приложений доступна память, занимаемая буферами/кешированием, потому что буферы/кеширование улучшают производительность чтения файлов.Когда приложению необходимо использовать память, буферы/кэшированные кэшированные данные будут быстро переработаны для использования приложением.

3. Сходства и различия между буферами и кэшем

В операционной системе Linux, когда приложению необходимо прочитать данные в файле, операционная система сначала выделяет часть памяти, считывает данные с диска в память, а затем распределяет данные приложению. Операционная система сначала выделяет память для приема пользовательских данных, а затем записывает данные из памяти на диск. Однако, если большой объем данных необходимо прочитать с диска в память или записать на диск из памяти, производительность системы при чтении и записи станет очень низкой, потому что независимо от того, читает ли она данные с диска или запись данных на диск, это очень медленный процесс, процесс, который потребляет время и ресурсы, в этом случае Linux вводит буферы и механизмы кэширования.
Как буферы, так и кэширование являются операциями с памятью, которые используются для сохранения файлов и информации об атрибутах файлов, открытых системой, поэтому, когда операционной системе необходимо прочитать некоторые файлы, она сначала выполняет поиск в буферах и кэшированных областях памяти, а затем если они найдены, прочитать их напрямую. Он отправляется в прикладную программу. Если требуемые данные не найдены, они будут считаны с диска. Это механизм кэширования операционной системы. Благодаря кэшированию производительность операционной системы значительно улучшается. Но содержимое буферов и кэшированных буферов различается.
Буферы используются для буферизации блочных устройств, он записывает только метаданные и отслеживает текущие страницы файловой системы, а кеширование используется для буферизации файлов. Говоря более общим языком: буферы в основном используются для хранения того, что находится в каталоге, атрибутов и прав доступа к файлу и так далее. Кэширование напрямую используется для запоминания файлов и программ, которые мы открывали.
Для того, чтобы проверить правильность нашего вывода, можно через vi открыть очень большой файл, чтобы увидеть изменения в кеше, а затем еще раз через vi этот файл, чтобы ощутить сходства и различия между двумя скоростями открытия, и действительно ли скорость второе открытие очевидно Быстрее, чем в первый раз?
Затем выполните следующую команду:

 find /* -name  *.conf

Посмотрите, изменилось ли значение буферов, а затем повторно выполните команду find, чтобы дважды увидеть разницу в скорости отображения. Принцип работы памяти операционной системы Linux во многом разработан в соответствии с потребностями сервера.Например,системный буферный механизм будет кэшировать часто используемые файлы и данные в кэше.Linux всегда стремится кэшировать больше данных и информации,так что когда данные потребуются снова, их можно напрямую извлечь из памяти без длительной работы с диском.Эта конструктивная идея повышает общую производительность системы.

Supongo que te gusta

Origin blog.csdn.net/u011942101/article/details/130154700
Recomendado
Clasificación