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

В однопроцессорных системах это просто — команда uptime. А что делать, если у нас многопроцессорный многоядерный сервер?
В качестве отправной точки можно использовать отношение «очереди ожидающих процессов» к «количеству процессорных ядер«. Если рассматривать работу системы в течении дня, то конечно это значение будет меняться.
Ну и в зависимости от задач, нужно выбрать период для анализа — например, нам нужно обосновать покупку нового сервера — выбираем самый загруженный час работы сервера, и снимаем показания каждые 2 минуты ;) Ну и потом график на стол начальству…

Шкала субъективные показателей:

  • < 0.5 Cистема не загружена (читай — такие бабки вбухали, а сервак просто греет воздух :). Ну а так — хорошо.
  • 0.5-0.8 Отлично, процессора нагружены и есть запас по мощности
  • 0.8-1 Система работает без запаса, иногда на пределе. Оценка — удовл.
  • 1-1.2 Ну уже начинаются заметные тормоза. Неуд.
  • > 1.2 Система тупит конкретно. Вызываем родителей в школу…

Например:
# uptime
12:28pm up 82 day(s), 20:07, 16 users, load average: 5.74, 5.79, 5.81
# /usr/sbin/psrinfo | wc -l
8

Итак, отношение 5.74/8=0.71. В системе все в порядке, еще есть запас.

ЗЫ Значение 100% занятости процессоров (снимаемое, например через vmstat), не является показателем перегрузки системы. Реально, процессора могут быть загружены на 100%, а очередь процессов — мала. То есть, все процессы, успевают обрабатываться — тормозов по системе нет. А вот при показателе больше 1.2 тормоза на всех задачах заметны реально.

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru МоёМесто.ru Mister Wong Яндекс Закладки

Комментарии (2) на запись “Хватает ли нам процессорных мощностей?”

  1. mrbungle пишет:

    То есть отношение длина_очереди/число_процессоров однозначно определяет латентность и производительность системы?

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

    Может в «Шкале субъективные показателей» сделать раскладку для количества процессоров?

  2. ikorolev пишет:

    > То есть отношение длина_очереди/число_процессоров однозначно определяет латентность и производительность системы?

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

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

    > Может в “Шкале субъективные показателей” сделать раскладку для количества процессоров?

    Судя по данным, полученным опытным путем — зависимость практически линейная (ну до 24-32 ядер ). При большем кол-ве ядер можно ввести корректирующий коэфициент ;) Для этого в Hi-End системах, типа sun 25k на аппаратном уровне начинают использовать всякие хитрые механизмы, чтобы этого избежать.