Andrew Stewart
2012-Nov-19 10:17 UTC
Number of worker processes on hyperthreaded processor
Good morning, The tuning page says worker_processes should be at least the number of CPU cores on a dedicated server. In the case of hyper-threading, should this be the number of cores or the number of threads? For example the Intel Core i7-2600 Quadcore[1] has 4 cores and 8 threads. Would I start my worker_processes at 4 or 8? Finally, would the same apply to Nginx worker processes? Many thanks, Andrew Stewart [1] http://ark.intel.com/products/52213/Intel-Core-i7-2600-Processor-8M-Cache-up-to-3_80-GHz
Andrew Stewart <boss at airbladesoftware.com> wrote:> Good morning, > > The tuning page says worker_processes should be at least the number of > CPU cores on a dedicated server. In the case of hyper-threading, > should this be the number of cores or the number of threads? > > For example the Intel Core i7-2600 Quadcore[1] has 4 cores and 8 > threads. Would I start my worker_processes at 4 or 8?I''d start with the number of threads, since (AFAIK) your CPU implements HT well (unlike the P4 family). Modern OSes multitask well, so more worker processes will always work until it bumps into another limit (e.g. memory usage, DB connections, disk contention, ...) You may also want more workers to amortize GC/malloc/free costs anyways. As always, testing for your particular app is required.> Finally, would the same apply to Nginx worker processes?I usually run fewer nginx workers since I don''t configure much CPU/memory-intensive logic in nginx. However, if you''re dealing with large uploads or large responses/static files which cannot fit into memory, then I suggest having having enough nginx workers to match (or exceed) your storage device count.> [1] http://ark.intel.com/products/52213/Intel-Core-i7-2600-Processor-8M-Cache-up-to-3_80-GHz
Andrew Stewart
2012-Nov-19 11:54 UTC
Number of worker processes on hyperthreaded processor
Thank you ? very helpful. Yours, Andrew Stewart
2012/11/19 Eric Wong <normalperson at yhbt.net>:> Andrew Stewart <boss at airbladesoftware.com> wrote: >> Good morning, >> >> The tuning page says worker_processes should be at least the number of >> CPU cores on a dedicated server. In the case of hyper-threading, >> should this be the number of cores or the number of threads? >> >> For example the Intel Core i7-2600 Quadcore[1] has 4 cores and 8 >> threads. Would I start my worker_processes at 4 or 8? > > I''d start with the number of threads, since (AFAIK) your CPU implements > HT well (unlike the P4 family). Modern OSes multitask well, so more > worker processes will always work until it bumps into another limit > (e.g. memory usage, DB connections, disk contention, ...)Hi (in plain text this time, sorry), I have a follow up question about this. What about having a few different unicorns (1 for each Ruby/Rails app) on a singe server ; "at least the number of CPU cores" should count the total number of children processes, or only per app ? To be extremely clear ; if I have 2 quad-core CPUS with HT (eg. 16 cores), can I have 16 unicorn workers per app, or total ? Thanks PS : I''ve had my first unicorns in production for a few days, and I''m very happy about this wonderful piece of software. Thanks for making/maintaining it. -- J?r?my Lecour : http://jeremy.wordpress.com - http://twitter.com/jlecour