Use sysconf to determine cacheline size at runtime.
Determine cacheline size at runtime if supported using sysconf(_SC_LEVEL1_DCACHE_LINESIZE). In case not supported, fallback to compile time defaults.
This commit is contained in:
parent
f91a2640b9
commit
c4fe79eb6e
2 changed files with 20 additions and 0 deletions
10
auto/unix
10
auto/unix
|
@ -964,6 +964,16 @@ ngx_feature_test="sysconf(_SC_NPROCESSORS_ONLN)"
|
||||||
. auto/feature
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
|
ngx_feature="sysconf(_SC_LEVEL1_DCACHE_LINESIZE)"
|
||||||
|
ngx_feature_name="NGX_HAVE_LEVEL1_DCACHE_LINESIZE"
|
||||||
|
ngx_feature_run=no
|
||||||
|
ngx_feature_incs=
|
||||||
|
ngx_feature_path=
|
||||||
|
ngx_feature_libs=
|
||||||
|
ngx_feature_test="sysconf(_SC_LEVEL1_DCACHE_LINESIZE)"
|
||||||
|
. auto/feature
|
||||||
|
|
||||||
|
|
||||||
ngx_feature="openat(), fstatat()"
|
ngx_feature="openat(), fstatat()"
|
||||||
ngx_feature_name="NGX_HAVE_OPENAT"
|
ngx_feature_name="NGX_HAVE_OPENAT"
|
||||||
ngx_feature_run=no
|
ngx_feature_run=no
|
||||||
|
|
|
@ -36,6 +36,9 @@ ngx_os_init(ngx_log_t *log)
|
||||||
{
|
{
|
||||||
ngx_time_t *tp;
|
ngx_time_t *tp;
|
||||||
ngx_uint_t n;
|
ngx_uint_t n;
|
||||||
|
#if (NGX_HAVE_LEVEL1_DCACHE_LINESIZE)
|
||||||
|
long size;
|
||||||
|
#endif
|
||||||
|
|
||||||
#if (NGX_HAVE_OS_SPECIFIC_INIT)
|
#if (NGX_HAVE_OS_SPECIFIC_INIT)
|
||||||
if (ngx_os_specific_init(log) != NGX_OK) {
|
if (ngx_os_specific_init(log) != NGX_OK) {
|
||||||
|
@ -62,6 +65,13 @@ ngx_os_init(ngx_log_t *log)
|
||||||
ngx_ncpu = 1;
|
ngx_ncpu = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (NGX_HAVE_LEVEL1_DCACHE_LINESIZE)
|
||||||
|
size = sysconf(_SC_LEVEL1_DCACHE_LINESIZE);
|
||||||
|
if (size > 0) {
|
||||||
|
ngx_cacheline_size = size;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
ngx_cpuinfo();
|
ngx_cpuinfo();
|
||||||
|
|
||||||
if (getrlimit(RLIMIT_NOFILE, &rlmt) == -1) {
|
if (getrlimit(RLIMIT_NOFILE, &rlmt) == -1) {
|
||||||
|
|
Loading…
Reference in a new issue