[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

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


Сбор информации об использовании процессора

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

Команда vmstat (CPU)

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

Примечание: Если, не считая периодичности создания отчетов и числа отчетов, в команде vmstat параметры указаны не будут (например, vmstat 2 10), то в первой строке вывода будут указаны средние значения параметров, подсчитанные за время с момента загрузки системы.

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

# vmstat 2
нити     память             страница          ошибки        cpu
----- ----------- ------------------------ ------------ -----------
 r  b   avm   fre  re  pi  po  fr   sr  cy  in   sy  cs us sy id wa
 1  0 22478  1677   0   0   0   0    0   0 188 1380 157 57 32  0 10
 1  0 22506  1609   0   0   0   0    0   0 214 1476 186 48 37  0 16
 0  0 22498  1582   0   0   0   0    0   0 248 1470 226 55 36  0  9
 
 2  0 22534  1465   0   0   0   0    0   0 238  903 239 77 23  0  0
 2  0 22534  1445   0   0   0   0    0   0 209 1142 205 72 28  0  0
 2  0 22534  1426   0   0   0   0    0   0 189 1220 212 74 26  0  0
 3  0 22534  1410   0   0   0   0    0   0 255 1704 268 70 30  0  0
 2  1 22557  1365   0   0   0   0    0   0 383  977 216 72 28  0  0
 
 2  0 22541  1356   0   0   0   0    0   0 237 1418 209 63 33  0  4
 1  0 22524  1350   0   0   0   0    0   0 241 1348 179 52 32  0 16
 1  0 22546  1293   0   0   0   0    0   0 217 1473 180 51 35  0 14

Этот пример показывает результаты запуска зацикленной программы в многопользовательской системе с большой нагрузкой. Первые три отчета (итоговый отчет был удален) показывают, что система была загружена на 50-55 процентов пользовательскими процессами, на 30-35 процентов - задачами системы, а 10-15 процентов пришлось на задержки ввода-вывода. После запуска зацикленной программы она забирает все свободные ресурсы CPU. Так как зацикленная программа не запрашивает операции ввода-вывода, она может получить все процессорное время, которое не используется другими программами, ожидающими завершения операций ввода-вывода. Кроме этого, такая программа всегда готова забрать ресурсы CPU, когда другой процесс их освобождает. При этом она не обязательно отдаст эти ресурсы другому процессу, так как приоритеты всех фоновых процессов одинаковы. Программа работает примерно 10 секунд (группа из пяти отчетов), после чего система возвращается в обычный режим работы (об этом говорят следующие отчеты команды vmstat).

Если в системе поступает большое число прерываний от различных устройств, то статистическая информация о CPU может быть несколько искажена. Это связано с тем, что утилита считывает значения параметров при поступлении прерывания от таймера. Таймер относится к устройствам с самым низким приоритетом, поэтому его прерывания будут обрабатываться в последнюю очередь. Для того чтобы избежать подобного искажения информации, в операционных системах AIX версии старше 4.3.3 применяется другой способ измерения значений.

Примечание: Для систем SMP в столбцах us, sy, id и wa указываются средние значения по всем процессорам (статистическую информацию об отдельных процессорах можно получить с помощью команды sar). Помните, что время ожидания завершения операции ввода-вывода не отражает фактическое время ожидания отдельного процессора. Это глобальное значение. Время ожидания завершения ввода-вывода отличается от времени простоя на то количество времени, которое было затрачено на ожидающие операции дискового ввода-вывода. Если есть ожидающая операция ввода-вывода, и процессор не занят, то это время прибавляется к времени ожидания завершения ввода-вывода. В операционной системе AIX версии 4.3.3 и выше применяется усовершенствованный способ подсчета процессорного времени, затраченного на ожидание завершения дискового ввода-вывода (время wio). Более подробная информация по этому вопросу приведена в разделе Подсчет времени ожидания завершения ввода-вывода.

Оптимальной является ситуация, когда процессор работает 100 процентов времени. Это условие всегда выполняется в однопользовательской системе, если в ней нет конкуренции за процессор. В общем случае, если суммарное время us + sy меньше 90 процентов, то считается, что производительность однопользовательской системы не ограничена ресурсами CPU. Однако если значение us + sy в многопользовательской системе превышает 80 процентов, то некоторые процессы часть времени находятся в состоянии ожидания. Это может отрицательно сказаться на времени ответа и скорости работы приложений.

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

Команда iostat

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

В приведенном ниже примере показан фрагмент вывода команды iostat. В первом разделе указываются суммарные значения параметров, накопленные с момента запуска системы.

# iostat -t 2 6
tty:      tin         tout   avg-cpu:  % user    % sys     % idle    % iowait
          0.0          0.8               8.4      2.6       88.5       0.5
          0.0         80.2               4.5      3.0       92.1       0.5
          0.0         40.5               7.0      4.0       89.0       0.0
          0.0         40.5               9.0      2.5       88.5       0.0
          0.0         40.5               7.5      1.0       91.5       0.0
          0.0         40.5              10.0      3.5       80.5       6.0

В столбцах с информацией о CPU (% user, % sys, % idle, and % iowait) указывается распределение времени процессора. В выводе команды vmstat эта информация выводится в столбцах us, sy, id и wa. Более подробная информация об этих значениях приведена в разделе Команда vmstat. Кроме того, ознакомьтесь с информацией о новом способе вычисления значения %iowait, приведенной в разделе Получение информации о времени ожидания завершения ввода-вывода.

Команда sar

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

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

Существует три способа применения команды sar:

Сбор и просмотр информации в реальном времени

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

# sar -u 2 5
 
AIX texmex 3 4 000691854C00    01/27/00
 
17:58:15    %usr    %sys    %wio   %idle
17:58:17      43       9       1      46
17:58:19      35      17       3      45
17:58:21      36      22      20      23
17:58:23      21      17       0      63
17:58:25      85      12       3       0
 
Среднее       44      15       5      35

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

Просмотр ранее собранных данных

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

# sar -o /tmp/sar.out 2 5 > /dev/null

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

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

# sar -f/tmp/sar.out
 
AIX texmex 3 4 000691854C00    01/27/00
 
18:10:18    %usr    %sys    %wio   %idle
18:10:20       9       2       0      88
18:10:22      13      10       0      76
18:10:24      37       4       0      59
18:10:26       8       2       0      90
18:10:28      20       3       0      77
 
Среднее       18       4       0      78

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

Учет ресурсов системы с помощью демона cron

Для доступа к системным данным команда sar вызывает процесс sadc. Демон cron запускает два сценария оболочки (/usr/lib/sa/sa1 и /usr/lib/sa/sa2), которые каждый день создают отчеты и выдают статистическую информацию. Файл crontab /var/spool/cron/crontabs/adm содержит разделы, которые изначально помещены в комментарий. В этих разделах указывается, когда демон cron должен запускать сценарии оболочки.

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

#=================================================================
#  Отчеты о работе системы создаются:
#  В рабочие дни с 8 утра до 5 вечера - каждые 20 минут;
#  В субботу и воскресенье - каждый час;
#  Каждый день с 6 вечера до 7 утра - каждый час.
#  Ежедневный отчет создается в 18:05.
#=================================================================
0 8-17 * * 1-5 /usr/lib/sa/sa1 1200 3 &
0 * * * 0,6 /usr/lib/sa/sa1 &
0 18-7 * * 1-5 /usr/lib/sa/sa1 &
5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 3600 -ubcwyaqvm &
#=================================================================

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

Полезные опции для получения информации о процессоре

Ниже перечислены некоторые полезные опции команды sar, позволяющие получить информацию об использовании CPU:

Программа xmperf

Программа xmperf позволяет просмотреть информацию об использовании CPU в виде динамически изменяющейся диаграммы. Подробное описание программы xmperf можно найти в руководстве Performance Toolbox Version 2 and 3 for AIX: Guide and Reference.


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]