Операционные системы - статьи

Выделенная виртуальная память и файл подкачки


Счетчики Commited Bytes, Commit Limit и %Commited Bytes In Use - очень удобный инструментарий для определения интенсивности использования памяти в Windows NT Workstation. Однако, прежде чем говорить о них, необходимо разобраться с принципами формирования файла подкачки.

В документации Microsoft указано, что минимальный размер этого файла должен быть равен объему физической памяти плюс еще примерно 12 Мбайт. Однако это значение может быть оптимизировано, исходя из реальных требований системы. О максимальном же размере беспокоиться нечего, ибо во всех исследованных мною версиях Windows NT, включая NT 4.0 с установленным Service Pack 6 (SP6), операционная система игнорировала любое задаваемое значение. Она увеличивает файл подкачки настолько, насколько это необходимо для удовлетворения потребностей в памяти, вплоть до исчерпания места на диске. Чтобы проверить, как Windows NT реагирует на возрастающий дефицит памяти, во вкладке Performance значка System на Control Panel введем значение максимального размера файла подкачки. Затем возьмем из каталога \perftool\meastool пакета Windows NT Resource Kit файл leakyapp.exe. Это созданное программистами Microsoft приложение My Leaky App, предназначенное для тестирования поведения системы в процессе непрекращающегося выделения памяти. После запуска этой программы размер занимаемой ею системной памяти будет постоянно расти.

ЭКРАН 2. Приложение MyLeakyApp отображает использование файла подкачки.

Запустим приложение и, для инициации тестового процесса, нажмем кнопку Start Leaking. Приложение будет непрерывно отображать уровень использования файла подкачки, позволяя, как показано на Экране 2, останавливать и снова запускать процедуру запроса на дополнительную память. Если программа будет работать достаточно долго, размер файла подкачки начнет увеличиваться сверх предельного уровня, указанного во вкладке Performance. После превышения файлом подкачки установленного минимального значения для его возврата к исходной величине необходимо перезагрузить компьютер.


Когда Windows NT начнет, в целях удовлетворения растущих запросов на память, увеличивать файл подкачки, производительность резко упадет, особенно если файл размещен на медленном или сильно фрагментированном диске. С помощью счетчиков Committed Bytes и Commit Limit можно фиксировать рост потребления памяти, что провоцирует резкий рост файла подкачки. Упрощенно говоря, Windows NT записывает в Commit Limit значение, равное сумме объема установленной на компьютере физической памяти и размера файла подкачки, заданного во вкладке Performance. Значение счетчика Committed Bytes равняется общему размеру выделенной работающему процессу памяти. По мере роста Committed Bytes происходит приближение к предельному значению Commit Limit, достичь которого можно в случае выполнения следующих один за другим запросов на память со стороны одного или нескольких приложений. Следя за счетчиком %Committed Bytes In Use, можно увидеть, что при достижении им величины 100% система начнет увеличивать размеры файла подкачки, пытаясь удовлетворить растущие запросы на память.

Чтобы система могла справиться с этими запросами, увеличение файла подкачки будет производиться до тех пор, пока позволяет размер дискового пространства. При этом возможно появление показанного на Экране 3 сообщения Out of Virtual Memory. Если это произойдет, следует запустить Performance Monitor. Для всех работающих приложений нужно выбрать объект Process, счетчики Working Set и Pagefile Bytes. Довольно скоро выяснится, какое приложение отвечает за столь резкий рост потребления памяти. Следует помнить, что с помощью счетчика %Committed Bytes In Use можно определить оптимальный размер файла подкачки. Если постоянно следить за показаниями этого счетчика, то всегда можно подогнать минимальный размер файла под требования имеющегося на компьютере набора приложений.



ЭКРАН 3. Сообщение Out Of Virtual Memory


Содержание раздела