Hello! On Wed, Apr 25, 2018 at 12:47:13AM +0800, agile6v wrote:
> # HG changeset patch > # User Agile6v <agil...@agile6v.com> > # Date 1524585905 -28800 > # Wed Apr 25 00:05:05 2018 +0800 > # Node ID 89793df28d1bcf2baf00e389e6806d32d7435886 > # Parent 7c614ef3c6ea330c62630d5065f961a27d0f82cd > The auto parameter of the worker_processes supports to detect the container > environment. > > > Docker mounts cgroup information into container starting with version 1.8, > so it is possible to determine the appropriate number of CPUs based on the > cgroup information in the container. Refer to JDK related implementation: > https://bugs.openjdk.java.net/browse/JDK-8146115 > > > diff -r 7c614ef3c6ea -r 89793df28d1b auto/sources > --- a/auto/sources Wed Apr 18 16:11:41 2018 +0300 > +++ b/auto/sources Wed Apr 25 00:05:05 2018 +0800 > @@ -192,8 +192,8 @@ > FREEBSD_SRCS=src/os/unix/ngx_freebsd_init.c > FREEBSD_SENDFILE_SRCS=src/os/unix/ngx_freebsd_sendfile_chain.c > > -LINUX_DEPS="src/os/unix/ngx_linux_config.h src/os/unix/ngx_linux.h" > -LINUX_SRCS=src/os/unix/ngx_linux_init.c > +LINUX_DEPS="src/os/unix/ngx_linux_config.h src/os/unix/ngx_linux.h > src/os/unix/ngx_container.h" > +LINUX_SRCS="src/os/unix/ngx_linux_init.c src/os/unix/ngx_container.c" > LINUX_SENDFILE_SRCS=src/os/unix/ngx_linux_sendfile_chain.c > > > diff -r 7c614ef3c6ea -r 89793df28d1b src/os/unix/ngx_container.c > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/src/os/unix/ngx_container.c Wed Apr 25 00:05:05 2018 +0800 > @@ -0,0 +1,418 @@ > + > +/* > + * Copyright (C) agile6v > + * Copyright (C) Xiaomi, Inc. > + */ > + > +#include <ngx_config.h> > +#include <ngx_core.h> > + > +#define NGX_BUFFER_SIZE 8192 > +#define PER_CPU_SHARES 1024 > + > +typedef struct { > + ngx_str_t root; > + ngx_str_t path; > + ngx_str_t mount_point; > +} cgroup_subsystem_info; > + > +static cgroup_subsystem_info cpu_subsystem; > + > +static ngx_str_t proc_cgroup_file = ngx_string("/proc/self/cgroup"); > +static ngx_str_t proc_mount_file = ngx_string("/proc/self/mountinfo"); > +static ngx_str_t cpu_cfs_period = ngx_string("/cpu.cfs_period_us"); > +static ngx_str_t cpu_cfs_quota = ngx_string("/cpu.cfs_quota_us"); > +static ngx_str_t cpu_cfs_shares = ngx_string("/cpu.shares"); [...] 400+ lines of code to obtain a number which is expected to be directly available via the sysconf(_SC_NPROCESSORS_ONLN) call might be a bit too many. Thank you for your effort, but no. -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel