gremlintv2
@gremlintv2

Один поток стабильно нагружен больше чем останльные, это нормально?

Постоянно сталкиваюсь с упреками мол: "у вас неравномерно распределена нагрузка по потокам, один поток выбивается из общего количества". Поток стабильно нагружен на 60-70%. Остальные 11 на 25-30%. 1)Как отследить. 2)Нормально ли это 3) в каких случаях это критично
Спасибо
  • Вопрос задан
  • 394 просмотра
Решения вопроса 1
kotomyava
@kotomyava
Системный администратор
Надеюсь, я правильно понял вопрос... =)

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

Например, большинство веб серверов каждый отдельный запрос выполняют только в одном потоке. То же касается и всяких скриптовых движков, СУБД и.т.п. Если запросов не много, то перекос будет статистически на одно произвольное ядро, потом два и.т.п, и они будет меняться. С ростом нагрузки картина должна выравниваться, и доходить до равномерно полной загрузки.

Если такого не происходит, то либо где-то не хватает потоков(их меньше чем ядер, а побочные процессы не могут загрузить остальные ядра), либо есть какой-нибудь cpu pining.
В вашем случае, например, может быть, что жадное до CPU приложение имеет вовсе один поток, а остальные не требуют много CPU.
Такая ситуация плоха тем, что не используется часть вычислительной мощности при нагрузке выше определённой, и производительность оказывается меньше чем могла бы...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Явно определяйте и указывайте в коде наиболее свободное ядро для исполнения потока.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы