Простой мониторинг системы с помощью SAR

SAR поможет выявить "узкие места" системы

В статье описывается, как отслеживать жалобы пользователей с помощью system activity reporter (SAR) и тенденции изменения производительности с помощью журналов SAR. SAR - идеальная утилита для системных администраторов. Она периодически собирает важные показатели производительности системы.

Шон Уолберг, старший сетевой инженер, P.Eng

Шон Уолберг работал с Linux- и UNIX-системами с 1994 года в академических, корпоративных и "провайдерских" кругах. Он широко освещает вопросы системного администрирования в течение нескольких последних лет. С ним можно связаться по адресу sean@ertw.com.



26.12.2008

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

Сбор данных

Набор утилит SAR поставляется вместе с системой (на самом деле, он устанавливается в большинство версий UNIX®), но, возможно, отключен по умолчанию). Чтобы активировать SAR, нужно запускать некоторые утилиты через определенные интервалы времени, используя функциональность cron. Воспользуйтесь командой crontab -e от лица суперпользователя для подготовки конфигурации, показанной в листинге 1.

Листинг 1. Запуск crontab с правами суперпользователя для включения SAR
# Сбор данных с 10-минутными интервалами
0,10,20,30,40,50   * * * *   /usr/lib/sa/sa1
# Создание ежедневных отчетов и очистка старых файлов
0                  0 * * *   /usr/lib/sa/sa2 -A

Первая команда, sa1 - это сценарий оболочки, вызывающий инструмент sadc для сбора данных о производительности в бинарный журнальный файл. Команда sa1 еще и гарантирует, что для каждого дня будет свой файл, как показано в разделе Самое главное - это расписание. Запуск команды каждые 10 минут - хороший компромисс между степенью детализации и влиянием на систему.

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


Извлечение полезной информации

Данные были получены, но их нужно обработать. Запустим команду sar без параметров, чтобы сгенерировать статистику загрузки процессора за день. В листинге 2 показан вывод sar без каких-либо параметров. Можно увидеть различные названия столбцов в зависимости от платформы. В некоторых разновидностях UNIX sadc накапливает больше или меньше данных в зависимости от того, что доступно. В этой статье приведены проблемы для Sun Solaris 10; в любой другой платформе результаты будут отличаться только в именах столбцов.

Листинг 2. Стандартный вывод sar (показывает активность процессора)
-bash-3.00$ sar

SunOS unknown 5.10 Generic_118822-23 sun4u    01/20/2006

00:00:01    %usr    %sys    %wio   %idle
00:10:00       0       0       0     100
. cut ...
09:30:00       4      47       0      49

Average        0       1       0      98

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

  • %usr: - процент процессорного времени, потраченного на пользовательские процессы, такие как приложения, сценарии оболочки или взаимодействие с пользователем.
  • %sys: - процент процессорного времени, потраченного на выполнение задач ядра. В примере это значение получилось большим, потому что я беру данные из генератора случайных чисел ядра.
  • %wio: - процент процессорного времени, затраченного на ожидание ввода-вывода в/из блочных устройств, например, жесткого диска.
  • %idle: - процент времени, которое процессор простаивал.

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

Наблюдение за активностью диска

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

Вывод команды sar -d показывает различные данные по статистике диска за определенный период. Для краткости, листинг 3 показывает только активность жесткого диска.

Листинг 3. Вывод команды sar -d (показывает активность диска)
$ sar -d

SunOS unknown 5.10 Generic_118822-23 sun4u    01/22/2006

00:00:01   device       %busy   avque   r+w/s  blks/s  avwait  avserv
. cut ...
14:00:02   dad0             31     0.6      78   16102     1.9     5.3
           dad0,c            0     0.0       0       0     0.0     0.0
           dad0,h           31     0.6      78   16102     1.9     5.3
           dad1              0     0.0       0       1     1.6     1.3
           dad1,a            0     0.0       0       1     1.6     1.3
           dad1,b            0     0.0       0       0     0.0     0.0
           dad1,c            0     0.0       0       0     0.0     0.0

Как и в прошлом примере, время показано слева, а другие колонки означают:

  • device: - диск или раздел испытуемого диска. В Sun Solaris можно ассоциировать этот диск с физическим, посмотрев на определенное имя в каталоге /etc/path_to_inst и перейдя по перекрестной ссылке к информации в списках в /dev/dsk. В Linux® для дисков используются "младшие" и "старшие" номера устройств.
  • %busy: - процент времени, в течение которого устройство читало или записывало.
  • avque: - средняя длина очереди, которая используется для организации работы с диском. Более высокое значение avque соответствует большему числу блокировок.
  • r+w/s, blks/s: - активность диска по секундам для операций чтения/записи и блокировок диска соответственно.
  • avwait: - среднее время (в миллисекундах) ожидания завершения операций чтения и записи.
  • avserv: - среднее время (в миллисекундах), потраченное на выполнение операции чтения или записи.

Некоторые из этих чисел, такие как avwait и avserv , напрямую зависят от опыта пользователей. Высокое время ожидания для диска означает, скорее всего, что несколько пользователей конкурируют за доступ к диску; это подтверждается высоким значением avque. Высокое значение avserv характерно для медленных дисков.

Другие характеристики

Собирается множество другой статистики с соответствующими аргументами для ее просмотра:

  • -b показывает информацию о буферах и эффективности использования буфера в сравнении с диском.
  • -c показывает вызовы самых популярных системных методов, таких как fork(), exec(), read() и write(). Частое создание процессов приводит к уменьшению производительности и может потребовать перемещения некоторых приложений на другой компьютер.
  • параметры -g, -p и -w показывают активность подкачки (своппинг). Высокий уровень использования подкачки говорит о нехватке памяти. Особенность параметра -w состоит в том, что он показывает число переключений между процессами. Большое число переключений означает, что на компьютере запущено много других процессов, и больше времени тратится на переключения, чем на работу.
  • -q показывает размер очереди исполнения, который определяется как средняя загрузка за время.
  • -r показывает свободную память и количество свободного места в подкачке на данный момент.

Каждая реализация UNIX имеет свои собственные особенности и параметры командной строки sar. Здесь были показаны самые стандартные и представляющие самую полезную, на мой взгляд, статистику.


Самое главное - это расписание

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

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

Как я сказал ранее, sa1 сохраняет данные в разные файлы каждый день. Просмотр сценария sa1 должен показать, какой каталог используется; в случае с Sun Solaris 10 - это /var/adm/sa. В этом каталоге находятся различные файлы, начинающиеся с "sa" или "sar" и заканчивающиеся номерами. Номера означают день и месяц; в файлах, начинающихся с "sar", содержатся текстовые дампы данных за этот день (созданных ночью запуском sa2), а в файлах, начинающихся на "sa", хранится бинарная версия этих данных. На самом деле, файл, содержащий текущую дату - это файл, считанный тогда, когда был запущен sar.

Задание параметра -f для команды sar устанавливает файл для чтения. Если сегодня 23-й день месяца, можно посмотреть вчерашние данные, прочитав их из файла sa22 с помощью команды sar -f /var/adm/sa/sa22. Для доступа к другим типам данных можно также использовать и другие параметры, которые были показаны.

Для точного определения в запросе нужного времени можно использовать параметры, задающие это время: -s и -e (читается как начало - start и конец - end). Заметьте, что -s не включается, так что нужно вычесть около 10 из требуемого времени начала. Продолжая предыдущий пример, листинг 4 показывает уровень использования файла подкачки и запуск запроса для 22-го числа с 14:30 до 15:00.

Листинг 4. Комплексный запрос sar по дате, времени и сложным наборам данных
# sar -f /var/adm/sa/sa22 -s 14:20 -e 15:00 -w -q -i 4

SunOS unknown 5.10 Generic_118822-23 sun4u    01/22/2006

14:20:00 swpin/s bswin/s swpot/s bswot/s pswch/s
14:30:00    0.00     0.0    0.00     0.0     140
14:40:01    0.00     0.0    0.00     0.0     144
14:50:01    0.00     0.0    0.00     0.0     140
15:00:00    0.00     0.0    0.00     0.0     139

Average     0.00     0.0    0.00     0.0     140

14:20:00 runq-sz %runocc swpq-sz %swpocc
14:30:00    10.5     100     0.0       0
14:40:01    10.5     100     0.0       0
14:50:01    10.4     100     0.0       0
15:00:00    10.5     100     0.0       0

Average     10.5     100     0.0       0

Анализ результатов

Быстрый анализ листинга 4 показывает нулевую активность подкачки: за секунду происходит около 140 переключений процессов, и средняя загрузка была немного больше 10%. Предположим, что мы анализируем причину низкой производительности, тогда что дает эта информация?

  • " Любой запущенный процесс использует память неинтенсивно, так как не видно процесса подкачки.
  • " Возможно, возникновение этой проблемы вызвано слишком долго работающими процессами, потому что размер очереди на исполнение соответствует числу переключений процессов. Если бы это было не так, можно было бы предположить, что это проблема уровня приложений, например, перегруженный Web-сервер.
  • Зная листинг 3, показывающий данные за этот же период времени, можно заметить, что один из дисков использовался интенсивнее (31%, как показывает sar -b, а также 16000 блокировок в секунду). Это диск с разделом домашнего каталога; и, в зависимости от того что пользователь пытается сделать, он может медленно реагировать.

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

  • Вернуться к журнальным файлам предыдущих дней. В этом случае обнаружится, что проблема возникла в 13:00 и закончилась на следующее утро.
  • Попытаться проанализировать активность некоторых задач cron, которые могли быть запущены в этот день.
  • 1. Попытаться определить тенденцию, просмотрев данные двух других дней, Можно увидеть, что производительность была нормальной, что означает, что система не достигла предела производительности.

Наконец, проблема была изолирована и, как можно было догадаться, автор специально загрузил диски сценариями оболочки для создания интересных отчетов sar! Тем не менее имея такую тенденцию с загрузкой домашних дисков во время рабочих часов, стоит сделать что-либо для решения проблемы. Возможное решение - перенос домашних каталогов на другой диск, установка быстрых дисков или перемещение их на сетевое устройство хранения (NAS).


Заключение

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

Ресурсы

Научиться

Получить продукты и технологии

  • SarCheck® принимает пожертвования для поддержания разработки SAR, которая обеспечивает просмотр данных в виде графиков. Доступна бесплатная демо-версия.(EN)
  • IBM trial software: ознакомительные версии программного обеспечения для разработчиков, которые можно загрузить прямо со страницы сообщества developerWorks.(EN)

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


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

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



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

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=AIX и UNIX
ArticleID=361309
ArticleTitle=Простой мониторинг системы с помощью SAR
publish-date=12262008