УПРАВЛЕНИЕ ПРОИЗВОДИТЕЛЬНОСТЬЮ СЕРВЕРОВ НА ПЛАТФОРМЕ SUN/SOLARIS
И.В. Щелоков
Современные многопроцессорные сервера функционируют, как правило, под управлением операционных систем семейства UNIX. Отличительной особенностью операционных систем этого семейства является то, что они обеспечивают функционирование вычислительных систем (ВС) с различным числом процессоров, количество которых порой может исчисляться десятками, а иногда и сотнями. Известно, что увеличение количества процессоров в многопроцессорном сервере ведет к увеличению его производительности. Этот процесс называется масштабируемостью ВС. Масштабируемость - это один из основных и наиболее широко распространенных способов повышения производительности многопроцессорных серверов. Однако такой экстенсивный путь повышения производительности не всегда является оптимальным. Практика показывает, что существенного повышения производительности ВС можно добиться за счет использования резервов операционной системы путем грамотной настройки ее параметров. Рассмотрим вопросы управления производительностью ВС на примере ОС Solaris, являющейся основной ОС для платформы Sun.
Основными компонентами операционной системы, влияющими на производительность ВС, являются:
1. ядро операционной системы;
2. система управления памятью;
3. система ввода/вывода.
Ядро операционной системы - это резидентная часть операционной системы, находящаяся в любой момент времени в оперативной памяти. Загрузка операционной системы начинается с загрузки ядра. Ядро управляет всеми физическими ресурсами вычислительной системы. Прикладной интерфейс с ядром реализован по средствам различных системных вызовов. Ключевыми функциями ядра являются:
• поддержка различных типов файловых систем;
• управление демонами - системными процессами, которые управляют системными ресурсами;
• реализация механизма виртуальной памяти;
• управление состояниями всех процессов;
• управление драйверами устройств;
• управление сетевыми сервисами.
Помимо переменных окружения ядро использует множество таблиц. Размеры таблиц устанавливаются автоматически во время загрузки, но могут изменяться администратором путем изменения переменных окружения ядра. Подбор оптимальных размеров таблиц ядра может существенно повысить производительность системы.
Одним из параметров ядра, во многом определяющим системную производительность, является переменная окружения maxusers. Многие параметры и размеры таблиц ядра определяются через переменную maxusers. Увеличение параметра maxusers приводит к увеличению размера табличного пространства ядра Solaris, и, следовательно, уменьшается количество доступной памяти.
При недостатке оперативной памяти ядро начинает 2 процедуры: выгрузка страниц (paging, страничный обмен) и выгрузку процессов (swaping, подкачка). Выгрузка процессов - перемещение образов неактивных процессов из оперативной и памяти на диск. Выгрузка страниц - перемещение не используемых в данный момент страниц памяти на диск.
Когда количество памяти становится меньше lotsfree, демон pageout начинает процесс поиска неактивных страниц по алгоритму стрелок часов. Страница помечается как неиспользованная, и через определенное время, зависящее от расстояния между стрелками, демон pageout проверяет, было ли обращение к этой странице. Если нет -она становится кандидатом на выгрузку. Если количество свободной памяти падает ниже значения desfree, страницы выгружаются на диск и помещаются в конец списка свободных страниц. Новые страницы процессы получают из начала списка свободных страниц. При уменьшении количества свободной памяти ниже значения minfree начинается процесс выгрузки процессов.
Для повышения эффективности функционирования системы необходимо знать количество процессов в системе и то, как они используют системные ресурсы и как участвуют в процессах подкачки и страничного обмена. Для этого могут быть использованы такие инструменты операционной системы Solaris, как vmstat, swap, sar и ps.
Первый шаг в процессе оценки производительности - это определение активности подкачки и страничного обмена. Для этого можно использовать команды vmstat и sar. Команда sar дает в основном результирующую информации, а команда vmstat позволяет получать детальную информацию в динамике. С помощью этих команд может быть получена следующая информация:
• размеры пространство подкачки (vmstat swap, sar -r, и swap -s)
• размеры свободной памяти (vmstat free, sar -r freemem)
• количество "восстановленных" страниц (vmstat re).
Эффективность операционной системы основывается на оптимальном использовании и памяти, и пространства подкачки. Утилита swap предназначена для добавления, удаления и мониторинга области подкачки.
Команда ps позволяет получить достаточное количество информации о процессах, сообщая идентификатор процесса, идентификатор терминала, суммарное время выполнения и имя команды запуска. Дополнительную информацию, включая спецификацию пользователей как владельцев процессов, можно получить, используя дополнительные опции, описанные в справочной странице по команде ps.
Команда /usr/proc/bin/pmap позволяет получить карту памяти каждого исполняющегося процесса. Кроме того, опция -x позволяет выводить более детальную информацию о резидентных/разделяемых/закрытых областях карты.
Производительность дисков определяется следующими параметрами:
• вместимость;
• время доступа;
• скорость вращения;
• скорость передачи данных;
• пропускная способность шины;
• плотность записи;
• контроллер;
• размер буфера;
• среднее время ошибки;
• среднее время потери данных.
Наиболее важным фактором производительности дисковых подсистем является стандарт подключения к вычислительной системе. Наиболее популярными на сегодняшний день являются такие стандарты, как EIDE, SCSI и Fibre Channel.
Стандарт EIDE (Enhanced Integrated Drive Electronics - расширенная интегрированная электроника накопителя) получил популярность благодаря широкому распро-
странению маломощных персональных компьютеров. EIDE используется в линейке продуктов Sun на рабочих станция Sun Ultra 5, Sun Ultra 10, SunBlade 100 и Netra X1.
Стандарт SCSI ( Small Computer System Interface - интерфейс малых вычислительных систем) получил широкую популярность в течение последнего десятилетия. Первоначально он использовался в малых вычислительных системах, но дальнейшее развитие стандарта SCSI (увеличение полосы пропускания) позволило использовать его в мощных серверах.
Стандарт Fibre Channel (волоконный оптический канал) - высокопроизводительный коммуникационный стандарт, разработанный для двунаправленного соединения между высокпроизводительными рабочими станциями, переферийным оборудованием и большими вычислительными системами.
Дисковые массивы (RAID-системы) были разработаны в Беркли в 1987 году. Основная идея состояла в том, чтобы неким образом объединить много маленьких и медленных дисков и при этом получить мощь и производительность большого и быстрого диска. Одним из требований была надежность данных, т.е. при выходе из строя одного диска не должно произойти потери данных. Сегодня все RAID-системы обеспечивают высокую производительность и надежность, данные дублируются и распределяются между дисками. Характеристиками производительности дисковых подсистем являются:
• скорость обмена - скорость передачи данных между дисковой подсистемой и контроллером. Для RAID-систем скорости чтения и записи могут иметь различные значения;
• количество операций ввода/вывода в секунду - мера способности системы обрабатывать запросы.
В случае выхода из строя диска RAID-системы она продолжает работать, но переходит в так называемый "пониженный" режим. Производительность в таком режиме немного снижается. При это простые RAID-системы сообщают системному администратору о проблеме, а более сложные могут автоматически начать процедуру использования резервных дисков. Процедура автоматического восстановления позволяет восстановить производительность RAID-системы. В состав операционной системы Solaris входит такой программный продукт, как Solstice Disk Suite, который позволяет организовывать программные RAID-системы, повышая производительность и надежность дисковой подсистемы.
В зависимости от конфигурации и назначения различают 5 основных уровней RAID. Существуют две комбинации основных уровней. Набольшее распространение получили следующие уровни:
• RAID 0 (чередование),
• RAID 1 (зеркалирование),
• RAID 0+1 (чередование с зеркалированием),
• RAID 5 (чередование с четностью).
Большое влияние на производительность RAID-систем оказывает размер чередования - количество данных, записываемых на один диск до переноса продолжения на другой.
На системную производительность большое влияние оказывают два фактора: утилизация процессора и активность дисковых операций. В состав операционной системы Solaris входит утилита iostat, которая помогает системному администратору определить дисковую активность и утилизацию процессора. Правильное расположение данных по дискам оказывает существенное влияние на повышение производительности. Для определения числа свободных и занятых блоков на диске используются ути-
литы df и du. Кроме того, исчерпывающую информацию об активности дисковых подсистем можно получить с помощью утилиты sar.
Операционная система Solaris поддерживает несколько типов файловых систем. К ним относятся:
• традиционная файловая система UNIX (UFS),
• файловая система электронного диска (TmpFS),
• файловая система VERITAS (VxFS),
• файловая система кэширования (CacheFS),
• сетевая файловая система (NFS).
На производительность файловой системы влияют следующие параметры:
• плотность индексов,
• минимальное свободное пространство на диске,
• количество цилиндров в цилиндровой группе,
• максимальное количество блоков на файл.
Для изменения параметров настройки файловой системы используется утилита tunefs.
Локальные сети обеспечивают связь между вычислительными системами, расположенными на небольшом расстоянии, передачу информации между ними и распределение ресурсов. В распределенных вычислениях сеть может быть узким местом и снижать общую производительность системы. Не только настройка параметров сетевого окружения, но и выбор сетевой технологии устраняют это узкое место. Solaris поддерживает 3 сетевые технологии: Ethernet, FDDI и ATM.
Ethernet - наиболее древняя и наиболее распространенная сетевая технология. Идеология Ethernet такова, что в текущий момент времени данные по сети может передавать только одно устройство, если одновременно два устройства пытаются передавать данные, то возникают коллизии. Нормальной считается работа сети при 35 % утилизации. Использование различного дополнительного сетевого оборудования позволяют снизить процент коллизий. Ethernet обеспечивает передачу данных со скоростями 10 Мбит/сек или 100 Мбит/сек.
Технология FDDI (Fibre Distributed Data Interface - распределенный интерфейс передачи данных по оптическому кабелю) FDDI определяет передачу данных по кольцевой топологии со скоростью 100 Мбит/сек. Передача данных может быть осуществлена только при получении специального маркера, постоянно циркулирующего по сети.
ATM (Asynchronous Transfer Mode - режим асинхронной передачи) основана на передачи небольших пакетов фиксированной длины. Обеспечивает высокую полосу пропускания. Скорость передачи данных от 50 Мбит/сек до 2 Гбит/сек. Позволяет передавать звук и динамическое изображение.
Основой правильного функционирования сети является правильное соотношение скорости передачи пакетов и скорости, с которой система может обрабатывать эти пакеты. Если сеть будет передавать пакеты быстрее, чем система сможет их обрабатывать. то часть пакетов может быть потеряна. Используя команду ping, можно определить, происходит ли потеря пакетов. Первым шагом диагностики и корректировки сетевого окружения является определение статуса и состояния сетевых интерфейсов. Для этого системные администраторы могут воспользоваться утилитой netstat. Администраторы должны обратить внимание на:
• количество ошибок входящих и исходящих пакетов. Если это число больше 0.025%, то это говорит о проблеме аппаратной части,
• скорость коллизий. Если скорость коллизий исходящих пакетов больше 10%, то сеть слишком перегружена.
Широкое распространение на сегодняшний день получили NFS сервера. Утилита nfsstat выдает отчет о статистике NFS сервера. Для изучения сетевого трафика можно воспользоваться утилитой snoop. Она позволяет перехватывать и анализировать пакеты.
Настройка системы и получение максимальной производительности - процесс сложный и кропотливый, определение узкого места может потребовать значительных затрат времени и сил. Основные компоненты вычислительной системы и примерный приоритет исследования их функционирования и настройки имеет следующий вид:
1. ресурсы процессора;
2. ресурсы памяти;
3. дисковые подсистемы;
4. сетевые ресурсы;
5. активность NFS.
При этом обязательно надо учитывать прикладную область применения исследуемой вычислительной системы, так как один класс прикладных задач наиболее интенсивно использует одни компоненты ВС, в то время как другой класс создает нагрузку на другие компоненты.