Инструменты мониторинга производительности системы UNIX

Инструменты мониторинга производительности системы UNIX для сервера OracleДля выполнения мониторинга производительности системы, в которой запущен сервер баз данных Oracle, доступно несколько инструментов. Эти инструменты проверяют показатели использования памяти и дискового пространства в главной системе и информируют о появлении любых “узких мест”.В этом разделе вы познакомитесь с основными инструментами мониторинга, которые доступны в UNIX, и увидите, как с их помощью следить за производительностью системы.

 

Основы мониторинга системы UNIX

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

 

Мониторинг использования центрального процессора

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

  • Использование ресурсов ЦП пользователями и операционной системой. Можно сравнивать количество времени, в течение которого ЦП используется приложениями пользователей, и количество времени, когда они тратятся на обработку накладных расходов операционной системы. Очевидно, что если накладные расходы системы обходятся использованием большого количества ресурсов, нужно что-то с этим делать.
  • Работоспособные процессы. В любой конкретный момент времени процесс либо выполняется, либо ожидает, пока освободятся ресурсы. Процесс, ожидающий выделения ресурсов, называется работоспособным (runnable). Наличие слишком большого количества таких процессов может служить показателем нехватки ресурсов ЦП в системе.
  • Переключения контекста и прерывания. Когда операционная система переключается между процессами, появляются накладные расходы из-за так называемых переключений контекста. При наличии слишком большого количества таких переключений может возникать нехватка ресурсов ЦП. Подобные накладные расходы также могут появляться и при слишком большом количестве прерываний,возникающих в операционной системе при завершении выполнения определенных аппаратных или программных задач.

 

Управление памятью

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

  • Количество страниц, передаваемых туда и обратно. Наличие очень высоких показателей по количеству передаваемых туда и обратно страниц в статистике использования памяти свидетельствует о том, что в системе выполняется чрезмерное количество операций подкачки страниц, т.е. операций перемещения страниц из памяти на диск по причине нехватки памяти. Это чревато возникновением в системе так называемой пробуксовки (thrashing), т.е. началом использования для перемещения страниц между памятью и диском критических ресурсов системы.
  • Количество операций подкачки. Количество операций подкачки тоже показывает,насколько адекватно в системе распределяются ресурсы в текущий момент.
  • Активные и неактивные страницы. Слишком небольшое количество неактивных страниц в памяти может свидетельствовать о неадекватном использовании физической памяти.

 

Мониторинг дисковой памяти

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

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

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

 

Мониторинг пропускной способности

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

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

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

 

Инструменты мониторинга для систем UNIX

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

$ ps -ef | grep pmon 

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

 

Мониторинг использования памяти с помощью vmstat

Утилита vmstat помогает следить за использованием памяти, страничными ошибками, процессами и активностью ЦП. Вывод этой утилиты делится на два раздела: VM (связанный с виртуальной памятью) и CPU (посвященный ЦП). Раздел VM, в свою очередь, делится на три подраздела, которые называются memory (память), page (страница) и faults (ошибки). В разделе memory аббревиатура avm расшифровывается как “active virtual memory” (“активная виртуальная память”), а free является сокращением от “free memory” (“свободная память”). В разделах page и faults предоставляется детальная информация о количестве восстановлений страниц (page reclaims), количестве страниц, перемещавшихся из памяти на диск и обратно, и частоте прерываний в работе устройств.

Таким образом, вывод этой утилиты позволяет получать представление о том, не испытывает ли сервер Oracle нехватки в ресурсах памяти в часы пиковой нагрузки. Под заголовком po (page outs — количество страниц, перемещавшихся из памяти на диск) в разделе page в идеале должно присутствовать значение 0, указывающее на отсутствие операций подкачки, т.е. что система не перемещает страницы памяти на дисковые устройства для освобождения ресурсов памяти под другие процессы.

Ниже приведен пример вывода утилиты vmstat (обратите внимание, что в команде vmstat был использован параметр -n для улучшения форматирования вывода):

$ vmstat -n
VM
memory page faults
avm free re at pi po fr de sr in sy cs
1822671 8443043 1052 113 2 0 0 0 0 8554 89158 5272
CPU
cpu procs
us sy id r b w
23 7 69 8 23 0
22 8 70
21 7 72
22 7 71
$ 

Под заголовком procs (процессы) в разделе CPU первый столбец, r, отвечает за очередь выполнения (run queue). Если в системе присутствует 24 ЦП, а в столбце r отображается значение 20, это означает, что получения ресурсов ЦП в очереди ожидает 20 процессов, а это даже очень не плохой показатель. Наличие же в столбце r того же значения 20, но на компьютере только с двумя ЦП будет свидетельствовать об острой нехватке ресурсов ЦП в системе, потому что такое количество процессов, ожидающих получения ресурсов ЦП, для данной машины будет слишком большим.

Под заголовком us в CPU-разделе вывода vmstat подразумевается количество ресурсов ЦП, которое используется пользователями системы, в том числе и процессами баз данных, под заголовком sy — количество ресурсов ЦП, которое используется самой системой, а под заголовком id — количество ресурсов ЦП, которое находится в незанятом состоянии. Согласно приведенному здесь примеру вывода, в системе на каждые четыре процессора в среднем приходится, грубо, по 70% незанятых ресурсов.

 

Просмотр статистики ввода-вывода с помощью iostat

Утилита iostat позволяет просматривать статические данные по вводу-выводу для всех дисков в системе. Ее вывод отображается в виде четырех следующих столбцов.

  • device — в этом столбце отображается имя дискового устройства, производительность которого замеряет утилита iostat.
  • bps — в этом столбце отображается количество Кбайт, которое передается с данного устройства в секунду.
  • sps — в этом столбце отображается количество операций подвода головок, которое диск выполняет в секунду.
  • msps — в этом столбце отображается количество времени (в миллисекундах), которое в среднем уходит у диска на выполнение каждой операции подвода головок (или поиска дорожки).

Команда iostat принимает два параметра: количество секунд, которое должно проходить перед обновлением информации на экране, и количество раз, которое информация на экране должна обновляться. Ниже приведен пример вывода команды iostat

$ iostat 4 5
device bps sps msps
c2t6d0 234 54.9 1.0
c5t6d0 198 42.6 1.0
c0t1d1 708 27.7 1.0
c4t3d1 608 19.0 1.0
c0t1d2 961 46.6 1.0
c4t3d2 962 46.1 1.0
c0t1d3 731 91.3 1.0
c4t3d3 760 93.5 1.0
c0t1d4 37 7.0 1.0
$

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

 

Анализ операций чтения/записи с помощью sar

Доступная в UNIX утилита sar (system activity reporter — генератор отчетов по активности системы) представляет собой очень мощное средство для анализа того, как проходят операции чтения и записи данных с диска в кэш-буфер и из кэш-буфера на диск.За счет применения с командой sar различных параметров, можно следить не только за активностью кэш-буфера, но также и за активностью дисков и ЦП.

Вывод команды состоит из перечисленных ниже столбцов.

  • bread/s — в этом столбце отображается информация о том, сколько в секунду происходит операций чтения данных с диска в кэш-буфер.
  • lread/s — в этом столбце отображается информация о том, сколько в секунду происходит операций чтения данных из кэш-буфера.
  • %rcache — в этом столбце отображается информация о количестве удачных обращений к кэшу для удовлетворения запросов на выполнение операций чтения данных.
  • bwrit/s — в этом столбце отображается информация о том, сколько в секунду происходит операций записи данных с диска в кэш-буфер.
  • lwrit/s — в этом столбце отображается информация о том, сколько в секунду происходит операций записи данных из кэш-буфера на диск.
  • %wcache — в этом столбце отображается информация о количестве удачных обращений к кэшу для удовлетворения запросов на выполнение операций записи данных.

Ниже приведен пример выполнения типичной команды sar с параметром –u для анализа активности ЦП на сервере (параметры 1 10 указывают, что вывод должен обновляться на экране каждую секунду десять раз):

 

$ sar -u 1 10
HP-UX prod5 B.11.11 U 9000/800 04/07/08
16:11:21 %usr %sys %wio %idle
16:11:22 34    6    56   4
16:11:23 31    7    55   7
16:11:24 45    9    43   4
16:11:25 45    9    44   2
16:11:26 45    11   40   3
16:11:27 46    11   40   4
16:11:28 48    10   40   3
16:11:29 56    11   31   2
16:11:30 50    12   36   3
16:11:31 45    12   39   4
Average  44    10   42   4
$ 

В приведенном выше отчете sar в столбце %usr отображается количество времени (в процентах), которое ЦП проводит в пользовательском режиме, в столбце %sys — количество времени (в процентах), которое ЦП проводит в системном режиме, в столбце %wio — количество времени (в процентах), которое ЦП простаивает, пока какой-то процесс ожидает выполнения операции ввода-вывода, а в столбце %idle — общее количество времени, которое ЦП простаивает полностью. В этом примере можно увидеть,что процент простаивания ЦП из-за ожидания процессами выполнения ввода-вывода является довольно высоким.

 

Мониторинг производительности с помощью top

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

Вывод команды top состоит из перечисленных ниже столбцов.

  • CPU — в этом столбце отображается информация о процессоре.
  • PID — в этом столбце отображается идентификационный номер процесса.
  • USER — в этом столбце отображается информация о том, кто является владельцем процесса.
  • PRI — в этом столбце отображается информация о значении приоритета процесса.
  • NI — в этом столбце отображается значение nice (nice вызывает команду с измененным приоритетом планирования).
  • SIZE — в этом столбце отображается общий размер занимаемого процессом места в памяти.
  • RES — в этом столбце отображается резидентный размер процесса.
  • TIME — в этом столбце отображается информация о количестве времени, которое процесс использует ЦП.
  • %CPU — в этом столбце отображается информация о том, сколько ресурсов ЦП процесс использует от общего количества ресурсов ЦП (в процентах).
  • COMMAND — в этом столбце отображается информация о том, какая команда привела к запуску данного процесса.

Утилита top вызывается путем ввода в командной строке слова top. Для завершения сеанса работы с утилитой top применятся комбинация клавиш <Ctrl+C>.

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

$ top
CPU PID USER PRI NI SIZE RES TIME %CPU COMMAND
21 2713 nsuser 134 0 118M 104M 173:31 49.90 ns-httpd
23 28611 oracle 41 20 40128K 9300K 2:20 46.60 oraclepasprod
20 6951 oracle 241 20 25172K 19344K 3:45 44.62 rwrun60
13 9334 oracle 154 20 40128K 9300K 1:31 37.62 oraclepasprod
22 24517 oracle 68 20 36032K 5204K 0:55 36.48 oraclepasprod
22 13166 oracle 241 20 40128K 9300K 0:41 35.19 oraclepasprod
12 14097 oracle 241 20 40128K 9300K 0:29 33.75 oraclepasprod
$
                                                                                                                                 

Мониторинг системы с помощью GlancePlus

У нескольких операционных систем UNIX имеются свои собственные инструменты для осуществления мониторинга за системой. Например, в HP-UX для осуществления мониторинга за памятью, дисковыми операциями ввода-вывода и производительностью системы администраторы систем и баз данных чаще всего используют пакет GlancePlus.

На рис. 1 ниже показан пример типичного сеанса работы с GlancePlus в текстовом режиме, который был запущен с помощью следующей команды: 

$ glance –m 

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

Информация об использовании процесса, памяти, дисков на сервере Oracle

 Обратите внимание на то, что детальная информация об использовании памяти в данном сеансе отображается потому, что утилита GlancePlus была вызвана с параметром -m (команда glance -c привела бы к получению детального отчета по использованию ресурсов ЦП, а команда glance –d — к получению детального отчета по использованию дисков).

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

 

Мониторинг сети с помощью netstat

Помимо ЦП и памяти в системе также нужно наблюдать за работой сети и проверять, чтобы в ней не возникало никаких серьезных проблем с трафиком. Для этой цели очень удобно использовать утилиту netstat, которая работает как на серверах UNIX,так и на серверах Windows, на которых запущена база данных Or.

Вас заинтересует / Intresting for you:

Генерируемые сервером Oracle п...
Генерируемые сервером Oracle п... 1337 просмотров Stas Belkov Tue, 21 Nov 2017, 13:18:46
Работа с файлами и каталогами ...
Работа с файлами и каталогами ... 8960 просмотров Владимир Tue, 21 Nov 2017, 13:19:25
Подключение к серверу UNIX с Б...
Подключение к серверу UNIX с Б... 2788 просмотров Алексей Вятский Tue, 21 Nov 2017, 13:19:25
Обзор операционных систем UNIX...
Обзор операционных систем UNIX... 2419 просмотров Алексей Вятский Tue, 21 Nov 2017, 13:19:25
Войдите чтобы комментировать

OraCool аватар
OraCool ответил в теме #8932 6 года 2 мес. назад
В обязательном порядке использую iostat для анализа нагрузки на дисковую подсистему серверов баз данных Oracle.
apv аватар
apv ответил в теме #8417 7 года 1 нед. назад
Спасибо! Очень объемная и качественная статья. Полагал, что хорошо разбираюсь в инструментах мониторинга производительности, командах Unix, но нашел в этой статье кое-что новое, неизвестное мне.