worker_cpu_affinity

Директива `worker_cpu_affinity` привязывает worker-процессы NGINX к конкретным ядрам CPU для повышения производительности. — NGINX Core

worker_cpu_affinity
main
Синтаксисworker_cpu_affinity mask | cpus;
По умолчаниюnone
Контекстmain
МодульNGINX Core
Аргументы1+

Описание

Директива `worker_cpu_affinity` используется в основном контексте для указания, на каких ядрах CPU может выполняться worker-процесс. Это помогает оптимизировать производительность, гарантируя, что worker-процесс работает на заданных ядрах и тем самым избегая переключения контекста и промахов кэша, которые могут возникать при миграции процессов между ядрами. Директива принимает один или несколько аргументов, задающих привязку к ядрам CPU. Это особенно полезно на системах с несколькими ядрами CPU, позволяя максимально использовать ресурсы и минимизировать задержки. Параметры для этой директивы задаются в формате списка CPU, которые могут быть указаны в разных формах, включая одноядерные спецификации (например, '0'), диапазонные спецификации (например, '0-3') или их комбинации. Каждое добавленное значение обозначает допустимые ядра CPU, которые соответствующий worker может использовать. При определении нескольких worker-процессов ядра CPU могут быть распределены между ними, что дополнительно улучшает параллельную обработку. Такая конфигурация помогает поддерживать производительность при высокой нагрузке и может приводить к более предсказуемому времени отклика. Внедрение `worker_cpu_affinity` может потребовать некоторых экспериментов для определения оптимальной конфигурации в зависимости от конкретной нагрузки и архитектуры оборудования. Тщательный мониторинг производительности системы должен направлять эти решения, так как эффективность привязки к ядрам может варьироваться в зависимости от характера нагрузки и числа доступных ядер CPU.

Пример конфига

worker_cpu_affinity auto;  
# Example with specific core assignment for 4 workers:  
worker_cpu_affinity  0001 0010 0100 1000;

Указание слишком большого числа ядер CPU может привести к снижению производительности из-за неправильного распределения нагрузки.

Убедитесь, что количество указанных CPU не превышает количество доступных логических ядер в системе.

Некорректное форматирование CPU mask может привести к ошибкам запуска NGINX.