Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ргз ОС.docx
Скачиваний:
3
Добавлен:
22.09.2019
Размер:
57.97 Кб
Скачать

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

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

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

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

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

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

Устройства ввода – вывода

Большинство серверных приложений Windows, включая IIS, SQL Server® и Exchange Server, для минимизации переключений между несколькими потоками выполнения при выполнении операций ввода-вывода опираются на интерфейс API синхронизации Windows, называемый портом завершения. Для этого сначала устанавливается соответствие между уведомлениями о прибытии новых запросов, например, клиентских подключений веб-сервера, и портом завершения и назначается пул потоков для ожидания уведомлений. По прибытии запроса Windows предусматривает поток, который затем, как правило, выполняет другие операции ввода-вывода, такие как чтение веб-страницы с диска и отправка ее клиенту для выполнения запроса.

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

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

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