在 nginx 配置中,假设我将工作进程数设置为 4
假设机器有 4 个 CPU,每个 nginx 工作进程如何将自身绑定到单个 CPU?
答案1
将进程或线程限制到特定的 CPU 通常称为“CPU 亲和性”。
Nginx 使用sched_setaffinity()在 Linux 上,cpuset_setaffinity()在 FreeBSD 上。请参阅来源。
(在 Windows 上它可以使用设置进程亲和性掩码(),但由于某种原因却没有。)
明确设置工作进程的 CPU 亲和性并不总是必要的;Nginx 可能会通过这样做获得一些性能,但即使没有,操作系统调度程序仍然会自动或多或少均匀地在 CPU 之间分配负载(例如,如果您有 4 个繁忙的进程,它们仍然会在大多数情况下每个核心运行 1 个)。