@Eddik

Как убрать задержку перегруженного ЦП?

Заметил, что если приложение выполняет некий непрерывный цикл без пауз, загружая таким образом все ядро, то одна итерация этого цикла всреднем выполняется дольше, чем если в цикле ставиться пауза, или итерация происходит по сигналу. По всей видимости, ядро захлебывается, создавая большие задержки, которые влияют на среднюю. Можно ли как то с этим бороться? Вариант уставновка sleep(1) не желателен, поскольку такая пауза слишком велика.
  • Вопрос задан
  • 459 просмотров
Пригласить эксперта
Ответы на вопрос 1
ifaustrue
@ifaustrue
Пишу интересное в теллеграмм канале @cooladmin
Ээммм, пишете очень странное. Почитайте про то как работает планировщик операционной системы и как он распределяет процессорное время.

Сами подумайте как такое может быть? Вот у вас есть процесс, он использует ресурсы железа которые ему выделела ОС. В каждый транк времени ОС выделяет какому то процессу все ресурсы, чем больше транков именно этому процессору достаётся - тем больше ресурсов железа он может утилизировать, тем быстрее выполнится. Транк закончился, ОС сбрасывает состояние процесса в регистры и отдаёт процессор и другие ресурсы следующему процессу и так по кругу. Как в такое логике пауза в работе ему поможет?

Такое возможно только в ситуации, когда какой-либо используемый этим процессом компонент деградирует в производительности при максимальной загрузке. Такое возможно с диском, остальные части системы обычно работают одинаково вне зависимости от нагрузки (сколько процессор не используй он работает, сколько оперативной памяти не займи она работает, сеть отдаёт всё что есть и тыды).
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы