Проводим мониторинг нагрузки операционной системы Solaris::Журнал СА 2.2007
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Дата-центры  

Дата-центры: есть ли опасность утечки данных?

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

 Читать далее...

Книжная полка  

Защиты много не бывает

Среди книжных новинок издательства «БХВ» есть несколько изданий, посвященных методам социальной инженерии

 Читать далее...

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6285
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6992
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4275
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3039
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3839
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3853
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6344
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3195
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3487
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7303
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10671
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12389
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 14033
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9156
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7106
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5411
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4647
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3447
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3179
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3422
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3048
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

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

Архив номеров / 2007 / Выпуск №2 (51) / Проводим мониторинг нагрузки операционной системы Solaris

Рубрика: Администрирование /  Продукты и решения

Сергей Косько

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

Вы установили своё новое приложение (например, СУБД) на сервере с операционной системой Solaris. Сначала всё шло хорошо, пользователи были довольны, но со временем появились жалобы, производительность работы значительно снизилась, и вы задумались о модернизации оборудования. Не стоит этого делать наугад. Прежде чем принимать решение о замене сервера, определите, каких именно ресурсов не хватает.

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

Предлагаемая методика известна давно (её подробное описание приведено, например, в [1]) и в целом применима к любому компьютеру, под управлением любой универсальной операционной системы. Тут мы рассмотрим её упрощённый вариант для предварительной оценки загрузки серверов под управлением операционной системы Solaris, с использованием команд и скриптов, которые пришлись мне по душе больше, чем стандартные команды UNIX. Будем рассматривать по порядку сначала загрузку оперативной памяти, потом дисков, сети и, наконец, процессоров. Такой порядок объясняется тем, что нехватка памяти может внести погрешность в определение нагрузки на диски, а загрузка дисков или сети – в определение загрузки процессора. В качестве тестового сервера используются SUN Fire v440 (4X1593МГцX8Гб) и операционная система Solaris 8.

Мониторинг памяти

При настройке оперативной памяти главная цель – избежать её дефицита. Если запросы приложений к памяти превышают имеющиеся ресурсы, «рабочие наборы» (working sets) выполняющихся процессов станут существенно меньше, чем необходимо для комфортной работы, возникнет избыточная подкачка страниц оперативной памяти. По интенсивности подкачки страниц судят о потребности в памяти. Традиционно наличие подкачки страниц определяют с помощью команды vmstat. Например, вывод команды vmstat при малой загрузке ОЗУ:

# vmstat 3

Анализируя колонки sr (scan rate) и po (page out), пытаются оценить интенсивность подкачки. Если значения в этих колонках не сильно отклоняются от среднестатистических, взятых за эталон благополучия значений (допустим, пускай эталоном будет полное отсутствие подкачки: sr=0 и po=0), можно считать, что проблемы подкачки нет. Еще одна команда – sar. Вывод команды sar при малой загрузке ОЗУ:

# sar -g 5 5

Сплошные нули в колонках не являются самоцелью, это скорее показатель избытка оперативной памяти. В нормально работающей системе всегда кто-то запрашивает дополнительную память, кто-то её освобождает, пишет или читает, но если обычная нагрузка была 100, а стало 100 000, это плохой знак. В операционной системе Solaris система виртуальной памяти, кеш файловой системы и каталог /tmp используют общий пул свободной оперативной памяти, распределяемый динамически, вследствие чего колонка free в выводе команды vmstat малоинформативна. Проверим, что происходит с файлом подкачки:

# /usr/sbin/swap -l

swapfile             dev    swaplo blocks   free

/dev/dsk/c1t0d0s1   118,1      16 8389632 6532608

Вывод команды iostat при низких объёмах подкачки:

# iostat -zxnp 1

Мы видим, что подкачки практически нет. И на последок, в ОС Solaris (начиная с версии 8) есть чудесная команда «vmstat -p». Для версии 7 можно скачать команду «memstat» [2]. Вывод команды vmstat с опцией -p:

# vmstat -p 2 5

Её достоинство в том, что кроме scan rate, мы можем видеть показатели page-in/page-out/page-frees по отдельности для executable/anonymous/filesystem страниц памяти. Рассмотрим пример:

$ find / -name sdfsdfsd -print &

13552

Вывод команды vmstat, демонстрирующий активность кеша файловой системы:

$ vmstat -p 1

До версии 7 операционной системы Solaris страницы файлового кеша и страницы памяти, отображаемые на swap, имели одинаковый приоритет, вследствие чего активность дискового кеша вносила путаницу в потребности в памяти. В версии 8 и выше эта проблема устранена. Если в последних трёх колонках мы видим большие цифры, то, возможно, пора переходить к проверке дисков (в данном случае работает команда find). А вот если присутствуют большие значения в колонке api, apo, apf, то необходимо проверить запросы процессов к памяти системы. Выполним команду prstat с сортировкой по объёму виртуальной памяти:

$ prstat -a -s size

Вывод этой команды показывает процессы, отсортированные по размеру используемой виртуальной памяти (а с ключем -s rss резидентной памяти), и суммарные показатели по имени пользователя. Это даёт возможность определиться с дальнейшими поисками «виновного».

Мониторинг дискового ввода-вывода

Следить за загрузкой дисков существенно проще. Проведём несколько тестов. Например, с помощью пакета iozone [3]. Откроем несколько терминальных сессий и запустим команды.

В первой сессии:

$ time iozone -Ra

real    30:29.2

user       50.9

sys      6:40.9

Как видно, большая часть времени в приложении расходуется на ожидание, а время, затраченное процессором, тратится большей частью в режиме sys, а не user.

Во второй сессии выполним следующую команду – iostat, получим вывод команды при большой нагрузке на файловую систему:

$ iostat -zxnp 1

Команда показывает ввод-вывод по разделам дисков. Если добавить к этой команде ключ -C – «iostat -zxnpC 1», к показанной статистике прибавятся агрегированные показатели по контроллерам. Конкретные цифры, конечно же, строго индивидуальны, но если объёмы (kr/s, kw/s) или время операции ввода-вывода (asvc_t/actv) значительно выше обычного, это говорит о повышенной нагрузке на систему дискового ввода-вывода. Ещё один важный параметр %b – степень загруженности диска (в процентах от времени интервала измерения). Часто он даже важнее, чем значения объёмов передаваемых данных kr/s и kw/s, поскольку дисковые операции могут отличаться по размеру фрагмента (большие и маленькие), кратности (кратные размеру блока и произвольной величины) и способу доступа (с последовательным и произвольным доступом). В отдельной сессии рассмотрим, как работает во время теста процессор системы. Запустим команду «sar -u 1 5». Мы можем наблюдать повышенное значение в колонках %sys и %wio, которое служит одним из признаков присутствия нагрузки ввода-вывода и иллюстрирует возможную погрешность, которая может возникнуть, если мы начнём анализ нагрузки с наблюдения за процессором.

Вывод команды sar во время операций ввода-вывода:

$ sar -u 1 5

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

$ dd if=/dev/zero of=/dev/rmt/0 bs=1024k count=200000

Вывод команды iostat во время записи на магнитную ленту:

$ iostat -zxnp 1

Вывод команды sar во время записи на магнитную ленту:

$ sar -u 1 5

Если с точки зрения памяти или процессоров у нас всё в порядке, тогда нам осталось рассмотреть сеть и процессор.

Мониторинг сети

Начнём, как всегда, с теста. Снова создадим несколько сессий: в одной запускаем тест сети. В другой – команду «sar -u 1 5», в третьей – команду «netstat».

$ /usr/sbin/spray datatarget -c 100000000

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

$ sar -u 1 5

Вывод команды netstat – количество пакетов, передаваемых по сети:

$ netstat -I ce0 1

Команда netstat показывает количество пакетов, принимаемых и передаваемых сетевым интерфейсом. По результатам вывода команды «sar -u» мы видим, что при данном тесте создаётся нагрузка на процессор (колонки %usr и %sys).

Современные Ethernet-адаптеры подключаются к коммутаторам в режиме full-duplex, по этой причине возникновение ошибок и коллизий маловероятно и является не столько индикатором избыточной нагрузки на сеть, сколько показателем аппаратных проблем. Поэтому более интересен объём трафика в килобайтах в секунду. Можно воспользоваться утилитой ifstat [4].

Вывод команды ifstat – количество килобайт, передаваемых по сети:

$ ifstat -t 1

Если сетевая подсистема не является «бутылочным горлышком», перейдём к проверке загрузки процессора.

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

Мониторинг центрального процессора является последним этапом. Запустим какое-нибудь «CPU-bound»-приложение и команду «sar -u 1 5».

Вывод команды sar при работе приложения, нагружающего процессор:

$ sar -u 1 5

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

Воспользуемся командой vmstat, приложение использует диск и процессор:

$ vmstat 1

Последние три колонки показывают нагрузку на процессор usr, sys, idl (%wio + %idle). Вот что показывает одновременно запущенная команда «sar -u», нагрузка на диск и процессор:

$ sar –u 1 5

Еще одним интересным показателем в листинге вывода команды vmstat является первая колонка – r под заголовком procs, которая показывает количество процессов, готовых к выполнению и ожидающих, когда для них освободится процессор. Если при значении idl=0 это число значительно больше, чем число процессоров, то это говорит о нехватке ресурсов процессора, особенно если очередь ещё и растёт.

Если в системе несколько процесоров, посмотреть нагрузку по процессорам поможет команда mpstat, посмотрим некоторую произвольную нагрузку:

$ mpstat 1

Значение %ildle во всех приведенных листингах говорит только о том, что процессоры системы простаивают. А вот значение этого параметра близкое к нулю – не обязательно катастрофа. Возможно, ваш сервер – это файловый сервер, и, несмотря на то что значение %wio большое, вы довольны скоростью файловых операций, или ваше приложение, послав запрос по сети, находится в состоянии бесконечного цикла ожидания ответа удалённой системы, и вас это устраивает. Желательно иметь некоторый запас (но и не слишком избыточный), например 20%, на случай пиковых нагрузок.

Теперь найдём самые затратные с точки зрения процессора приложения. Сделать это можно командой  prstat, посмотрим сортировку по времени CPU:

$ prstat

В команде prstat существуют также опции «-v» или «-m» для более подробного вывода (см. рис. 1).

Рисунок 1. Команда prstat, детальный вывод

Рисунок 1. Команда prstat, детальный вывод

Можно, конечно, воспользоваться и стандартной командой ps (SunOS/BSD compatibility command):

$ /usr/ucb/ps -aux|head -5

Сделаем работу удобнее

Чтобы не набирать слишком большое количество команд, воспользуемся некоторыми свободно распространяемыми утилитами. Вместо команды prstat можно запустить команду top [5]. Использование top позволяет на одном экране видеть как общую загрузку процессора %usr, %sys, %wio, %idle, так и периодически обновляющийся список процессов, отсортированных по различным критериям, например, по нагрузке на процессор. Если имеется Х-сервер, можно воспользоваться утилитой xcpustate [6], которая отображает информацию по загрузке процессора и дисковых накопителей.

# !/bin/sh

if [ -z "$DISPLAY" ]

then

who_host=`who am i |awk ' { print $6 }' | sed 's/[(|)]//g'`

DISPLAY=$who_host:0.0 ;export DISPLAY

fi

/usr/local/bin/xcpustate -wait -disk  -display $DISPLAY -geometry 200x760

Вывод этих команд приведен на рис. 2. Дополнительные сведения о системе Solaris вы можете найти на сайте [2], кроме того, в разделе сайта «Download» вы найдёте много полезных программ, которые помогут получить  более подробную информацию о процессах, которые происходят в системе, и позволят детальнее определить источник проблем.

Рисунок 2. Рабочий стол CDE, команды top и xcpustate

Рисунок 2. Рабочий стол CDE, команды top и xcpustate

Автоматизируем процесс

Наконец, чтобы осуществлять постоянный мониторинг, воспользуемся помощью скриптов sa1 и sa2 из пакета «system activity report package», которые предназначены для запуска в качестве заданий для демона cron.

Внесём сбор статистики в таблицу crontab.

$ su – sys

$ EDITOR=vi;export EDITOR

$ crontab –e

#ident  "@(#)sys  1.5  92/07/14 SMI"   /* SVr4.0 1.2   */

#

# The sys crontab should be used to do performance

# collection. See cron and performance manual pages

# for details on startup.

#

# 0 * * * 0-6 /usr/lib/sa/sa1

# 20,40 8-17 * * 1-5 /usr/lib/sa/sa1

# 5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 1200 –A

Раскомментируйте и при необходимости отредактируйте две последние строки. Например: «Собирать статистику круглосуточно с интервалом в 20 минут и формировать текстовый отчёт перед полуночью».

0,20,40 * * * * /usr/lib/sa/sa1

55 23 * * * /usr/lib/sa/sa2 -s 00:00 -e 23:59 -i 1200 –A

Эти скрипты создают двоичные файлы статистики и текстовые файлы отчётов, которые хранятся в каталоге /var/adm/sa в течение недели (по умолчанию). В дальнейшем их можно будет использовать для поиска периодов максимальной и минимальной загрузки и как отправную точку для более подробного анализа.

  1. http://www.sun.com/blueprints/0602/816-7191-10.pdf – Configuring and Tuning Databases on the Solaris Platform, by Allan N. Packer, (c) 2002.
  2. http://www.solarisinternals.com/si/index.php – Solaris Internals by Jim Mauro, Richard McDougall and Brendan Gregg.
  3. http://www.iozone.org – утилита iozone.
  4. http://gael.roualland.free.fr/ifstat – утилита ifstat.
  5. http://www.unixtop.org/index.shtml – утилита top.
  6. http://www.cs.toronto.edu/~jdd – утилита xcpustate.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru