Почему время ожидания намного больше, если мой процесс простаивает между событиями?

У меня есть процесс, который заблокирован на сокете. Когда ввод становится доступным в сокете, процесс декодирует ввод, и большую часть времени делает только обновление структуры памяти. Периодически входные данные таковы, что запускается более сложный анализ, что в конечном итоге приводит к исходящему сообщению по другому соединению. Я хотел бы минимизировать задержку в этом более позднем случае, то есть минимизировать время между получением и отправкой. Что я заметил, так это то, что числа задержек в 2 раза хуже, когда увеличивается время между интересными событиями. К чему это можно отнести и как я могу улучшить это? Я пытался зарезервировать процессор для моего процесса, но я не вижу значительного улучшения.

0

Решение

Вы должны попытаться «довести» процесс до отрицательного значения. Я не знаю планировщика Linux подробно, но нормальная политика состоит в том, чтобы уменьшить временной интервал (иногда квантовый), когда процесс не может использовать свой слайс вверх и наоборот. Это называется многоуровневой политикой обратной связи. В вашем случае получение множества быстро обрабатываемых событий, вероятно, дает процессу очень короткий промежуток времени. Когда происходит «значительное» событие, ему придется пройти путь до более длинного среза через несколько обменов контекста. Установка «хорошего» значения достаточно высоко, вероятно, даст ему тот отрезок времени, который ему необходим.

К сожалению, «отрицательная любезность» требует привилегий суперпользователя в большинстве систем.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]