summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2012-03-05 12:10:09 +0000
committerMaxim Dounin <mdounin@mdounin.ru>2012-03-05 12:10:09 +0000
commit9ec45d5f6fde95be4a19669d631044cfe7b52cb6 (patch)
tree20ea7e72b5192fce5e1544f8fe9ab55cdc6cf832
parent658587e7d250381a95f32f45390fa880b00a4f5e (diff)
downloadnginx-9ec45d5f6fde95be4a19669d631044cfe7b52cb6.tar.gz
nginx-9ec45d5f6fde95be4a19669d631044cfe7b52cb6.tar.bz2
Merge of r4460: ngx_ncpu detection for most *nix platforms.
This inaccurate detection by using sysconf(_SC_NPROCESSORS_ONLN) can improve usage of the mutex lock optimization on multicore systems.
-rwxr-xr-xauto/unix10
-rw-r--r--src/os/unix/ngx_posix_init.c6
2 files changed, 16 insertions, 0 deletions
diff --git a/auto/unix b/auto/unix
index 4988072f1..78f82593d 100755
--- a/auto/unix
+++ b/auto/unix
@@ -707,3 +707,13 @@ ngx_feature_path=
ngx_feature_libs=
ngx_feature_test="struct dirent dir; dir.d_type = DT_REG"
. auto/feature
+
+
+ngx_feature="sysconf(_SC_NPROCESSORS_ONLN)"
+ngx_feature_name="NGX_HAVE_SC_NPROCESSORS_ONLN"
+ngx_feature_run=no
+ngx_feature_incs=
+ngx_feature_path=
+ngx_feature_libs=
+ngx_feature_test="sysconf(_SC_NPROCESSORS_ONLN)"
+. auto/feature
diff --git a/src/os/unix/ngx_posix_init.c b/src/os/unix/ngx_posix_init.c
index 02642bd7c..eea65a903 100644
--- a/src/os/unix/ngx_posix_init.c
+++ b/src/os/unix/ngx_posix_init.c
@@ -47,7 +47,13 @@ ngx_os_init(ngx_log_t *log)
for (n = ngx_pagesize; n >>= 1; ngx_pagesize_shift++) { /* void */ }
+#if (NGX_HAVE_SC_NPROCESSORS_ONLN)
if (ngx_ncpu == 0) {
+ ngx_ncpu = sysconf(_SC_NPROCESSORS_ONLN);
+ }
+#endif
+
+ if (ngx_ncpu < 1) {
ngx_ncpu = 1;
}