Самоучитель
системного администратора

11.4. Оптимизация настроек компьютера

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

Однако во многих случаях причиной неудовлетворительной работы является какое-либо узкое место в конфигурации системы ("бутылочное горлышко", Bottleneck). И "расшивка" его может оказаться экономически существенно более оправданной, чем покупка нового сервера. Кроме того, правильная конфигурация сможет сэкономить существенные средства.

Что такое "медленно"

Удовлетворенность производительностью системы — субъективная оценка. Если для пользовательского интерфейса время реакции не должно составлять более 0,6 сек (например, после щелчка мышью по команде диалоговое окно с параметрами должно появиться за указанный промежуток), то длительность обработки данных зависит от многих параметров: объема данных, сложности вычислений и т. п. Так, в зависимости от условий вычисление может считаться быстрым, если оно завершится за 5 минут, а другое — если быстрее чем за 8 часов. Например, для квартального закрытия склада можно выделить всю ночь, но для открытия типовых форм кадрового учета не должно затрачиваться более нескольких секунд.

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

Основные узкие места системы

    Примечание

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

Узким местом производительности информационной системы обычно становится один из следующих компонентов:

  • процессор;
  • оперативная память;
  • дисковая подсистема;
  • сетевой адаптер (сетевая инфраструктура).

В идеальном случае каждый компонент не должен "простаивать", но и не сдерживать работу других частей. Для того чтобы проанализировать показатели использования того или иного компонента системы, используются счетчики производительности.

В счетчиках постоянно обновляются показатели. Это обновление можно отключить, но особого смысла такая операция не имеет: на производительность системы счетчики практически не оказывают влияния. В операционных системах на базе ядра Windows NT для отображения состояния счетчиков служит программа Производительность (Performance Monitor). Для *nix-операционных систем можно найти большое количество утилит, но наиболее популярными являются: top (отображает загрузку процессора, использование памяти и данные по наиболее загруженным процессам), iostat (показывает загрузку процессора и параметры использования дисков), nmon (отображает основные параметры нагрузки и позволяет записывать их с заданной периодичностью в файл с последующей обработкой и формированием отчетов) и др.

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

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

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

Таблица 11.2.
Показатели производительности

Параметр

Состояние компьютера

оптимальное

перегруженное

Процент загрузки процессора

< 40%

> 80-90%

Средняя длина очереди заданий процессора

< 2

>4

Процент загрузки процессора обслуживанием системы/процент времени ожидания процессором

< 4%

> 10%

Обмен страниц памяти в секунду

< 500

> 1000

Среднее время операции записи-чтения на логический диск

< 15 мсек

> 25 мсек

Средняя длина очереди операций записи-чтения на диск

< 0,2

> 0,6

Процент использования полосы пропускания сетевого адаптера

< 40%

> 60%

Очередь на передачу пакетов в сетевом адаптере

0 пакетов

> 2 пакетов

Оценка производительности процессора

    Примечание

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

В современные серверы, как правило, устанавливают не по одному многоядерному процессору. И в условиях "среднего" предприятия увидеть загрузку процессоров компьютера, близкую к 100%, маловероятно. При этом именно процессор может быть узким местом.

Связано это с тем, что показатель производительности подсчитывается усредненно по всем процессорам, а многие расчеты в приложениях не могут быть распараллелены: сначала нужно вычислить одну величину, потом она будет использована в других расчетах и т. д. Поэтому если какой-либо прикладной процесс (например, процесс сервера базы данных) выполняется в одну нить, то соответствующая загрузка процессора будет показываться как 100%/(число процессоров) и распределится (в программе Производительность) между всеми ядрами/процессорами.

Поэтому более информативным будет анализ непроизводительных расходов процессора. В случае Windows-систем это будет счетчик Processor\% Privileged Time, для Linux-компьютеров нужно оценивать время, затрачиваемое процессором на системные операции и ожидание готовности других устройств. На рис. 11.16 приведен листинг утилиты iostat. В строке avg-cpu показаны характеристики загрузки процессора: параметр %system отображает загрузку системными операциями, %iowait — время, затрачиваемое на ожидание завершения операций ввода-вывода на диски.

Рис. 11.16.
Листинг утилиты iostat

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

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

System\Processor Queue Length (all instances).

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

    Когда процессор не успевает выполнять задания от различных процессов, то эти задания становятся в очередь, процент полезного использования процессора снижается (основное время тратится на переключения между заданиями), а система крайне медленно реагирует на команды.

    Большая длина очереди может быть обусловлена не только большим количеством одновременно выполняющихся заданий, но и неисправностью какого-либо устройства, например, сетевого адаптера, генерирующего большое количество прерываний в единицу времени. Для локализации этой причины следует провести анализ параметра Processor\Interrupts/sec (см. далее).

Processor\Interrupts/sec.
    Счетчик показывает количество запросов к процессору на обработку. Максимальное число прерываний, которое может обработать процессор, зависит от его типа. Для разных процессоров эта величина колеблется от 500 до 2000 прерываний в секунду.

    Поскольку высокое значение данного счетчика может быть следствием неисправности оборудования, следует выяснить, что является источником повышенного количества запросов в единицу времени. Для этого можно задействовать счетчики объекта Thread, например %Processor Time. Эти счетчики отображают в том числе состояние каждого потока, который запускается отдельным процессом. Переключив отображение монитора системы на гистограмму, вы можете увидеть процесс, который монополизирует ресурсы компьютера.

      Примечание

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

Оценка использования оперативной памяти

Установка дополнительной памяти является часто самым простым способом повышения быстродействия системы. Поэтому важно уметь оценить, действительно ли компьютер нуждается в таком обновлении.

Объем свободной памяти.

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

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

Memory\Pages/sec.

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

      Совет

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

Оценка дисковой подсистемы

Дисковая подсистема может существенно снижать производительность компьютера, поскольку она является самым медленным компонентом.

Интегральным показателем оптимальности используемой дисковой подсистемы является длина очереди заданий.

LogicalDisk (PhysicalDisk)\Avg. Disk Queue Length.

    Счетчик показывает среднюю очередь заданий (операций записи или чтения) для соответствующего диска. Интерпретация данного параметра достаточно проста: если существует очередь на дисковые операции, то это означает, что диски не справляются с записью/чтением информации. Поскольку дисковая подсистема обычно является самым медленным компонентом, а данный счетчик отображает среднее значение, то уже само наличие очереди (значение счетчика, большее примерно 0,5) существенно замедляет скорость вычислений. Поэтому оптимально добиваться минимально возможных значений для данного счетчика.

% Disk Time.

    Счетчик показывает процент времени, в течение которого система "занята" операциями ввода/вывода. Значения счетчика, достигающие 50%, свидетельствуют о необходимости использования более быстрой дисковой подсистемы.

Определение источника дисковой активности.

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

    Определить наиболее активные процессы и узнать, в какие файлы пишутся (читаются) данные, поможет программа Монитор ресурсов. Администратор может отсортировать процессы по желаемому типу активности, отфильтровать информацию и т. д. (рис. 11.17).

Рис. 11.17.
Окно программы Монитор ресурсов с отфильтрованными данными дисковой активности

Для Linux-систем аналогичной функциональностью обладает, например, утилита iotop, позволяющая вывести на экран названия процессов с наибольшей дисковой активностью и отобразить соответствующие файлы

    Примечание

    Программа Монитор ресурсов доступна только для ОС Windows Vista/Windows 7/2008. Определить причины дисковой активности в предыдущих версиях (например, в Windows XP/2003) значительно труднее. Можно порекомендовать воспользоваться в этом случае утилитами от Sysinternals (FileMonitor, ProcessMonitor) или другими аналогичными средствами.

Показатели производительности дисков.

    Нелишне убедиться, что фактическая производительность дисковой подсистемы соответствует характеристикам оборудования. Диски различных вендоров отличаются по своим параметрам весьма незначительно. Так, для дисков с частотой вращения 7200 об/мин среднее время записи-чтения (без учета кэширования) составляет не более 15 мсек. Оно должно быть соответственно меньше с учетом объединения дисков в RAID-массив.

Существует несколько утилит, предназначенных для проверки параметров скорости работы устройств хранения, но наиболее известным и практически профессиональным инструментом является lometer (http://sourceforge.net/projects/iometer/ files/) — пакет, первоначально разработанный Intel и впоследствии переданный сообществу open-source.

Программа позволяет получить реальные параметры работы устройств хранения, однако для получения результата необходимо сначала внимательно ознакомиться с документацией (на что часто не хватает желания у системных администраторов). Причина в том, что в настройках программы необходимо указать большое количество параметров, влияющих на оценку производительности. Например, размер блоков хранения, процент операций записи-чтения и т. д. Причем эти значения будут различны для отличающихся вариантов использования дисков: одни значения необходимо указать для проверки дисков, предназначенных для работы с базами данных, другие — для файловых серверов и т. п. Для упрощения можно использовать вариант параметров, изначально разработанный Intel, который можно загрузить со страницы http://docs.aboutnetapp.ru/iometer2.icf. Скопированный с этой страницы текст нужно сохранить в файле и импортировать эти настройки в конфигурацию программы.

Комплект поставки включает два файла. Dinamo используется для управления тестированием на нескольких устройствах, iometer — файл, который следует запустить для проверки. После запуска следует импортировать файл конфигурации, как описано ранее, не забыть ограничить размер файла, который создается для тестирования в корне диска (заменить значение Maximum Disk Size на допустимое число секторов1 в файле теста, иначе файл будет создан на всем свободном пространстве диска) и выбрать на вкладке Access Specifications необходимые тесты. По умолчанию в программе создается такое число процессов тестирования (worker), которое соответствует числу процессоров в системе. Но их количество можно изменить, как и сменить количество одновременных потоков ввода-вывода (# of Outstanding IO). Простые приложения обычно используют 1—4 потока ввода-вывода, приложения уровня предприятия, например Oracle, могут создавать и до 256 потоков. Из других параметров, которые можно настроить, отметим Ramp Up Time (время на разогрев диска перед началом теста) и Run Time — максимальное время тестирования (если вы хотите завершить тестирование по истечении заданного периода времени).

После запуска теста на вкладке Results Display можно наблюдать за получаемыми значениями (следует только назначить моменты обновления данных — рис. 11.18). Обратите внимание, что набор отображаемых на диаграмме параметров допускает изменения по желанию оператора. Итоговые значения тестирования будут сохранены в csv-файле, который можно будет впоследствии проанализировать.

Рис. 11.18.
Параметры диска, отображаемые утилитой iometer

Пути оптимизации дисковой подсистемы

Какие могут быть варианты решения проблемы при обнаружении узкого места в дисковой подсистеме?

Самый эффективный путь — добавление жестких дисков в соответствующий RAID-массив, на базе которого создан логический диск. Чем больше жестких дисков объединены в логический, тем более производительным он будет.

Во-вторых, если позволяет устройство хранения, выберите оптимальные для используемого типа данных варианты RAID-массивов. Не забывайте, что самый популярный тип массива — RAID5 — не является самым быстрым.

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

Убедитесь, что в системе установлено достаточно оперативной памяти. Увеличьте ее при нехватке.

Обратите внимание, чтобы на дисках было достаточно свободного места (не менее 20% их объема). Проведите дефрагментацию дисков, уменьшите или исключите использование сжатия и шифрования файлов на тех дисках, на которых выявлена проблема низкой производительности. Для NTFS-дисков можно отключить запись имен файлов в формате 8.3 и запись времени последнего доступа к файлу (для чего в ветви HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Filesystem надо установить в значение 1 параметры NtfsDisable8dot3NameCreation и NtfsDisableLastAccess соответственно).

Если эти операции не приведут к успеху, следует искать возможность приобрести более быструю дисковую подсистему.

    Примечание

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

Оценка работы сетевого адаптера

Для оценки работы сетевого адаптера используется тот же подход, что и для подсистемы ввода-вывода системы хранения: использование полосы пропускания должно быть ниже предела скорости передачи и очереди на отправку пакетов не должно быть.

Обычно считается допустимым среднее значение очереди, равное 1.

Что касается использования полосы пропускания, то для сети, выполненной по стандарту Ethernet, — а это практически все локальные компьютерные сети,— величина утилизации сети равная 60% уже считается критической; на практике следует внимательно проанализировать работу сети при достижении порога утилизации порядка 30—40%. Администраторы обычно используют для оценки состояния сети различные SNMP- и RMON-мониторы, которые имеют возможность автоматически высылать предупреждения при достижении установленных пороговых значений.

    Примечание

    Счетчики отображают объемы передаваемой и принимаемой информации в байтах, тогда как скорость сети указывается в битах (100 Мбит/сек, 1 Гбит/сек и т. д.). Поэтому показания счетчика надо умножить на 8, чтобы сравнивать с максимально возможной скоростью передачи данных.

С помощью счетчиков так же можно выяснить, какое приложение генерирует максимальный трафик. Хотя на практике это имеет несущественное значение: обычно администраторам это приложение известно.

Пути оптимизации системы передачи данных

Улучшить работу сетевого адаптера крайне сложно. Можно порекомендовать обновить его драйвер. Кроме того, иногда бывает, что параметры подключения, которые по умолчанию выставляются в режим авто, устанавливаются не на максимальную производительность. Например, вместо полного дуплекса будет использован режим полудуплекса или даже установлена более низкая скорость работы. Выяснить такие "отклонения" можно, если посмотреть состояние сетевого порта коммутатора, к которому подключен данный сетевой адаптер. Если состояние порта не оптимальное, то необходимо вручную сменить настройку и зафиксировать ее в требуемом значении.

Если настройки оптимальны и большой трафик свойственен нормальным условиям работы системы, то необходимо либо добавить еще один сетевой адаптер, либо перейти на сеть с большей скоростью передачи данных.

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

    Примечание

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

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

Некоторые советы по анализу показаний производительности

Чтобы снятие показаний счетчиков меньше сказывалось на загрузке проверяемой системы, лучше всего эту операцию делать удаленно, например, подключая задачу Производительность к удаленному серверу. Если вы хотите, чтобы работа самой программы при отображении данных вносила минимальные искажения в параметры производительности, то запускайте ее с низким приоритетом (start /low для Windows-систем).

Для объективной оценки производительности системы необходимо использовать усредненные за некоторый период показания счетчиков. Чем за больший период времени будут сняты показания, тем более объективные выводы оценки производительности системы можно будет выполнить. Например, кратковременная загрузка процессора, близкая к 100%, при выполнении расчета вполне допустима. Но если процессор загружен более 70% в течение длительного периода времени, то этот факт свидетельствует о необходимости расшивки данного узкого места.

Как правило, программы мониторинга производительности имеют возможность записи показаний счетчиков в файл в реальном режиме времени. Администратору необходимо только задать периодичность снятия показаний и указать длительность записи. В качестве примера на рис. 11.19 приведен один из графиков отчетов, сформированных программой nmon (бесплатное ПО для мониторинга производительности *тих-систем) реального компьютера. Часто такие отчеты снабжаются указаниями на параметры, значения которых зафиксированы в неоптимальных коридорах.

Рис. 11.19.
Один из графиков отчета по данным мониторинга AIX-системы программой nmon

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

Оптимизация приложений

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

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

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

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

Задача администратора в подобной ситуации — выяснить причины проблемы и подсказать возможные пути их разрешения.


1Не забывайте, что один сектор равен 512 байтам. Соответственно и рассчитывайте размер файла.


Рейтинг@Mail.ru