42 lines
1.5 KiB
Diff
42 lines
1.5 KiB
Diff
From 22e7ec9550f78af6154e22369cdcd048ba055b23 Mon Sep 17 00:00:00 2001
|
|
From: Shuo Wang <wangshuo_1994@foxmail.com>
|
|
Date: Mon, 11 Jan 2021 21:21:28 +0800
|
|
Subject: [PATCH] disable threads on Intel vm environment
|
|
|
|
Disable threads on Intel vm environment to avoid performance degradation, eg: 1k.
|
|
|
|
__x86_shared_non_temporal_threshold is used to determine whether to use L3 cache,
|
|
which is calculated by the variable threads when environment variable is not set.
|
|
When the memcpy size exceeds __x86_shared_non_temporal_threshold, L3 cache is not
|
|
employed to avoid blowing away the entire cache contents for such large copies,
|
|
negatively impacting whole system performance.
|
|
https://sourceware.org/pipermail/libc-alpha/2021-January/121510.html
|
|
|
|
The glibc community have removed threads from threashold calculation formula in
|
|
commit d3c57027470b78dba79c6d931e4e409b1fecfc80, which, however, results in
|
|
performance degradation on host environment when copying large size, even if the
|
|
performance of vm environment has restored.
|
|
|
|
In such case, we only align with the community when calculating thresholds on
|
|
vm environment.
|
|
---
|
|
sysdeps/x86/cacheinfo.c | 2 ++
|
|
1 file changed, 2 insertions(+)
|
|
|
|
diff --git a/sysdeps/x86/cacheinfo.c b/sysdeps/x86/cacheinfo.c
|
|
index b9444ddd..7615334e 100644
|
|
--- a/sysdeps/x86/cacheinfo.c
|
|
+++ b/sysdeps/x86/cacheinfo.c
|
|
@@ -691,6 +691,8 @@ intel_bug_no_cache_info:
|
|
if (shared > 0 && threads > 0)
|
|
shared /= threads;
|
|
}
|
|
+ else
|
|
+ threads = 1;
|
|
|
|
/* Account for non-inclusive L2 and L3 caches. */
|
|
if (!inclusive_cache)
|
|
--
|
|
2.23.0
|
|
|