Главная arrow Операционные системы arrow Оптимизация Windows NT
Как начинался компьютер
Компьютерная революция
Двоичный код
Разработки военных лет
Интегральные микросхемы
Микрокомпьютер
Персоны
Сеть
Язык компьютера
Развитие ПО
Гибкие системы
Средства разработки
Информатика
Вычислительная наука
Операционные системы
Искусственный интеллект
Предыстория
Поиск
Знания и рассуждения
Логика
Робототехника
 

 
Оптимизация Windows NT Печать

Одна из исходных целей разработки Windows NT - ограничение количества параметров настройки, которое было значительным для более ранних систем. При разработке Windows NT использовались адаптивные алгоритмы, позволяющие операционной системе в процессе ее работы самостоятельно определять правильные значения параметров. Использование 32-разрядного адресного пространства позволило снять многие ограничения по использованию памяти и ликвидировать необходимость в ручной настройке параметров памяти.

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

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

Выявление узких мест

Узкое место (bottleneck) - это условие, при котором ограничения одного из аппаратных компонентов не позволяют всей системе в целом работать быстрее. С наибольшей вероятностью узким местом системы становится устройство, обладающее наименьшей производительностью, особенно в условиях его сильной загрузки. В этой ситуации повышение производительности любого другого устройства системы никогда не позволит повысить производительность системы в целом; результатом может явиться только низкая степень загрузки высокопроизводительных устройств.

Таким образом, достаточно иметь одно узкое место в системе, и даже если все остальные ее компоненты будут высокоскоростными, общая производительность системы останется на низком уровне до тех пор, пока узкое место не будет ликвидировано.

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

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

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

Performance Monitor

Performance Monitor представляет собой административную утилиту Windows NT 4.0, предназначенную для мониторинга производительности компьютеров, работающих под управлением Windows NT 4.0 Workstation и Server. Performance Monitor использует набор счетчиков, позволяющих отслеживать такие данные, как количество процессов, ожидающих процессорного времени, количество сетевых пакетов, переданных в течение секунды, процент загруженности процессора и т. д. Все эти данные можно наблюдать в реальном времени, регистрировать их в журнале для последующего использования, применять в диаграммах и отчетах, а также устанавливать системные извещения, уведомляющие о достижении тем или иным счетчиком его порогового значения.

Task Manager

Task Manager представляет собой инструментальное средство, интегрированное в состав операционных систем Windows NT 4.0 Workstation и Server. Этот инструмент позволяет наблюдать активные приложения и процессы, работающие на компьютере, а также запускать и останавливать их.

Task Manager обладает следующими возможностями:

  • Отображает работающие приложения и процессы, включая 16-разрядные.
  • Отображает наиболее употребительные счетчики производительности процессов, включая процессорное время (processor time), объем основной памяти (main memory size), объем виртуальной памяти (vitrual memory size), количество прерываний page fault, базовый приоритет (base priority) и количество нитей (number of threads).
  • Отображает линейные графики и значения мгновенных счетчиков, отражающих потребление процессорного времени и памяти компьютера.
  • Позволяет изменить класс базового приоритета процесса и активизировать отладчик (если он имеется).

Выявление узких мест, связанных с работой памяти (оптимизация работы памяти)

Windows NT 4.0 имеет систему виртуальной памяти, объединяющую физическую память, кэш файловой системы и жесткий диск в гибкую систему. Система позволяет хранить код и данные программ на диске, а затем перемещать их в физическую память по мере надобности. Код и данные, которые в данный момент не используются, могут быть выгружены на диск. Таким образом, процессы получают дополнительные преимущества при использовании комбинации дискового пространства и физической памяти. Если на компьютере ощущается нехватка физической памяти, это приводит к частым операциям записи данных на диск и их повторного извлечения. Это процесс протекает медленно, интенсивно потребляет ресурсы и может стать одним из узких мест системы.

Наилучшим индикатором, указывающим на существование узкого места, связанного с памятью, является частота возникновения аппаратных прерываний типа "ошибка страницы" (hard page fault). Аппаратные прерывания типа "ошибка страницы" возникают тогда, когда данные, необходимые программе, не могут быть найдены в ее рабочем наборе (working set), под которым подразумевается физическая память, видимая для программы, или где-либо еще в физической памяти. В этой ситуации данные должны извлекаться с жесткого диска. Частота возникновения аппаратных прерываний типа "ошибка страницы", устойчиво сохраняющаяся на одном уровне (более 5 раз в секунду), свидетельствует о существовании узкого места системы, связанного с работой памяти. Частоту возникновения аппаратных прерываний типа "ошибка страницы", а также другие показатели производительности работы с памятью следует ежедневно отслеживать и регистрировать в журнале.

Windows NT 4.0 использует плоскую 32-разрядную линейную модель памяти. Это означает, что каждая программа может просматривать 32-разрядное адресное пространство, т. е. способна адресовать 4 Gb виртуальной памяти. Верхняя половина пространства виртуальных адресов памяти зарезервирована для кода операционной системы и данных, которые становятся видимыми процессам, когда они работают в привилегированном режиме. Нижняя половина пространства виртуальных адресов доступна программе, когда она работает в режиме пользователя, а также вызываемым этой программой системным сервисам, работающим в непривилегированном режиме.

Диспетчер виртуальной памяти Windows NT (Windows NT Virtual Memory Manager, VMM) управляет процессами выделения памяти, ее резервирования, освобождения и подкачки. В своей работе этот компонент реализует сложную стратегию учета требований к коду и данным процесса, чтобы минимизировать доступ к диску.

Код и данные в физической памяти подразделяются на единицы, называемые страницами (pages). Размер страницы памяти варьируется для различных процессорных платформ. Размер страницы для таких процессоров, как MIPS, Intel и PowerPC составляет 4096 б. DEC Alpha использует страницы размером 8192 б.

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

Прерывание типа "ошибка страницы" (page fault) возникает в том случае, когда запрошенная программой страница кода или данных не находится в ее рабочем наборе (working set), который представляет собой область физической памяти, видимой для данной программы.

Прерывания типа "ошибка страницы" бывают двух типов:

  • Аппаратные прерывания типа "ошибка страницы" возникают в ситуации, когда запрошенная страница памяти должна быть извлечена с диска
  • Программные прерывания типа "ошибка страницы" возникают, когда запрошенная страница найдена где-либо в другой области физической памяти, за пределами рабочего набора программы.

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

Когда процесс использует код или данные, находящиеся в физической памяти, система резервирует место для этой страницы в файле подкачки Pagefile.sys на диске. Это делается с расчетом на тот случай, если данные потребуется выгрузить на диск. Файл Pagefile.sys представляет собой зарезервированный блок дискового пространства, который используется для выгрузки страниц, помеченных как "грязные" при необходимости освобождения физической памяти. Этот файл может быть как непрерывным, так и фрагментированным. Размер этого файла ограничивает объем данных, которые могут храниться в памяти. По умолчанию, размер файла подкачки устанавливается равным объему физической памяти плюс 12 Мб, однако пользователь имеет возможность изменить его размер по своему усмотрению. Проблема нехватки виртуальной памяти часто может быть решена за счет увеличения размера файла подкачки.

В системах Windows NT 4.0 Workstation и Server объекты, создаваемые и используемые приложениями и операционной системой, хранятся в так называемых пулах памяти (memory pools). Доступ к этим пулам может быть получен только в привилегированном режиме работы процессора, в котором работают компоненты операционной системы. Поэтому для того, чтобы объекты, хранящиеся в пулах, стали видимы нитям приложений, эти нити должны переключиться в привилегированный режим.

Перемещаемый или нерезидентный пул (paged pool) содержит объекты, которые могут быть при необходимости выгружены на диск.

Неперемещаемый или резидентный пул (nonpaged pool) содержит объекты, которые должны постоянно находиться в памяти. В частности, к такого рода объектам относятся структуры данных, используемые процедурами обработки прерывании, а также структуры, используемые для предотвращения конфликтов в мультипроцессорных системах.

Исходный размер пулов определяется объемом физической памяти, доступной Windows NT. Впоследствии размер пула устанавливается динамически и в зависимости от работающих в системе приложений изменяется в широком диапазоне.

Вся виртуальная память в Windows NT подразделяется на классы: зарезервированную (reserved), выделенную (committed) и доступную (available).

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

Память выделена (committed), если Диспетчер виртуальной памяти резервирует для нее место в файле Pagefile.sys на тот случай, когда потребуется выгрузить содержимое памяти на диск. Объем выделенной памяти процесса характеризует фактически потребляемый им объем памяти.

Выделенная память ограничивается размером файла подкачки. Предельный объем выделенной памяти в системе (commit limit) определяется тем, какой объем памяти можно выделить процессам без увеличения размеров файла подкачки. Если в системе имеется достаточный объем дискового пространства, то файл подкачки может быть увеличен, и тем самым будет расширен предельный объем выделенной памяти.

Вся память, которая не является ни выделенной, ни зарезервированной, является доступной (available). В ее число входит свободная память, обнуленная память (освобожденная и заполненная нулями), а также память, находящаяся в списке ожидания (standby list), которая была удалена из рабочего набора процесса, но может быть затребована вновь.

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

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

При исследовании проблем, вызванных нехваткой памяти, полезно наблюдать файл подкачки Pagefile.sy В системах с относительно малым объемом памяти повышение потребности в памяти вызывает увеличение размера файла Pagefile.sys.

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

Если в системе возрастает интенсивность аппаратных прерываний page fault, следует изучить использование памяти приложениями с помощью утилиты Performance Monitor. В первую очередь необходимо выявить различия между общей нехваткой памяти, которая влияет на все приложения, и нехваткой памяти, которая вызвана некорректной работой какого-либо одного приложения.