Windows - статьи

Память


Замедление работы системы NT Server нередко объясняется нехваткой памяти. Причем иногда кажется, что подлинная причина снижения быстродействия совсем в другом: например, в слишком высоких нагрузках на ЦП или в недостаточной эффективности операций ввода/вывода диска. В первом приближении самый надежный признак проблем в подсистеме памяти – это стабильно высокий показатель отсутствия страниц памяти [hard page faults] (скажем, более пяти ситуаций отсутствия страницы в секунду). Ситуация отсутствия страницы возникает в том случае, когда программа не в состоянии обнаружить затребованные данные в физической памяти и потому вынуждена считывать их с диска. Чтобы определить, испытывает ли система недостаток оперативной памяти, можно воспользоваться утилитой Performance Monitor. Чтобы узнать, каково состояние подсистемы памяти, нужно проанализировать значения следующих счетчиков.

Memory: Pages/sec. Счетчик регистрирует количество запрошенных страниц, которые не представлены непосредственно в ОЗУ и потому считываются с жесткого диска или записываются на диск, чтобы освободить пространство ОЗУ для других страниц. Если данный показатель высок при обычных нагрузках на систему, нужно позаботиться об увеличении размера оперативной памяти. Если же значение счетчика Memory: Pages/sec возрастает, тогда как показатель счетчика Memory: Available Bytes приближается к нижней границе, 4 Мбайт, предусмотренной для системы NT Server, а диски, содержащие файлы pagefile.sys, активно участвуют в обменах (т. е. их показатели %Disk Time, Disk Bytes/sec и Average Disk Queue Length возрастают), можно говорить о перегруженности оперативной памяти. Если же счетчик Memory: Available Bytes не фиксирует сокращения свободной памяти, значит, с подсистемой памяти все в порядке. В этом случае нужно выяснить, какая прикладная программа выполняет большое количество операций чтения и записи на диск (и убедитесь, что соответствующие данные не представлены в кэш-памяти). Для этого нужно с помощью утилиты Perfor-mance Monitor проконтролировать объекты Physical Disk и Cache.


На основании значений счетчиков объекта Cache можно судить о том, не малый ли объем кэш-памяти влияет на производительность всей системы.

Memory: Available Bytes. Данный счетчик регистрирует объем доступной программам физической памяти. Как правило, он невелик, поскольку диспетчер Disk Cache Manager системы NT использует почти всю память для кэширования данных, но возвращает ее при поступлении запросов на выделение памяти. Однако если значения счетчика для сервера стабильно ниже порога 4 Мбайт, это свидетельствует о слишком активном страничном обмене.

Memory: Committed Bytes. Счетчик указывает на объем виртуальной памяти, которую система выделяет для хранения данных в физической памяти или в файле подкачки. Если значение Committed Bytes превышает объем физической памяти, вероятно, необходимо увеличить емкость ОЗУ.

Memory: Pool Nonpaged Bytes. Счетчик отражает объем памяти в невыгружаемом пуле, выделяемый для выполнения задач компонентами ОС. Если значение счетчика имеет явную тенденцию к повышению, но соответствующего увеличения нагрузки сервера не наблюдается, это может означать, что выполнение одного из процессов приводит к утечке памяти. Утечка памяти (memory leak) возникает, когда вследствие ошибки программа не высвобождает избыточные ресурсы памяти. Со временем такое непроизводительное расходование памяти может привести к сбою системы, когда ресурсы всей доступной памяти будут исчерпаны (включая физическую память и дисковое пространство, выделенное для размещения файлов подкачки).

Paging File: %Usage. Счетчик показывает, какую долю (в процентах) от максимально возможного размера файла подкачки система использует фактически. Если этот показатель достигает отметки 80%, объем файла подкачки нужно увеличить.

В NT Server предусмотрены средства оптимизации ресурсов памяти системы. Их можно задействовать следующим образом. В панели управления Control Panel нужно перейти к модулю Network, выбрать вкладку Services, а затем элемент Server. При щелчке на элементе меню Properties на экране появится диалоговое окно, в котором предлагается четыре варианта оптимизации (см.


Экран 3): Minimize Memory Used (минимизировать использование памяти), Balance (равномерное использование ресурсов), Maximize Throughput for File Sharing (максимально увеличить пропускную способность для совместно используемых файлов) и Maximize Throughput for Network Applications (максимально увеличить пропускную способность для сетевых приложений). Можно изменять значение еще одного параметра – размера подсистемы виртуальной памяти (проще говоря, файла подкачки). Для этого нужно выбрать вкладку Performance диалогового окна System Properties.



Экран 3. Выбор оптимизации работы сервера.

С точки зрения администратора, в ведении которого находится сервер, обслуживающий множество клиентов, из названных выше вариантов оптимизации ресурсов памяти особого внимания заслуживают два: Maximize Throughput for File Sharing и Maximize Throughput for Network Applications. При выборе варианта Maximize Throughput for File Sharing NT Server выделяет максимальный объем памяти для кэша файловой системы (этот процесс называется dynamic disk buffer allocation). Такая конфигурация особенно эффективна в тех случаях, когда компьютер NT Server используется в качестве файлового сервера. Если вся память выделяется под буферы файловой системы, эффективность дисковых и сетевых операций ввода/вывода, как правило, повышается. С увеличением объема оперативной памяти, обеспечивающей функционирование буферов диска, возрастает вероятность того, что NT Server будет обрабатывать запросы на выполнение операций ввода/вывода не внутри относительно «неповоротливой» файловой системы на физическом диске, а в отличающейся высоким быстродействием кэш-памяти в ОЗУ.

При выборе другого варианта оптимизации – Maximize Throughput for Net-work Applications – NT Server выделяет для кэша файловой системы меньший объем памяти, и прикладным программам достается, соответственно, львиная доля ресурсов ОЗУ. Этот вариант оптимизирует память сервера для выполнения распределенных приложений, предусматривающих кэширование в памяти (Memory caching).


Прикладные программы, например Mic- rosoft SQL Server или Exchange Server, можно настроить таким образом, что они будут использовать заданный объем оперативной памяти для дисковых буферов ввода/вывода и кэша БД.

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

Когда производительность системы сдерживается нехваткой памяти, проблему можно решить, увеличив размер файла подкачки или распределив этот файл по нескольким дискам или контроллерам. Одновременно на сервере NT может содержаться до 16 файлов подкачки; при этом в любой момент можно осуществлять чтение и запись данных сразу в несколько файлов. Если объем дискового пространства загрузочного тома ограничен, файл подкачки можно переместить на другой том, что обеспечит выигрыш в производительности. Тем, кто придает первостепенное значение надежности системы, можно порекомендовать такую схему: небольшой файл подкачки размещается на загрузочном томе, а файл более внушительных размеров – на другом томе большей емкости. Есть и другой вариант: файл подкачки размещается на жестком диске (или на нескольких дисках), не содержащем системных файлов NT, либо на специальном томе FAT, который не входит в дисковый массив RAID.

Еще одна рекомендация. Требовательные к ресурсам памяти приложения лучше распределять по нескольким машинам. Внеся соответствующие изменения в системный реестр, можно добиться того, что сервер NT будет работать с кэшем второго уровня емкостью более 256 Кбайт. Для этого нужно запустить редактор regedit.exe, пе-рейти к разделу HKEY_LOСAL_MACHINE\SYSTEM\ CurrentControlSet\Control\ Session Menager\Memory Management и дважды щелкнуть на параметре SecondLevelDataCache. Далее следует выбрать десятичную систему исчисления и ввести значение объема кэш-памяти второго уровня (если емкость составляет 512 Кбайт, нужно ввести число 512). Теперь нужно щелкнуть OK, закрыть редактор реестра и перезапустить систему. Кроме того, советую отключить или удалить неиспользуемые службы, драйверы устройств, а также сетевые протоколы.


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