Comments 25
the best story what i have ever read about LA.
Спасибо за подробный разбор
Спасибо!
Как жаль, что не могу я плюсовать
статью… Отдал бы все плюсы на свете...
Огромное Спасибо Переводчику!
Спасибо!
Кто то в mail.ru не выдержал видимо, постоянно спрашивая у всех про LA и не получая ответа )))
Спасибо за проделанную работу! Меня бы не хватило на разбор десятков тысяч коммитов/писем/расслок )
Матиас не очень то умный…
«Мы меняем диск на более медленный и система становится быстрее. Это не логично.»
WTF???
Мы меняем диск и у нас ботлнек с процессора уезжает на диск. И старая метрика это прекрасно показывала.
А новая не показывает ничего вообще.
«Мы меняем диск на более медленный и система становится быстрее. Это не логично.»
WTF???
Мы меняем диск и у нас ботлнек с процессора уезжает на диск. И старая метрика это прекрасно показывала.
А новая не показывает ничего вообще.
Т.е. по вашему это логично видеть LA 0.5 и ощущать дикие тормоза? (например из-за большой нагрузки на HDD)
Конечно. Этот прямым текстом говорит: есть проблема, но она не в процессоре.
А что вам сейчас то в линуксе скажет LA 10, например? Вы и без анализа LA увидите что всё тормозит.
А что вам сейчас то в линуксе скажет LA 10, например? Вы и без анализа LA увидите что всё тормозит.
Логично. По крайней мере если рядом нет столь же доступной метрики средней нагрузки на процессор.
iotop / iostat ответят про диски
Спасибо!
Дополню — в FreeBSD два планировщика (и алгоритма расчета нагрузки): BSD4.4 scheduler (старый, без поддержки HT и пр., но его (вроде) все еще можно использовать в кастомно собранном ядре) и новый — ULE scheduler (с 5-ой версии). Так вот, в новой версии счетчик выглядит так:
int tdq_sysload; /* For loadavg, !ITHD load. */
Коммент к функцкии, увеличивающей это счетчик:
* Load is maintained for all threads RUNNING and ON_RUNQ.
И действительно, можно найти проверку:
KASSERT((TD_CAN_RUN(td) || TD_IS_RUNNING(td))
Теперь нужно разобраться и понять что это за два состояния.
TD_IS_RUNNING поток в состоянии TDS_RUNNING, т.е. поток запущенный в данный момент на каком-либо ядре.
TD_CAN_RUN — поток в состоянии TDS_CAN_RUN. Не вдаваясь в подробности — это поток готовый к выполнению.
Из чего следует что правка в ядре линукса в 1993 году обошла FreeBSD стороной и он считает только загрузку процессора.
Дополню — в FreeBSD два планировщика (и алгоритма расчета нагрузки): BSD4.4 scheduler (старый, без поддержки HT и пр., но его (вроде) все еще можно использовать в кастомно собранном ядре) и новый — ULE scheduler (с 5-ой версии). Так вот, в новой версии счетчик выглядит так:
int tdq_sysload; /* For loadavg, !ITHD load. */
Коммент к функцкии, увеличивающей это счетчик:
* Load is maintained for all threads RUNNING and ON_RUNQ.
И действительно, можно найти проверку:
KASSERT((TD_CAN_RUN(td) || TD_IS_RUNNING(td))
Теперь нужно разобраться и понять что это за два состояния.
TD_IS_RUNNING поток в состоянии TDS_RUNNING, т.е. поток запущенный в данный момент на каком-либо ядре.
TD_CAN_RUN — поток в состоянии TDS_CAN_RUN. Не вдаваясь в подробности — это поток готовый к выполнению.
Из чего следует что правка в ядре линукса в 1993 году обошла FreeBSD стороной и он считает только загрузку процессора.
Спасибо автору! Труд проделан колоссальный. Мог бы плюсовать, поставил бы плюс!
ПФФ.
то есть в линуксе невозможно сделать что-то типа полноценного виндового диспетчера задач (хотя бы подобие) на пользовательском уровне без вмешательства в код ОС? В винде уже 10 лет все работает и считается раздельно…
то есть в линуксе невозможно сделать что-то типа полноценного виндового диспетчера задач (хотя бы подобие) на пользовательском уровне без вмешательства в код ОС? В винде уже 10 лет все работает и считается раздельно…
LA demystified но таки хотя бы примеры привели что можно детально посмотреть что происходит (происходило) в системе используя старый добрый sysstat sar. Но статья респект автору.
Есть подозрение, что на русском это называется «Экспоненциальное скользящее среднее».
Константы из кода ядра есть части сглаживающего коэффициента:
en.wikipedia.org/wiki/Moving_average#Application_to_measuring_computer_performance
Константы из кода ядра есть части сглаживающего коэффициента:
en.wikipedia.org/wiki/Moving_average#Application_to_measuring_computer_performance
«Изменения в последнем официальном релизе (p13) слишком многочисленны, чтобы их перечислять (или даже вспомнить)...» — Линус
В цитатник!
Собстевенно, вся суть статьи:
"Вместо того, чтобы заниматься отладкой средних значений нагрузки, я обычно переключаюсь на другие метрики. Об этом мы поговорим ближе к концу статьи, в главе «Более подходящие метрики». "
именно так, все так делают
Sign up to leave a comment.
Load Average в Linux: разгадка тайны