!123 revert memcpy optimize for kunpeng to avoid performance regression when input large than kbyte.
From: @liqingqing_1229 Reviewed-by: @wswsamao Signed-off-by: @wswsamao
This commit is contained in:
commit
08ba759f04
@ -0,0 +1,57 @@
|
|||||||
|
From 28f2ce27722d890a884cc7fa2f6d2bc0cb418f26 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Shuo Wang <wangshuo47@huawei.com>
|
||||||
|
Date: Wed, 20 Jan 2021 15:20:44 +0800
|
||||||
|
Subject: [PATCH] aarch64: revert memcpy optimze for kunpeng to avoid
|
||||||
|
performance degradation
|
||||||
|
|
||||||
|
In commit 863d775c481704baaa41855fc93e5a1ca2dc6bf6, kunpeng920 is added to default memcpy version,
|
||||||
|
however, there is performance degradation when the copy size is some large bytes, eg: 100k.
|
||||||
|
This is the result, tested in glibc-2.28:
|
||||||
|
before backport after backport Performance improvement
|
||||||
|
memcpy_1k 0.005 0.005 0.00%
|
||||||
|
memcpy_10k 0.032 0.029 10.34%
|
||||||
|
memcpy_100k 0.356 0.429 -17.02%
|
||||||
|
memcpy_1m 7.470 11.153 -33.02%
|
||||||
|
|
||||||
|
This is the demo
|
||||||
|
#include "stdio.h"
|
||||||
|
#include "string.h"
|
||||||
|
#include "stdlib.h"
|
||||||
|
|
||||||
|
char a[1024*1024] = {12};
|
||||||
|
char b[1024*1024] = {13};
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
int i = atoi(argv[1]);
|
||||||
|
int j;
|
||||||
|
int size = atoi(argv[2]);
|
||||||
|
|
||||||
|
for (j = 0; j < i; j++)
|
||||||
|
memcpy(b, a, size*1024);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
# gcc -g -O0 memcpy.c -o memcpy
|
||||||
|
# time taskset -c 10 ./memcpy 100000 1024
|
||||||
|
|
||||||
|
Co-authored-by: liqingqing <liqingqing3@huawei.com>
|
||||||
|
---
|
||||||
|
sysdeps/aarch64/multiarch/memcpy.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/sysdeps/aarch64/multiarch/memcpy.c b/sysdeps/aarch64/multiarch/memcpy.c
|
||||||
|
index 27259d3..0e0a5cb 100644
|
||||||
|
--- a/sysdeps/aarch64/multiarch/memcpy.c
|
||||||
|
+++ b/sysdeps/aarch64/multiarch/memcpy.c
|
||||||
|
@@ -37,7 +37,7 @@ extern __typeof (__redirect_memcpy) __memcpy_falkor attribute_hidden;
|
||||||
|
libc_ifunc (__libc_memcpy,
|
||||||
|
(IS_THUNDERX (midr)
|
||||||
|
? __memcpy_thunderx
|
||||||
|
- : (IS_FALKOR (midr) || IS_PHECDA (midr) || IS_KUNPENG920 (midr)
|
||||||
|
+ : (IS_FALKOR (midr) || IS_PHECDA (midr)
|
||||||
|
? __memcpy_falkor
|
||||||
|
: (IS_THUNDERX2 (midr) || IS_THUNDERX2PA (midr)
|
||||||
|
? __memcpy_thunderx2
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
||||||
@ -59,7 +59,7 @@
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
Name: glibc
|
Name: glibc
|
||||||
Version: 2.28
|
Version: 2.28
|
||||||
Release: 52
|
Release: 53
|
||||||
Summary: The GNU libc libraries
|
Summary: The GNU libc libraries
|
||||||
License: %{all_license}
|
License: %{all_license}
|
||||||
URL: http://www.gnu.org/software/glibc/
|
URL: http://www.gnu.org/software/glibc/
|
||||||
@ -108,6 +108,7 @@ Patch31: backport-addmntent-Remove-unbounded-alloca-usage-from-getmnte.patch
|
|||||||
Patch32: backport-Use-O_CLOEXEC-in-sysconf-BZ-26791.patch
|
Patch32: backport-Use-O_CLOEXEC-in-sysconf-BZ-26791.patch
|
||||||
Patch33: backport-aarch64-Add-unwind-information-to-_start-bug-26853.patch
|
Patch33: backport-aarch64-Add-unwind-information-to-_start-bug-26853.patch
|
||||||
Patch34: disable-threads-in-Intel-vm-environment.patch
|
Patch34: disable-threads-in-Intel-vm-environment.patch
|
||||||
|
Patch35: backport-aarch64-revert-memcpy-optimze-for-kunpeng-to-avoid-p.patch
|
||||||
|
|
||||||
Provides: ldconfig rtld(GNU_HASH) bundled(gnulib)
|
Provides: ldconfig rtld(GNU_HASH) bundled(gnulib)
|
||||||
|
|
||||||
@ -1103,6 +1104,9 @@ fi
|
|||||||
%doc hesiod/README.hesiod
|
%doc hesiod/README.hesiod
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Jan 22 2021 Qingqing Li<liqingqing3@huawei.com> - 2.28-53
|
||||||
|
- revert memcpy optimze for kunpeng to avoid performance regression when input large than kbyte.
|
||||||
|
|
||||||
* Thu Jan 21 2021 Wang Shuo<wangshuo_1994@foxmail.com> - 2.28-52
|
* Thu Jan 21 2021 Wang Shuo<wangshuo_1994@foxmail.com> - 2.28-52
|
||||||
- Disable threads in Intel vm environment to avoid performance degradation
|
- Disable threads in Intel vm environment to avoid performance degradation
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user