Мар 232012
 

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

Итак, начнём с утилиты uptime.
Она покажет время, которое система работает начиная с момента загрузки и среднее количество процессов, ждущих выполнения за 1, 5, и 15 минут. Это довольно косвенный показатель, но может иногда пригодиться. Нормальные значения - до 1.5, более высокие цифры могут говорить о перегруженности системы.

Утилита sar
Информацию по загрузке CPU можно получить так:

sar -u

По умолчанию будут выданы результаты измерений загрузки за последний день в виде снимков. В колонках будет время снимка, использование CPU процессами пользовательского уровня (%usr), ядром (%sys), процессами ввода-вывода (%wio), и остаток (%idle). Очевидно, что %idle = 100% - %usr - %sys - %wio. Кстати, что такое %wio и почему большие значения в этой колонке не всегда означают проблему с CPU, очень толково описано тут.
Sar поможет понять, когда именно началась проблема.

Утилита vmstat

vmstat 5 5

Покажет ряд снимков начиная с данного момента. Первую строчку не смотрим (это кумулятивная статистика), нас интересует 1-й столбец (число процессов в очереди на выполнение, в отличие от утилиты uptime, округлённое до ближайшего меньшего целого) и последние 3 столбца (это аналоги %usr, %sys, (%idle + %wio) соответственно из вывода sar).

Утилита prstat
Это аналог любимого всеми линуксоидами top/htop для Solaris. Тут наиболее показательна колонка CPU. На многопроцессорной системе значение в этой колонке будет не больше, чем 100% / (количество CPU в системе) для одного процесса. По умолчанию сортировка будет идти именно по этой колонке. С помощью этой утилиты удобно выявить несколько топовых процессов и посмотреть, что это за сессии.

  2 комментария to “Анализируем потребление CPU на Solaris”

  1. На многопроцессорной системе значение в этой колонке будет не больше, чем 100% / (количество CPU в системе) для одного процесса

    Может быть больше, если в процессе более одного нагруженного LWP

    • Спасибо за дельный комментарий!
      Судя по этой статье, а именно вот по этому абзацу:

      By default, one LWP is assigned to each process; additional LWPs are created if all the process's LWPs are sleeping and there are additional user threads that libthread can schedule.

      обычно на каждый процесс выделяется по одному LWP, и только в некоторых случаях их может быть больше. Видимо, подобная ситуация не является типичной, поэтому мне её наблюдать не приходилось.

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">

(обязательно)

(обязательно)