Изменения внутреннего устройства ядра Windows Server 2008 - Управление памятью

ОГЛАВЛЕНИЕ

Управление памятью

Эксперимент: обзор объемных дисковых операций ввода-вывода

В системе Windows Server 2008 для просмотра объемных файловых операций ввода-вывода предусмотрен такой инструмент текущего контроля файловой системы, как TechNet Sysinternals Process Monitor (technet..microsoft.com/sysinternals/bb896645.aspx).

Существует несколько способов работы с операциями ввода-вывода большого объема. Если имеется вторая система, работающая под управлением пакета обновлений 1 для Windows Vista или под управлением Windows Server 2008, на сервере можно запустить Process Monitor и следить за копиями файлов во второй системе. Также распространенным вариантом работы с операциями объемного ввода-вывода для файла подкачки является выполнение программы, интенсивно использующей память, которая вынуждает диспетчер памяти записывать страницы в файл подкачки.

На рис. A показан Process Monitor после выполнения в среде Windows XP программы с большой потребностью в памяти. В меню параметров Process Monitor установлен флажок «Включить расширенный вывод» и установлен фильтр для отображения только операций записи в файл подкачки, pagefile.sys. В столбце «Подробные сведения» видно, что выполняются операции записи объемом 64 КБ.


Рис. А 

При выполнении этих же действий в среде Windows Server 2008, скорее всего, сложится ситуация, похожая на ту, которая показана на рис. B и где видно, что большинство операций записи имеют объем приблизительно 1 Мбайт.


Рис. Б 

В диспетчер памяти системы Windows Server 2008 внесено несколько усовершенствований для повышения производительности. Например, при доставке данных из файла подкачки или выполнении упреждающих операций ввода-вывода с отображенными файлами генерируются дисковые операции ввода-вывода как меньшего, так и большего объема. Выполнение объемного файлового ввода-вывода облегчается благодаря изменениям в системе ввода-вывода, освободимшим ее от ограничения в 64 КБ на объем операций ввода-вывода, существовавшего начиная с первого выпуска Windows NT®.

Кроме этого, важно отметить, что при упреждающем чтении из отображенных файлов, выполняемом диспетчером кэша, объем данных в системе Windows Server 2008, как правило, в два раза больше, чем в системе Windows Server 2003, и эти операции попадают напрямую в список ожидания (код системы и кэш данных). Такое поведение возникает вместо требования к диспетчеру кэша отображать виртуальную память и считывать данные в рабочий набор системы (память, приписанная системе диспетчером памяти), что может вызвать не обусловленное необходимостью вытеснение из рабочего набора используемого кода или данных.

Диспетчер памяти выполняет объемные операции ввода-вывода также и при записи данных в файл подкачки. Хотя Windows Server 2003 часто выполняет операции записи даже меньшего, чем 64 КБ, объема, в среде Windows Server 2008 диспетчер памяти обычно генерирует операции записи объемом 1 МБ.

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

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