[v2] Enable tunables by default

Message ID 1497463683-18434-1-git-send-email-siddhesh@sourceware.org
State New, archived
Headers

Commit Message

Siddhesh Poyarekar June 14, 2017, 6:08 p.m. UTC
  All of the major architectures are adopting tunables as a way to add
tuning to the library, from hwcap_mask for aarch64 to HLE for s390 and
ifunc and cache geometry for x86.  Given this adoption and the fact
that we don't want additional tuning knobs to be added outside of
tunables, it makes sense to enable tunables by default using this
trivial patch.

Smoke tested on x86 to ensure that tunables code was built without
specifying it as a configure flag.  I have kept it as --enabled and
not changed it to --disable since we want to still keep the option of
different kinds of front-ends for tunables.

	* configure.ac(--enable-tunables): Enable by default.
	* configure: Regenerate.
	* NEWS: Mention change.
	* manual/install.texi (enable-tunables): Adjust documentation.
	* INSTALL: Regenerate.
---
 INSTALL             | 18 ++++++++----------
 NEWS                |  3 +++
 configure           |  2 +-
 configure.ac        |  2 +-
 manual/install.texi | 13 ++++++-------
 5 files changed, 19 insertions(+), 19 deletions(-)
  

Comments

H.J. Lu June 14, 2017, 7:13 p.m. UTC | #1
On Wed, Jun 14, 2017 at 11:08 AM, Siddhesh Poyarekar
<siddhesh@sourceware.org> wrote:
> All of the major architectures are adopting tunables as a way to add
> tuning to the library, from hwcap_mask for aarch64 to HLE for s390 and
> ifunc and cache geometry for x86.  Given this adoption and the fact
> that we don't want additional tuning knobs to be added outside of
> tunables, it makes sense to enable tunables by default using this
> trivial patch.
>
> Smoke tested on x86 to ensure that tunables code was built without
> specifying it as a configure flag.  I have kept it as --enabled and
> not changed it to --disable since we want to still keep the option of
> different kinds of front-ends for tunables.
>
>         * configure.ac(--enable-tunables): Enable by default.
>         * configure: Regenerate.
>         * NEWS: Mention change.
>         * manual/install.texi (enable-tunables): Adjust documentation.
>         * INSTALL: Regenerate.
> ---
>  INSTALL             | 18 ++++++++----------
>  NEWS                |  3 +++
>  configure           |  2 +-
>  configure.ac        |  2 +-
>  manual/install.texi | 13 ++++++-------
>  5 files changed, 19 insertions(+), 19 deletions(-)
>
> diff --git a/INSTALL b/INSTALL
> index 920c4df..a2f5a40 100644
> --- a/INSTALL
> +++ b/INSTALL
> @@ -177,18 +177,16 @@ will be used, and CFLAGS sets optimization options for the compiler.
>
>  '--enable-tunables'
>       Tunables support allows additional library parameters to be
> -     customized at runtime.  This is an experimental feature and affects
> -     startup time and is thus disabled by default.  This option can take
> -     the following values:
> -
> -     'no'
> -          This is the default if the option is not passed to configure.
> -          This disables tunables.
> +     customized at runtime.  This feature is enabled by default.  This
> +     option can take the following values:
>
>       'yes'
> -          This is the default if the option is passed to configure.
> -          This enables tunables and selects the default frontend
> -          (currently 'valstring').
> +          This is the default if no option is passed to configure.  This
> +          enables tunables and selects the default frontend (currently
> +          'valstring').
> +
> +     'no'
> +          This option disables tunables.
>
>       'valstring'
>            This enables tunables and selects the 'valstring' frontend for
> diff --git a/NEWS b/NEWS
> index 991ee63..9afd6b2 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -91,6 +91,9 @@ Version 2.26
>    as atomic variables to try to implement Dekker's mutual exclusion
>    algorithm).
>
> +* The tunables feature is now enabled by default.  This allows users to tweak
> +  behavior of the GNU C Library using the GLIBC_TUNABLES environment variable.
> +
>  Security related changes:
>
>  * The DNS stub resolver limits the advertised UDP buffer size to 1200 bytes,
> diff --git a/configure b/configure
> index 422482f..f9067e2 100755
> --- a/configure
> +++ b/configure
> @@ -3724,7 +3724,7 @@ fi
>  if test "${enable_tunables+set}" = set; then :
>    enableval=$enable_tunables; have_tunables=$enableval
>  else
> -  have_tunables=no
> +  have_tunables=yes
>  fi
>
>
> diff --git a/configure.ac b/configure.ac
> index 7f43042..fa6a883 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -436,7 +436,7 @@ AC_ARG_ENABLE([tunables],
>               [AS_HELP_STRING([--enable-tunables],
>                [Enable tunables support. Known values are 'yes', 'no' and 'valstring'])],
>               [have_tunables=$enableval],
> -             [have_tunables=no])
> +             [have_tunables=yes])
>  AC_SUBST(have_tunables)
>  if test "$have_tunables" = yes; then
>    AC_DEFINE(HAVE_TUNABLES)
> diff --git a/manual/install.texi b/manual/install.texi
> index d39d2da..cbc9128 100644
> --- a/manual/install.texi
> +++ b/manual/install.texi
> @@ -208,18 +208,17 @@ Use this option to disable the vector math library.
>
>  @item --enable-tunables
>  Tunables support allows additional library parameters to be customized at
> -runtime.  This is an experimental feature and affects startup time and is thus
> -disabled by default.  This option can take the following values:
> +runtime.  This feature is enabled by default.  This option can take the
> +following values:
>
>  @table @code
> -@item no
> -This is the default if the option is not passed to configure. This disables
> -tunables.
> -
>  @item yes
> -This is the default if the option is passed to configure. This enables tunables
> +This is the default if no option is passed to configure. This enables tunables
>  and selects the default frontend (currently @samp{valstring}).
>
> +@item no
> +This option disables tunables.
> +
>  @item valstring
>  This enables tunables and selects the @samp{valstring} frontend for tunables.
>  This frontend allows users to specify tunables as a colon-separated list in a
> --
> 2.7.4
>

LGTM.  Thanks.
  
Szabolcs Nagy June 16, 2017, 4:12 p.m. UTC | #2
On 14/06/17 19:08, Siddhesh Poyarekar wrote:
> All of the major architectures are adopting tunables as a way to add
> tuning to the library, from hwcap_mask for aarch64 to HLE for s390 and
> ifunc and cache geometry for x86.  Given this adoption and the fact
> that we don't want additional tuning knobs to be added outside of
> tunables, it makes sense to enable tunables by default using this
> trivial patch.
> 
> Smoke tested on x86 to ensure that tunables code was built without
> specifying it as a configure flag.  I have kept it as --enabled and
> not changed it to --disable since we want to still keep the option of
> different kinds of front-ends for tunables.
> 
> 	* configure.ac(--enable-tunables): Enable by default.
> 	* configure: Regenerate.
> 	* NEWS: Mention change.
> 	* manual/install.texi (enable-tunables): Adjust documentation.
> 	* INSTALL: Regenerate.

note that gen-tunables.awk does not work with gawk 3.1.8
because it uses multi-dimensional arrays

so this broke the build for me on x86.
  

Patch

diff --git a/INSTALL b/INSTALL
index 920c4df..a2f5a40 100644
--- a/INSTALL
+++ b/INSTALL
@@ -177,18 +177,16 @@  will be used, and CFLAGS sets optimization options for the compiler.
 
 '--enable-tunables'
      Tunables support allows additional library parameters to be
-     customized at runtime.  This is an experimental feature and affects
-     startup time and is thus disabled by default.  This option can take
-     the following values:
-
-     'no'
-          This is the default if the option is not passed to configure.
-          This disables tunables.
+     customized at runtime.  This feature is enabled by default.  This
+     option can take the following values:
 
      'yes'
-          This is the default if the option is passed to configure.
-          This enables tunables and selects the default frontend
-          (currently 'valstring').
+          This is the default if no option is passed to configure.  This
+          enables tunables and selects the default frontend (currently
+          'valstring').
+
+     'no'
+          This option disables tunables.
 
      'valstring'
           This enables tunables and selects the 'valstring' frontend for
diff --git a/NEWS b/NEWS
index 991ee63..9afd6b2 100644
--- a/NEWS
+++ b/NEWS
@@ -91,6 +91,9 @@  Version 2.26
   as atomic variables to try to implement Dekker's mutual exclusion
   algorithm).
 
+* The tunables feature is now enabled by default.  This allows users to tweak
+  behavior of the GNU C Library using the GLIBC_TUNABLES environment variable.
+
 Security related changes:
 
 * The DNS stub resolver limits the advertised UDP buffer size to 1200 bytes,
diff --git a/configure b/configure
index 422482f..f9067e2 100755
--- a/configure
+++ b/configure
@@ -3724,7 +3724,7 @@  fi
 if test "${enable_tunables+set}" = set; then :
   enableval=$enable_tunables; have_tunables=$enableval
 else
-  have_tunables=no
+  have_tunables=yes
 fi
 
 
diff --git a/configure.ac b/configure.ac
index 7f43042..fa6a883 100644
--- a/configure.ac
+++ b/configure.ac
@@ -436,7 +436,7 @@  AC_ARG_ENABLE([tunables],
 	      [AS_HELP_STRING([--enable-tunables],
 	       [Enable tunables support. Known values are 'yes', 'no' and 'valstring'])],
 	      [have_tunables=$enableval],
-	      [have_tunables=no])
+	      [have_tunables=yes])
 AC_SUBST(have_tunables)
 if test "$have_tunables" = yes; then
   AC_DEFINE(HAVE_TUNABLES)
diff --git a/manual/install.texi b/manual/install.texi
index d39d2da..cbc9128 100644
--- a/manual/install.texi
+++ b/manual/install.texi
@@ -208,18 +208,17 @@  Use this option to disable the vector math library.
 
 @item --enable-tunables
 Tunables support allows additional library parameters to be customized at
-runtime.  This is an experimental feature and affects startup time and is thus
-disabled by default.  This option can take the following values:
+runtime.  This feature is enabled by default.  This option can take the
+following values:
 
 @table @code
-@item no
-This is the default if the option is not passed to configure. This disables
-tunables.
-
 @item yes
-This is the default if the option is passed to configure. This enables tunables
+This is the default if no option is passed to configure. This enables tunables
 and selects the default frontend (currently @samp{valstring}).
 
+@item no
+This option disables tunables.
+
 @item valstring
 This enables tunables and selects the @samp{valstring} frontend for tunables.
 This frontend allows users to specify tunables as a colon-separated list in a