glibc/sysdeps/x86
Patrick McGehearty d3c5702747 Reversing calculation of __x86_shared_non_temporal_threshold
The __x86_shared_non_temporal_threshold determines when memcpy on x86
uses non_temporal stores to avoid pushing other data out of the last
level cache.

This patch proposes to revert the calculation change made by H.J. Lu's
patch of June 2, 2017.

H.J. Lu's patch selected a threshold suitable for a single thread
getting maximum performance. It was tuned using the single threaded
large memcpy micro benchmark on an 8 core processor. The last change
changes the threshold from using 3/4 of one thread's share of the
cache to using 3/4 of the entire cache of a multi-threaded system
before switching to non-temporal stores. Multi-threaded systems with
more than a few threads are server-class and typically have many
active threads. If one thread consumes 3/4 of the available cache for
all threads, it will cause other active threads to have data removed
from the cache. Two examples show the range of the effect. John
McCalpin's widely parallel Stream benchmark, which runs in parallel
and fetches data sequentially, saw a 20% slowdown with this patch on
an internal system test of 128 threads. This regression was discovered
when comparing OL8 performance to OL7.  An example that compares
normal stores to non-temporal stores may be found at
https://vgatherps.github.io/2018-09-02-nontemporal/.  A simple test
shows performance loss of 400 to 500% due to a failure to use
nontemporal stores. These performance losses are most likely to occur
when the system load is heaviest and good performance is critical.

The tunable x86_non_temporal_threshold can be used to override the
default for the knowledgable user who really wants maximum cache
allocation to a single thread in a multi-threaded system.
The manual entry for the tunable has been expanded to provide
more information about its purpose.

	modified: sysdeps/x86/cacheinfo.c
	modified: manual/tunables.texi
2020-09-28 22:10:39 +00:00
..
bits semaphore: consolidate arch headers into a generic one 2020-05-06 13:07:12 -07:00
fpu i386: Use builtin sqrtl 2020-06-22 11:09:49 -03:00
include x86: Install <sys/platform/x86.h> [BZ #26124] 2020-09-11 17:20:52 -07:00
nptl Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
sys/platform <sys/platform/x86.h>: Add Intel Key Locker support 2020-09-16 05:56:10 -07:00
__longjmp_cancel.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
atomic-machine.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
cacheinfo.c Reversing calculation of __x86_shared_non_temporal_threshold 2020-09-28 22:10:39 +00:00
cet-control.h x86: Move CET control to _dl_x86_feature_control [BZ #25887] 2020-05-18 06:15:02 -07:00
check-cet.awk Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
configure x86: Add --enable-cet=permissive 2020-05-18 08:38:53 -07:00
configure.ac x86: Add --enable-cet=permissive 2020-05-18 08:38:53 -07:00
cpu-features-offsets.sym x86: Cleanup cpu-features-offsets.sym 2018-08-03 06:42:09 -07:00
cpu-features.c x86: Use HAS_CPU_FEATURE with IBT and SHSTK [BZ #26625] 2020-09-17 05:18:36 -07:00
cpu-tunables.c x86: Support usable check for all CPU features 2020-07-13 06:05:16 -07:00
dl-cet.c x86: Use HAS_CPU_FEATURE with IBT and SHSTK [BZ #26625] 2020-09-17 05:18:36 -07:00
dl-get-cpu-features.c x86: Install <sys/platform/x86.h> [BZ #26124] 2020-09-11 17:20:52 -07:00
dl-hwcap.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
dl-lookupcfg.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
dl-procinfo.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
dl-procinfo.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
dl-procruntime.c x86: Add --enable-cet=permissive 2020-05-18 08:38:53 -07:00
dl-prop.h rtld: Clean up PT_NOTE and add PT_GNU_PROPERTY handling 2020-07-08 14:28:53 +01:00
dl-tunables.list x86: Add thresholds for "rep movsb/stosb" to tunables 2020-07-06 11:48:42 -07:00
elf-initfini.h Introduce <elf-initfini.h> and ELF_INITFINI for all architectures 2020-02-18 15:12:25 +01:00
elide.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
float128-abi.h Add float128 support for x86_64, x86. 2017-06-26 22:02:24 +00:00
fpu_control.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
hp-timing.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
init-arch.h x86: Remove __ASSEMBLER__ check in init-arch.h 2020-07-11 10:03:05 -07:00
jmp_buf-ssp.sym x86: Support shadow stack pointer in setjmp/longjmp 2018-07-14 05:59:53 -07:00
ldbl2mpn.c x86: Harden printf against non-normal long double values (bug 26649) 2020-09-22 19:07:49 +02:00
ldsodefs.h x86: Move CET control to _dl_x86_feature_control [BZ #25887] 2020-05-18 06:15:02 -07:00
libc-start.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
libc-start.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
link_map.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
linkmap.h
longjmp.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
Makeconfig Add _Float64x function aliases. 2017-11-27 14:16:47 +00:00
Makefile x86: Harden printf against non-normal long double values (bug 26649) 2020-09-22 19:07:49 +02:00
string_private.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
sysdep.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tininess.h
tst-cet-legacy-1.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-cet-legacy-1a.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-cet-legacy-2.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-cet-legacy-2a.c x86/CET: Add tests with legacy non-CET shared objects 2018-07-25 04:47:05 -07:00
tst-cet-legacy-3.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-cet-legacy-4.c x86: Remove ARCH_CET_LEGACY_BITMAP [BZ #25397] 2020-03-18 04:35:54 -07:00
tst-cet-legacy-4a.c x86/CET: Add tests with legacy non-CET shared objects 2018-07-25 04:47:05 -07:00
tst-cet-legacy-4b.c x86/CET: Add tests with legacy non-CET shared objects 2018-07-25 04:47:05 -07:00
tst-cet-legacy-4c.c x86/CET: Add tests with legacy non-CET shared objects 2018-07-25 04:47:05 -07:00
tst-cet-legacy-5.c x86: Add --enable-cet=permissive 2020-05-18 08:38:53 -07:00
tst-cet-legacy-5a.c Call _dl_open_check after relocation [BZ #24259] 2019-07-01 12:23:22 -07:00
tst-cet-legacy-5b.c Call _dl_open_check after relocation [BZ #24259] 2019-07-01 12:23:22 -07:00
tst-cet-legacy-6.c x86: Add --enable-cet=permissive 2020-05-18 08:38:53 -07:00
tst-cet-legacy-6a.c Call _dl_open_check after relocation [BZ #24259] 2019-07-01 12:23:22 -07:00
tst-cet-legacy-6b.c Call _dl_open_check after relocation [BZ #24259] 2019-07-01 12:23:22 -07:00
tst-cet-legacy-7.c x86: Remove ARCH_CET_LEGACY_BITMAP [BZ #25397] 2020-03-18 04:35:54 -07:00
tst-cet-legacy-8.c x86: Remove ARCH_CET_LEGACY_BITMAP [BZ #25397] 2020-03-18 04:35:54 -07:00
tst-cet-legacy-mod-1.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-cet-legacy-mod-2.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-cet-legacy-mod-4.c x86/CET: Add tests with legacy non-CET shared objects 2018-07-25 04:47:05 -07:00
tst-cet-legacy-mod-5.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-cet-legacy-mod-5a.c Call _dl_open_check after relocation [BZ #24259] 2019-07-01 12:23:22 -07:00
tst-cet-legacy-mod-5b.c Call _dl_open_check after relocation [BZ #24259] 2019-07-01 12:23:22 -07:00
tst-cet-legacy-mod-5c.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-cet-legacy-mod-6.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-cet-legacy-mod-6a.c Call _dl_open_check after relocation [BZ #24259] 2019-07-01 12:23:22 -07:00
tst-cet-legacy-mod-6b.c Call _dl_open_check after relocation [BZ #24259] 2019-07-01 12:23:22 -07:00
tst-cet-legacy-mod-6c.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-cet-legacy-mod-6d.c Call _dl_open_check after relocation [BZ #24259] 2019-07-01 12:23:22 -07:00
tst-cpu-features-cpuinfo.c x86: Install <sys/platform/x86.h> [BZ #26124] 2020-09-11 17:20:52 -07:00
tst-cpu-features-supports.c x86: Install <sys/platform/x86.h> [BZ #26124] 2020-09-11 17:20:52 -07:00
tst-get-cpu-features-static.c
tst-get-cpu-features.c x86: Use HAS_CPU_FEATURE with IBT and SHSTK [BZ #26625] 2020-09-17 05:18:36 -07:00
tst-ldbl-nonnormal-printf.c x86: Harden printf against non-normal long double values (bug 26649) 2020-09-22 19:07:49 +02:00
Versions x86: Install <sys/platform/x86.h> [BZ #26124] 2020-09-11 17:20:52 -07:00