Оценка интенсивности использования памяти с помощью команды vmstat

Команда vmstat подсчитывает общий объем активной виртуальной памяти, занятой всеми процессами в системе, а также число страниц физической памяти в списке свободных страниц.

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

Для того чтобы узнать, хватает ли в системе оперативной памяти и нужно ли настроить некоторые параметры ее использования, запустите команду vmstat, задав несколько интервалов сбора данных, а затем проанализируйте значения pi и po в отчете этой команды. Указанные значения задают число страниц, загружаемых из пространства подкачки и выгружаемых в пространство подкачки в секунду, соответственно. Если эти значения в большинстве случаев отличны от нуля, то вполне вероятно, что недостаток оперативной памяти ограничивает производительность системы. Если в отчете команды есть всего несколько ненулевых значений, то их можно проигнорировать, так как подкачка всегда выполняется в системах с виртуальной памятью.
# vmstat 2 10
нити     память             страница          ошибки        cpu
----- ----------- ------------------------ ------------ -----------
 r  b   avm   fre  re  pi  po  fr   sr  cy  in   sy  cs us sy id wa
 1  3 113726   124   0  14   6 151  600   0 521 5533 816 23 13  7 57
 0  3 113643   346   0   2  14 208  690   0 585 2201 866 16  9  2 73
 0  3 113659   135   0   2   2 108  323   0 516 1563 797 25  7  2 66
 0  2 113661   122   0   3   2 120  375   0 527 1622 871 13  7  2 79
 0  3 113662   128   0  10   3 134  432   0 644 1434 948 22  7  4 67
 1  5 113858   238   0  35   1 146  422   0 599 5103 903 40 16  0 44
 0  3 113969   127   0   5  10 153  529   0 565 2006 823 19  8  3 70
 0  3 113983   125   0  33   5 153  424   0 559 2165 921 25  8  4 63
 0  3 113682   121   0  20   9 154  470   0 608 1569 1007 15  8  0 77
 0  4 113701   124   0   3  29 228  635   0 674 1730 1086 18  9  0 73

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

Для того чтобы выяснить, связано ли снижение производительности системы с VMM, проанализируйте значения, указанные в разделах память и страница:

  • память

    Содержит информацию о физической и виртуальной памяти.

    • avm

      В поле avm (активная виртуальная память) указано число активных страниц виртуальной памяти на момент сбора сведений командой vmstat. Стратегия динамического выделения пространства подкачки применяется по умолчанию. В этом случае значение параметра avm может быть больше числа используемых страниц пространства подкачки. В статистике avm не учитываются файловые страницы.

    • fre

      Значение fre отражает среднее число свободных страниц памяти. Страницей называется блок физической памяти размером 4 КБ. В операционной системе создается буфер страниц, называемый списком свободных страниц, который применяется VMM для выделения дополнительной памяти. Минимальное число страниц в этом списке можно задать в параметре minfree команды vmo. Более подробная информация приведена в разделе Настройка алгоритма замены страниц VMM.

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

      По этой причине значение fre не позволяет точно оценить объем физической памяти, доступной процессам. Если какому-то приложению требуется страница памяти, то в первую очередь освобождаются страницы постоянной памяти тех приложений, которые уже завершили свою работу.

      Если значение fre намного больше значения maxfree, то маловероятно, что в системе возникнет перегрузка памяти. Считается, что память перегружена, если все ресурсы системы уходят на выполнение подкачки. В случае перегрузки памяти значение fre всегда очень мало.

  • страница

    Содержит информацию о страничных ошибках и подкачке страниц. В этом разделе указаны средние значения, подсчитанные за интервал сбора данных. Они отражают число событий, происходящих в секунду.

    • re
      Прим.: В настоящий момент это поле не поддерживается.
    • pi

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

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

    • po

      В поле po указывается число страниц, выгружаемых в пространство подкачки в секунду. При освобождении страницы из рабочего сегмента памяти она записывается в пространство подкачки, если эта страница еще ни разу не выгружалась на диск или была изменена. Если к этой странице не поступит повторных обращений, то она останется на устройстве подкачки до тех пор, пока процесс не завершит свою работу или не освободит занимаемую им память. Все последующие обращения к данным, хранящимся в выгруженных страницах, будут приводить к возникновению страничных ошибок, в результате чего система будет загружать необходимые страницы в память по-отдельности. Если процесс завершает работу в обычном режиме, то область пространства подкачки, выделенная этому процессу, освобождается. Если система загружает в память большое число постоянных страниц (файлов), то значение po может возрасти без пропорционального увеличения значения pi. Это не обязательно свидетельствует о перегрузке памяти. В этом случае нужно проанализировать шаблоны доступа к данным, применяемые приложениями.

    • fr

      Указывает число страниц, освобождаемых в секунду алгоритмом замены страниц. Функция замены страниц VMM выбирает страницы из таблицы страниц PFT для пополнения списка свободных страниц на основании определенного критерия. Этот критерий применяется к страницам из сегментов рабочей памяти и сегментов постоянной памяти. Для освобождения страницы не всегда требуется выполнять операции ввода-вывода. Например, если страница постоянной памяти (страница файла) не была изменена, то она не будет записана на диск. Когда не требуется выполнять операции ввода-вывода, на освобождение страницы затрачиваются минимальные ресурсы системы.

    • sr

      Указывает число страниц, просматриваемых алгоритмом замены страниц в секунду. При этом соответствие порогам замены страниц может быть получено после проверки большого числа страниц. Чем больше значение sr по сравнению с fr, тем труднее алгоритму найти подходящие страницы для освобождения.

    • cy

      Указывает число циклов, выполняемых в секунду алгоритмом замены страниц. Этот алгоритм применяется VMM для выбора страниц, которые нужно освободить. Он просматривает флаги обращений к страницам и выбирает те страницы, для которых этот флаг не установлен. Когда вызывается функция добавления страниц, она по кругу просматривает таблицу PTF, проверяя флаги обращений к страницам.

      Значение cy указывает, сколько раз в секунду алгоритм замены страниц просматривает таблицу PTF. Поскольку обычно список свободных страниц заполняется до того, как будет просмотрена вся таблица PTF, а в выводе команды vmstat указываются только целочисленные значения, значение этого параметра чаще всего равно нулю.

Для определения необходимого объема оперативной памяти найдите максимальное значение avm в выводе команды vmstat. Умножьте это значение на 4 КБ и сравните полученный результат с объемом оперативной памяти системы. В идеале значение, вычисленное на основе avm, должно быть меньше объема оперативной памяти. Если это не так, то в системе будет выполняться подкачка. Интенсивность подкачки зависит от разности между этими значениями. Основное назначение виртуальной памяти состоит в расширении адресного пространства системы (часть страниц виртуальной памяти хранится в оперативной памяти, а часть - в пространстве подкачки). Однако если объем виртуальной памяти будет намного превосходить объем физической памяти, то придется выполнять много операций подкачки, что приведет к значительным задержкам в работе системы. Если в системе выполняется подкачка, несмотря на то, что значение avm меньше объема оперативной памяти, то, скорее всего, оперативная память переполнена файловыми страницами. В этом случае число операций подкачки можно уменьшить, изменив значения minperm, maxperm и maxclient. За дополнительной информацией обратитесь к разделу Настройка алгоритма замены страниц VMM.