Хватает ли нам процессорных мощностей?
05.12.2008
Как разобраться, хватает ли нам процессорных мощностей и где тот параметр, который нам укажет, что процессора не тянут те задачи, которые мы им вешаем?
В однопроцессорных системах это просто — команда 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 тормоза на всех задачах заметны реально.
05.02.2009 в 14:58
То есть отношение длина_очереди/число_процессоров однозначно определяет латентность и производительность системы?
Но ведь при том же соотношении, чем больше процессоров, тем больше вероятность того, что в следующий момент времени хотя бы один из процессоров будет свободен.
Может в «Шкале субъективные показателей» сделать раскладку для количества процессоров?
05.02.2009 в 18:29
> То есть отношение длина_очереди/число_процессоров однозначно определяет латентность и производительность системы?
однозначно нет. на процессорную производительность влияет еще масса факторов (ну например, большое количество форков в системе создает большую очередь, но производительность системы падает незначительно), так же возможные задержки в устройствах ввода-вывода могут притормаживать, процессы реального времени ну и т.д. Но в общем случае, можно придерживаться вышеприведенных значений.
> Но ведь при том же соотношении, чем больше процессоров, тем больше вероятность того, что в следующий момент времени хотя бы один из процессоров будет свободен.
Не понял. (Прочел еще раз — не понял все равно). Процессы работают одновременно. На всех процессорах. Если у нас больше процессоров, то большее кол-во процессов они смогут переварить за тоже время.
> Может в “Шкале субъективные показателей” сделать раскладку для количества процессоров?
Судя по данным, полученным опытным путем — зависимость практически линейная (ну до 24-32 ядер ). При большем кол-ве ядер можно ввести корректирующий коэфициент ;) Для этого в Hi-End системах, типа sun 25k на аппаратном уровне начинают использовать всякие хитрые механизмы, чтобы этого избежать.