[glibc] x86: Lower non-temporal copy threshold for Hygon
Adhemerval Zanella via Glibc-cvs <[email protected]> Wed, 20 May 2026 20:23:04 +0000 (GMT)
| Newsgroups | gmane.comp.lib.glibc.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=213ffdfbbae6d4cb4e8dd4a9e3e57c69127620c4 commit 213ffdfbbae6d4cb4e8dd4a9e3e57c69127620c4 Author: xiejiamei <[email protected]> Date: Sat May 9 07:56:28 2026 +0000 x86: Lower non-temporal copy threshold for Hygon Benchmarks on Hygon processors show that the default non-temporal threshold is higher than ideal for large copy workloads. As a result, memcpy and memmove may continue to use the temporal copy path for longer than is beneficial, increasing cache pollution and reducing throughput for large copies. Lower the copy non-temporal threshold to 3/8 of the shared cache size per thread on Hygon. This allows the non-temporal copy path to be selected earlier while leaving the memset non-temporal threshold unchanged. Signed-off-by: xiejiamei <[email protected]> Reviewed-by: H.J. Lu <[email protected]> Diff: --- sysdeps/x86/dl-cacheinfo.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sysdeps/x86/dl-cacheinfo.h b/sysdeps/x86/dl-cacheinfo.h index 84817a84fd..d18326f404 100644 --- a/sysdeps/x86/dl-cacheinfo.h +++ b/sysdeps/x86/dl-cacheinfo.h @@ -1255,6 +1255,14 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) if (tunable_size > minimum_non_temporal_threshold && tunable_size <= maximum_non_temporal_threshold) non_temporal_threshold = tunable_size; + else if (cpu_features->basic.kind == arch_kind_hygon) + { + /* Hygon benefits from entering the non-temporal copy path earlier. + Use 3/8 of the shared cache size per thread for memcpy and + memmove. The memset threshold has already been initialized + above and is intentionally left unchanged. */ + non_temporal_threshold = shared_per_thread * 3 / 8; + } tunable_size = TUNABLE_GET (x86_memset_non_temporal_threshold, long int, NULL); if (tunable_size > minimum_non_temporal_threshold