akalend
@akalend
программирую

Как расчитать оптимальное количество воркеров для максимальнойой производительности при заданном железе?

На 4х (или n — процессоров) процессорном железе крутится некоторое количество воркеров — демонов.


Нужно найти оптимальное количество воркеров, если воркер обслуживает за один промежуток времени только одно соединение ( однопоточный демон на блокируемых сокетах)


хочется понять подход,
  • Вопрос задан
  • 5883 просмотра
Пригласить эксперта
Ответы на вопрос 4
TrueDrago
@TrueDrago
Судя по книге Джона Оллспоу Искусство планирования мощностей, нужно изначально задать n-е кол-во воркеров (напр. из какого-то гайда по настройке) и плавно попробовать их поувеличивать-поуменьшать, наблюдая за поведением основных метрик, напр. памяти, проца и дискового I\O.
Вообще очень советую эту книгу прочесть, подходы к планированию мощностей точно поймёте.
Ответ написан
@zuborg
Если воркер из реального затраченного времени на обработку запроса использует в среднем только 25% cpu — значит воркеров стоит запускать в четыре раза больше чем кол-во ядер. Плюс-минус. Обычно ещё есть дополнительная нагрузка, типа баз данных, поэтому можно выставить немного меньшее значение.
Для воркеров, которые эффективно используют cpu, не блокируясь в процессе работы, соотв надо выставить просто кол-во ядер.
Ответ написан
@niko83
экспериментируя с кол-вом uWSGI воркеров на Python(Django) приложении выяснил что оптимальное кол-во воркеров (для моего приложения) ранво кол-ву ядер.

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

Другими словами мой подход — эксперимент. Берём что-то среднее рекомендуемое и плавно пробуем акуратно менять, наблюдам, анализируем делаем выводы, принимаем решение.
Ответ написан
alekciy
@alekciy
Вёбных дел мастер
Помниться Сысоев в рассылки по nginx упоминал, что количество воркеров можно выставлять равным количеству ядер, но увлекаться этим не стоит, т.к. из-за перемещения в процессе работы по ядрам эффективность может падать. Поэтому в первом приближении стоит все же ориентироваться на количество ядер.
Ответ написан
Ваш ответ на вопрос

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

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