Hi,<br><br><div class="gmail_quote">On Fri, Jan 13, 2012 at 1:53 AM, Valentin V. Bartenev <span dir="ltr"><<a href="mailto:ne@vbart.ru" target="_blank">ne@vbart.ru</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

<div>On Thursday 12 January 2012 19:37:15 Joshua Zhu wrote:<br></div></blockquote><div><br>[snip] <br><br>Thank you very much for the review.<br><br></div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

<div>
</div>You use "ngx_ncpu" global variable and for Linux you set it by<br>
sysconf(_SC_NPROCESSORS_ONLN).<br>
<br>
On freeBSD and MacOS systems it set by sysctls(hw.ncpu), and it is equal<br>
to 1 on others.<br></blockquote><div><br>Setting CPU affinity is available on Linux systems only. Please correct me if I'm wrong.<br><br></div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">


<br>
Which means that your "auto" settings are very inaccurate. Sometimes the<br>
"worker_processes" directive will be equal to 2 * cores or more, sometimes<br>
it will be equal to 1, and if you're lucky, then it will be equal to real<br>
CPU cores.<br></blockquote><div><br>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.<br>
 </div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
So, I don't think that this patch makes life easier. In fact, it creates a<br>
false sense of optimal worker_processes setting. Even if ngx_ncpu would be<br>
always equal to real hardware cores number, it wouldn't be optimal for every<br>
use cases.<br></blockquote><div> <br>It's not 'optimal', but 'automatic'. This patch still supports setting worker processes and CPU affinities mannually as what the standard Nginx does ;)<br></div></div>
<br>Regards,<br clear="all"><br>-- <br>Joshua Zhu<br>Senior Software Engineer<br>Server Platforms Team at Taobao<br>