[PATCH 2 of 2] add support for setting worker processes and CPU affinity automatically

Joshua Zhu zhuzhaoyuan at gmail.com
Fri Jan 13 10:04:11 UTC 2012


On Fri, Jan 13, 2012 at 1:53 AM, Valentin V. Bartenev <ne at vbart.ru> wrote:

> On Thursday 12 January 2012 19:37:15 Joshua Zhu wrote:


Thank you very much for the review.

 You use "ngx_ncpu" global variable and for Linux you set it by
> On freeBSD and MacOS systems it set by sysctls(hw.ncpu), and it is equal
> to 1 on others.

Setting CPU affinity is available on Linux systems only. Please correct me
if I'm wrong.

> Which means that your "auto" settings are very inaccurate. Sometimes the
> "worker_processes" directive will be equal to 2 * cores or more, sometimes
> it will be equal to 1, and if you're lucky, then it will be equal to real
> CPU cores.

This is mostly caused by the hyper-threading feature of some CPUs. I don't
think this is an issue if hyper-threading is turned on. Sure we need to
find a better way to detect the number of CPUs on a system.

> So, I don't think that this patch makes life easier. In fact, it creates a
> false sense of optimal worker_processes setting. Even if ngx_ncpu would be
> always equal to real hardware cores number, it wouldn't be optimal for
> every
> use cases.

It's not 'optimal', but 'automatic'. This patch still supports setting
worker processes and CPU affinities mannually as what the standard Nginx
does ;)


Joshua Zhu
Senior Software Engineer
Server Platforms Team at Taobao
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20120113/ad96f235/attachment-0001.html>

More information about the nginx mailing list