From: Erich Elsen <eriche@google.com>
To: libc-alpha@sourceware.org
Subject: memcpy performance regressions 2.19 -> 2.24(5)
Date: Fri, 05 May 2017 17:09:00 -0000 [thread overview]
Message-ID: <CAOVZoAPo-A5-bRZFHeu_wvTASzh_4nYwmqfCVfHQ7h34GyWKAA@mail.gmail.com> (raw)
Hi everyone,
I've noticed that there seem to be some noticeable performance
regressions for certain processors and certain sizes when moving from
2.19 to 2.24 (and 2.25).
In this (https://docs.google.com/spreadsheets/d/1Mpu1Kr9CNaa9HQjzKGL0tb2x_Nsx8vtLK3b0QnKesHg/edit?usp=sharing)
spreadsheet the regressions are highlighted with red. The three
benchmarks are:
readwritecache: both read and write locations are cached (if possible)
nocache: neither read or write locations will be cached
readcache: only the read location will be cached (if possible)
The regressions on IvyBridge are especially concerning and can be
fixed by using __memcpy_avx_unaligned instead of the current default
(__sse2_unaligned_erms).
The regressions at large sizes on IvyBridge and SandyBridge seem to be
due to using non-temporal stores and avoiding them also restores the
performance to 2.19 levels.
The regressions on Haswell can be fixed by using
__memcpy_avx_unaligned instead of __memcpy_avx_unaligned_erms in the
region of 32K <= N <= 4MB.
I had a couple of questions:
1) Are the large regressions at large sizes for IvyBridge and
SandyBridge expected? Is avoiding non-temporal stores a reasonable
solution?
2) Is it possible to fix the IvyBridge regressions by using model
information to force a specific implementation? I'm not sure how
other cpus (AMD) would be affected if the selection logic was modified
based on feature flags.
Thanks,
Erich
next reply other threads:[~2017-05-05 17:09 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-05 17:09 Erich Elsen [this message]
2017-05-05 18:09 ` Carlos O'Donell
2017-05-06 0:57 ` Erich Elsen
2017-05-06 15:41 ` H.J. Lu
2017-05-09 23:48 ` Erich Elsen
2017-05-10 17:33 ` H.J. Lu
2017-05-11 2:17 ` Carlos O'Donell
2017-05-12 19:47 ` Erich Elsen
[not found] ` <CAOVZoAPp3_T+ourRkNFXHfCSQUOMFn4iBBm9j50==h=VJcGSzw@mail.gmail.com>
2017-05-12 20:21 ` H.J. Lu
2017-05-12 21:21 ` H.J. Lu
2017-05-18 20:59 ` Erich Elsen
2017-05-22 19:17 ` H.J. Lu
2017-05-22 20:22 ` H.J. Lu
2017-05-23 1:23 ` Erich Elsen
2017-05-23 2:25 ` H.J. Lu
2017-05-23 3:19 ` Erich Elsen
2017-05-23 20:39 ` Erich Elsen
2017-05-23 20:46 ` H.J. Lu
2017-05-23 20:57 ` Erich Elsen
2017-05-23 22:08 ` H.J. Lu
2017-05-23 22:12 ` Erich Elsen
2017-05-23 22:55 ` H.J. Lu
2017-05-24 0:56 ` Erich Elsen
2017-05-24 3:42 ` H.J. Lu
2017-05-24 21:03 ` Erich Elsen
2017-05-24 21:36 ` H.J. Lu
2017-05-25 21:23 ` Erich Elsen
2017-05-25 21:57 ` Erich Elsen
2017-05-25 22:03 ` H.J. Lu
2017-05-27 0:31 ` Erich Elsen
2017-05-27 21:35 ` H.J. Lu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAOVZoAPo-A5-bRZFHeu_wvTASzh_4nYwmqfCVfHQ7h34GyWKAA@mail.gmail.com \
--to=eriche@google.com \
--cc=libc-alpha@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).