Назад | Перейти на главную страницу

Объяснение средней нагрузки на Solaris 10

Я понимаю среднюю нагрузку в Linux, но меня немного озадачивает средняя нагрузка на устаревшей машине Solaris 10, на которой работает мое приложение. Средние нагрузки кажутся невероятно высокими. Вот результат.

[netcool1 (root)/]$ uptime
 11:49am  up 580 day(s), 10:51,  3 users,  load average: 35.50, 38.54, 39.03
[netcool1 (root)/]$ uname -a
SunOS netcool1 5.10 Generic_139555-08 sun4u sparc SUNW,Sun-Fire-V245
[netcool1 (root)/]$ psrinfo -v
Status of virtual processor 0 as of: 01/11/2012 11:52:52
  on-line since 06/10/2010 01:58:29.
  The sparcv9 processor operates at 1504 MHz,
        and has a sparcv9 floating point processor.
Status of virtual processor 1 as of: 01/11/2012 11:52:52
  on-line since 06/10/2010 01:58:27.
  The sparcv9 processor operates at 1504 MHz,
        and has a sparcv9 floating point processor.
[netcool1 (root)/]$ 

Я не понимаю, как можно получить среднюю нагрузку 35 на двухпроцессорной системе. Мне это кажется невероятно высоким. Когда я просматриваю процессы с помощью top, система простаивает около 60-70%. Может кто-нибудь помочь объяснить это?

vmstat 10 6

kthr      memory            page            disk          faults      cpu
r b w   swap  free  re  mf pi po fr de sr rm s0 s2 --   in   sy   cs us sy id
3 0 0 8747008 5562704 865 1866 188 63 63 0 0 -0 9 40 0 762 8588 1495 26  8 66
0 0 0 7715256 5068016 73 23 5 17 17  0  0  0 110 66 0 1135 3888 9855 59 12 30
0 0 0 7717936 5069128 0  5  0  6  6  0  0  0 100 4  0 1071 3273 4191 62  6 32
0 0 0 7717952 5027912 0 11649 0 5 5  0  0  0 115 21 0 1017 26370 3260 32 15 53
102 1 0 7717952 4979088 0 1 0  0  0  0  0  0 112 4  0  900 3464 7683 15  9 76
0 0 0 7717952 4978936 0  1  0  0  0  0  0  0 105 4  0  886 3379 8698 19  9 72

В более ранней версии Solaris средняя нагрузка - это среднее количество выполняемых и работающих потоков. Другими словами, это количество потоков, выполняемых на ЦП, плюс количество потоков в очереди выполнения, ожидающих ЦП, усредненное по времени.

Итак ... ЦП, который завершил обработку 10 потоков за последнюю секунду ... и имел еще 5 ожидающих обработки, покажет 15.

Напротив...

Средние значения загрузки Linux рассчитываются как «перегрузка» ЦП ... то есть, сколько потоков ожидали процессорного времени в течение последнего периода времени, сколько было завершено. (в процентах)

Итак ... процессор, который завершил обработку 10 потоков за последнюю секунду ... и имел еще 5 ожидающих обработки, покажет 0,5

В Solaris 10 ... они немного изменили формулу ... и я не уверен на 100%, что это влечет за собой, но это должно быть довольно близко.

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

Вот подробное объяснение наблюдаемой статистики.

Средняя нагрузка сообщается uptime и другие команды - это плавающее среднее значение 1, 5, и 15 минут среднего количества потоков, ожидающих ЦП (очередь выполнения), плюс среднее количество потоков, фактически выполняемых на ЦП.

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

Размер очереди выполнения - это первый столбец вывода vmstat (r). Любое ненулевое значение здесь означает, что ваша система работала бы быстрее, если бы в ней было больше процессоров.

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

р b w   swap  free  re  mf pi po fr de sr rm s0 s2 --   in   sy   cs us sy мне бы
3 0 0 8747008 5562704 865 1866 188 63 63 0 0 -0 9 40 0 762 8588 1495 26  8 66

Все остальные образцы показывают пустую очередь выполнения, кроме второй последней, которая показывает колоссальное среднее количество 102 потоки:

102 1 0 7717952 4979088 0 1 0  0  0  0  0  0 112 4  0  900 3464 7683 15  9 76
                                                                          

Тем не менее, процессор 76% простоя в течение 10 секунд, что вас озадачивает.

Чтобы понять кажущееся несоответствие, нужно понимать 102 это средний значение для этого образца. Один из способов получить это - предположить, что очередь выполнения удерживала 1020 потоков в течение одной секунды, а затем была пустой в течение оставшихся 9 секунд. Также возможна любая другая комбинация, приводящая к этому числу 102, например, 204 потока в течение 5 секунд и ни одного потока в течение других 5 и так далее.

Однако из vmstat последний столбец, мы знаем, что ваша система была 76% простаивает в этот период. Правдоподобное значение, учитывающее среднюю очередь выполнения и простаивающий ЦП, будет 408 темы, конкурирующие во время 2,4 секунды (ЦП загружены на 100%) и во время 7,6 секунды ведущий (0% загруженного ЦП).

Теперь мы знаем, что была определенная конкуренция за ЦП. Если бы у вас было больше, чем 408 ЦП доступны вместо 2 и предполагая, что весь поток мог бы работать на полной скорости параллельно, вы бы уменьшили эти 2,5 секунды вокруг 6 мс. Это оказало бы сильное влияние на интерактивное приложение, но не так сильно на пакетное задание, так как оставшееся время в любом случае не получит выгоды от дополнительных процессоров.

Нижняя граница:

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

Необходимо учитывать компромисс, 6 мс вероятно, "слишком хорошо" для времени отклика и 408 CPU слишком дорого. Предполагая 60 мс это более разумная цель вокруг 40 процессоров может сработать и, конечно, если 2,5 с в порядке, ваша система работает правильно.

Как правило, лучше всего предполагать наличие разногласий, когда общий средний размер очереди выполнения превышает количество процессоров, здесь ~ 37 против 2. Определить, является ли это проблемой или нет, невозможно без анализа приложений и потоков. затронуты и как это влияет на работу платформы.

"Нагрузка" обычно представляет собой среднее значение первого столбца vmstat (столбец r, очередь выполнения). Первая загрузка усредняется за 1 минуту, вторая - за 5 минут, а последняя - за 15 минут. Как видите, в вашей системе vmstat в какой-то момент сообщил, что не менее 102 потоков проснулись для использования процессора (возможно, какое-то массово многопоточное приложение).

Но не беспокойтесь, поскольку этот всплеск рабочей нагрузки определенно обработан, и очередь выполнения вернулась к нулю при следующей проверке и продолжении. V245 имеет два процессора, каждый одноядерный и однопоточный, поэтому он может запускать два потока одновременно (т. Е. R = 2 означает, что потоку не нужно ждать процессорного времени).

Статистически это мог в среднем 35, но, как вы можете видеть, это значение очень мало говорит о реальном использовании системы. Пословица говорит: "Есть три вида лжи: ложь, проклятая ложь и статистика", и я думаю, что это хороший вывод.

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