Performance regression on memcpy() calls for AMD Zen

Bug #1928508 reported by Heitor Alves de Siqueira
14
This bug affects 1 person
Affects Status Importance Assigned to Milestone
glibc (Ubuntu)
Fix Released
High
Heitor Alves de Siqueira
Focal
Fix Released
High
Heitor Alves de Siqueira
Groovy
Won't Fix
High
Heitor Alves de Siqueira

Bug Description

[Impact]
On AMD Zen systems, memcpy() calls see a heavy performance regression in Focal and Groovy, due to the way __x86_non_temporal_threshold is calculated.

Before 'glibc-2.33~455', cache values were calculated taking into consideration the number of hardware threads in the CPU. On AMD Ryzen and EPYC systems, this can be counter-productive if the number of threads is high enough for the last-level caches to "overrun" each other and cause cache line flushes. The solution is to reduce the allocated size for these non_temporal stores, removing the number of threads from the equation.

[Test Plan]
Compile the test_memcpy.c that is attached to this bug report:

$ gcc -mtune=generic -march=x86-64 -g -O3 test_memcpy.c -o test_memcpy64

This should be run before and after installing the libc packages from proposed. On Ryzen and EPYC systems a substantial improvement should be seen and on other systems, no significant change should be seen.

[Where problems could occur]
Since we're messing with the cacheinfo for x86 in general, we need to be careful not to introduce further performance regressions on memory-heavy workloads. Even though initial results might reveal improvement on AMD Ryzen and EPYC hardware, we should also validate different configurations (e.g. Intel, different buffer sizes, etc) to make sure we won't hurt performance in other non-AMD environments.

[Other Info]
This issue has been fixed by the following upstream commit:
- d3c57027470b (Reversing calculation of __x86_shared_non_temporal_threshold)

$ git describe --contains d3c57027470b
glibc-2.33~455
$ rmadison glibc -s focal,focal-updates,groovy,groovy-proposed,hirsute
 glibc | 2.31-0ubuntu9 | focal | source
 glibc | 2.31-0ubuntu9.2 | focal-updates | source
 glibc | 2.32-0ubuntu3 | groovy | source
 glibc | 2.32-0ubuntu3.2 | groovy-proposed | source
 glibc | 2.33-0ubuntu5 | hirsute | source

Affected releases include Ubuntu Focal and Groovy. Bionic is not affected, and releases starting with Hirsute already ship the upstream patch to fix this regression.

glibc exports this specific variable as a tunable, so we could also tweak it with the GLIBC_TUNABLES env var:
$ hyperfine -n clean-env 'lxc exec focal env ./test_memcpy64 32' -n tunables 'lxc exec focal env GLIBC_TUNABLES=glibc.cpu.x86_non_temporal_threshold=1024*1024*3*4 ./test_memcpy64 32'
Benchmark #1: clean-env
  Time (mean ± σ): 2.529 s ± 0.061 s [User: 6.0 ms, System: 4.7 ms]
  Range (min … max): 2.457 s … 2.615 s 10 runs

Benchmark #2: tunables
  Time (mean ± σ): 1.427 s ± 0.030 s [User: 6.5 ms, System: 3.8 ms]
  Range (min … max): 1.402 s … 1.482 s 10 runs

Summary
  'tunables' ran
    1.77 ± 0.06 times faster than 'clean-env'

This solution is not ideal, but it offers a secondary way of fixing the performance issues. However, the speed gains for memcpy() are noticeable enough that we should strongly consider changing the defaults in the Focal LTS release, so that it performs similarly to Bionic and future Ubuntu releases starting with Hirsute.

[old test case section]
Attached to this bug is a short C program that exercises memcpy() calls in buffers of variable length. This has been obtained from a similar bug report for Red Hat, and is publicly available at [0].
This test program was compiled with gcc 10.2.0, using the following flags:
$ gcc -mtune=generic -march=x86_64 -g -03 test_memcpy.c -o test_memcpy64

Tests were performed with the following criteria:
- use 32Mb buffers ("./test_memcpy64 32")
- benchmark with the hyperfine tool [1], as it calculates relevant statistics automatically
- benchmark with at least 10 runs in the same environment, to minimize variance
- measure on AMD Zen (3700X) and on Intel Xeon (E5-2683), to ensure we don't penalize one x86 vendor in favor of the other

Below is a comparison between two Focal containers, leveraging LXD to make use of different libc versions on the same host:

$ hyperfine -n libc-2.31-0ubuntu9.2 'lxc exec focal ./test_memcpy64 32' -n libc-patched 'lxc exec focal-patched ./test_memcpy64 32'
Benchmark #1: libc-2.31-0ubuntu9.2
  Time (mean ± σ): 2.723 s ± 0.013 s [User: 4.7 ms, System: 5.1 ms]
  Range (min … max): 2.693 s … 2.735 s 10 runs

Benchmark #2: libc-patched
  Time (mean ± σ): 1.522 s ± 0.004 s [User: 3.9 ms, System: 5.6 ms]
  Range (min … max): 1.515 s … 1.528 s 10 runs

Summary
  'libc-patched' ran
    1.79 ± 0.01 times faster than 'libc-2.31-0ubuntu9.2'
$ head -n5 /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 23
model : 113
model name : AMD Ryzen 7 3700X 8-Core Processor

[0] https://bugzilla.redhat.com/show_bug.cgi?id=1880670
[1] https://github.com/sharkdp/hyperfine/

Changed in glibc (Ubuntu Focal):
importance: Undecided → High
Changed in glibc (Ubuntu Groovy):
importance: Undecided → High
Changed in glibc (Ubuntu Focal):
status: New → Confirmed
Changed in glibc (Ubuntu Groovy):
status: New → Won't Fix
status: Won't Fix → Confirmed
Changed in glibc (Ubuntu):
status: New → Fix Released
Changed in glibc (Ubuntu Focal):
assignee: nobody → Heitor Alves de Siqueira (halves)
Changed in glibc (Ubuntu Groovy):
assignee: nobody → Heitor Alves de Siqueira (halves)
description: updated
description: updated
Revision history for this message
Heitor Alves de Siqueira (halves) wrote :
description: updated
Revision history for this message
Heitor Alves de Siqueira (halves) wrote :

Below is the same benchmark from the case description, validating the performance regression on Groovy. Patched glibc builds for both Focal and Groovy amd64/i386 are available at ppa:halves/lp1928508-test [0].

$ hyperfine -n groovy-2.32-0ubuntu3 'lxc exec groovy ./test_memcpy64 32' -n groovy-patched 'lxc exec groovy-patched ./test_memcpy64 32'
Benchmark #1: groovy-2.32-0ubuntu3
  Time (mean ± σ): 2.392 s ± 0.039 s [User: 4.8 ms, System: 5.4 ms]
  Range (min … max): 2.366 s … 2.494 s 10 runs

Benchmark #2: groovy-patched
  Time (mean ± σ): 1.381 s ± 0.010 s [User: 6.1 ms, System: 4.3 ms]
  Range (min … max): 1.372 s … 1.407 s 10 runs

Summary
  'groovy-patched' ran
    1.73 ± 0.03 times faster than 'groovy-2.32-0ubuntu3'

$ head -n5 /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 23
model : 113
model name : AMD Ryzen 7 3700X 8-Core Processor

[0] https://launchpad.net/~halves/+archive/ubuntu/lp1928508-test

Changed in glibc (Ubuntu Focal):
status: Confirmed → In Progress
Changed in glibc (Ubuntu Groovy):
status: Confirmed → In Progress
Revision history for this message
Heitor Alves de Siqueira (halves) wrote :

I've ran the same test on an Intel system, to ensure we aren't introducing any regressions there. Besides basic smoke tests, the benchmarks from the description showed that the performance on Intel is not significantly affected by this patch.

halves@rotom:~$ head -n5 /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 63
model name : Intel(R) Xeon(R) CPU E5-2683 v3 @ 2.00GHz

halves@rotom:~$ .cargo/bin/hyperfine -n focal-2.31-0ubuntu9.2 'lxc exec halves-focal ./test_memcpy64 32' -n focal-patched 'lxc exec halves-focal-patched ./test_memcpy64 32'
Benchmark #1: focal-2.31-0ubuntu9.2
  Time (mean ± σ): 2.662 s ± 0.058 s [User: 53.4 ms, System: 79.6 ms]
  Range (min … max): 2.559 s … 2.718 s 10 runs

Benchmark #2: focal-patched
  Time (mean ± σ): 2.650 s ± 0.074 s [User: 61.5 ms, System: 76.1 ms]
  Range (min … max): 2.558 s … 2.759 s 10 runs

Summary
  'focal-patched' ran
    1.00 ± 0.04 times faster than 'focal-2.31-0ubuntu9.2'

halves@rotom:~$ .cargo/bin/hyperfine -n groovy-2.32-0ubuntu3 'lxc exec halves-groovy ./test_memcpy64 32' -n groovy-patched 'lxc exec halves-groovy-patched ./test_memcpy64 32'
Benchmark #1: groovy-2.32-0ubuntu3
  Time (mean ± σ): 2.643 s ± 0.044 s [User: 52.4 ms, System: 76.0 ms]
  Range (min … max): 2.575 s … 2.746 s 10 runs

Benchmark #2: groovy-patched
  Time (mean ± σ): 2.626 s ± 0.036 s [User: 63.1 ms, System: 79.7 ms]
  Range (min … max): 2.590 s … 2.701 s 10 runs

Summary
  'groovy-patched' ran
    1.01 ± 0.02 times faster than 'groovy-2.32-0ubuntu3'

Revision history for this message
Heitor Alves de Siqueira (halves) wrote :
Revision history for this message
Heitor Alves de Siqueira (halves) wrote :
description: updated
Revision history for this message
Heitor Alves de Siqueira (halves) wrote :

There's currently a pending SRU for glibc on Groovy, which I based my debdiff on. Although that SRU has already cleared the 7 day grace period, there are still a few pending bugs for verification which we would need to clear before being able to upload a fix for this one.

Since Groovy is going EOL in a couple of weeks, I don't think we should spend too much effort for that release. Marking as "won't fix" accordingly.

Changed in glibc (Ubuntu Groovy):
status: In Progress → Won't Fix
Revision history for this message
Dan Streetman (ddstreet) wrote :

I'm unsubscribing sts-sponsors for now, please feel free to resubscribe once this is ready for review/spsonsoring to focal.

Note that my understanding on this is that due to the added complexity of the release and then revert of glibc in focal, due to bug 1914044, any further upgrades to glibc (like this one) might have to take additional care, though I have not looked into the details of that bug.

Revision history for this message
Heitor Alves de Siqueira (halves) wrote (last edit ):

It's been some time since the original benchmarks, so I'm repeating the test from the description. I haven't used hyperfine for the comparisons below, so they won't have the same statistical reliability but should nevertheless be sufficient for validation.

Binaries have been compiled as below:
$ gcc -mtune=generic -march=x86-64 -g -O3 test_memcpy.c -o test_memcpy64

---- AMD ----
$ grep -m1 "model name" /proc/cpuinfo
model name : AMD Ryzen 7 3700X 8-Core Processor

$ dpkg -l | grep -m1 libc6
ii libc6:amd64 2.31-0ubuntu9.2 amd64 GNU C Library: Shared libraries
$ ./test_memcpy64 32
32 MB = 2.506206 ms
-Compare match (should be zero): 0

$ dpkg -l | grep -m1 libc6
ii libc6:amd64 2.31-0ubuntu9.4~20210524ppa1 amd64 GNU C Library: Shared libraries
$ ./test_memcpy64 32
32 MB = 1.384115 ms
-Compare match (should be zero): 0

So, for AMD it's a very noticeable improvement (1.38ms vs 2.51ms).

---- Intel ----
$ grep -m1 "model name" /proc/cpuinfo
model name : Intel(R) Xeon(R) CPU E5-2683 v3 @ 2.00GHz

$ dpkg -l | grep -m1 libc6
ii libc6:amd64 2.31-0ubuntu9.2 amd64 GNU C Library: Shared libraries
$ ./test_memcpy64 32
32 MB = 2.304554 ms
-Compare match (should be zero): 0

$ dpkg -l | grep -m1 libc6
ii libc6:amd64 2.31-0ubuntu9.4~20210524ppa1 amd64 GNU C Library: Shared libraries
$ ./test_memcpy64 32
32 MB = 2.209747 ms
-Compare match (should be zero): 0

For Intel the difference isn't very significant, but there are also no performance regressions (2.30ms vs 2.21ms).

description: updated
Revision history for this message
Steve Langasek (vorlon) wrote : Please test proposed package

Hello Heitor, or anyone else affected,

Accepted glibc into focal-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/glibc/2.31-0ubuntu9.4 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, what testing has been performed on the package and change the tag from verification-needed-focal to verification-done-focal. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-focal. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Changed in glibc (Ubuntu Focal):
status: In Progress → Fix Committed
tags: added: verification-needed verification-needed-focal
Revision history for this message
Heitor Alves de Siqueira (halves) wrote :

Validated glibc from -proposed according to test case from description:

halves@focal-proposed:~$ grep -m1 "model name" /proc/cpuinfo
model name : AMD Ryzen 7 3700X 8-Core Processor
halves@focal-proposed:~$ ./test_memcpy64 32
32 MB = 1.340379 ms
-Compare match (should be zero): 0

halves@focal-proposed:~$ dpkg -l | rg libc-bin
ii libc-bin 2.31-0ubuntu9.4 amd64 GNU C Library: Binaries

I've also checked benchmark results on an Intel system, and no performance regressions have been observed there either:
root@halves-focal-glibc-xeon:~# grep -m1 "model name" /proc/cpuinfo
model name : Intel(R) Xeon(R) CPU E5-2683 v3 @ 2.00GHz
root@halves-focal-glibc-xeon:~# ./test_memcpy64 32
32 MB = 2.167214 ms
-Compare match (should be zero): 0

root@halves-focal-glibc-xeon:~# dpkg -l | rg libc-bin
ii libc-bin 2.31-0ubuntu9.4 amd64 GNU C Library: Binaries

tags: added: verification-done verification-done-focal
removed: verification-needed verification-needed-focal
Revision history for this message
Ubuntu SRU Bot (ubuntu-sru-bot) wrote : Autopkgtest regression report (glibc/2.31-0ubuntu9.4)

All autopkgtests for the newly accepted glibc (2.31-0ubuntu9.4) for focal have finished running.
The following regressions have been reported in tests triggered by the package:

snapd-glib/1.58-0ubuntu0.20.04.0 (armhf)
apt/2.0.6 (armhf)
libmath-mpfr-perl/4.13-1 (armhf)
art-nextgen-simulation-tools/20160605+dfsg-4 (armhf)
ruby-nokogiri/1.10.7+dfsg1-2build1 (armhf)
r-cran-rgdal/1.4-8-1build2 (armhf)
arrayfire/3.3.2+dfsg1-4ubuntu4 (armhf)
libpango-perl/1.227-3build1 (armhf)
libimage-sane-perl/5-1 (s390x)
ruby-bootsnap/1.4.6-1 (arm64)
mle/1.4.3-1 (ppc64el, arm64)
libsyntax-keyword-try-perl/0.11-1build1 (armhf)
awesome/4.3-4 (armhf)
cysignals/1.10.2+ds-4 (arm64)
gvfs/1.44.1-1ubuntu1 (ppc64el)
libuv1/1.34.2-1ubuntu1.3 (amd64)
bali-phy/3.4.1+dfsg-2build1 (arm64, s390x)
g10k/0.5.7-1 (armhf)
litl/0.1.9-7 (amd64)
ruby-libxml/3.1.0-2 (armhf)
ffmpeg/7:4.2.4-1ubuntu0.1 (armhf)
yorick/2.2.04+dfsg1-10 (ppc64el, s390x)
linux-ibm/5.4.0-1010.11 (amd64)
liborcus/0.15.3-3build2 (armhf)
node-nodedbi/1.0.13+dfsg-1build1 (amd64)
r-bioc-delayedarray/0.12.2+dfsg-1 (armhf)
postgresql-unit/7.2-2 (armhf)
python-freecontact/1.1-5build2 (armhf)
r-cran-rwave/2.4-8-2 (armhf)
libproc-fastspawn-perl/1.2-1build2 (armhf)
linux-hwe-5.11/5.11.0-44.48~20.04.2 (armhf)
foo2zjs/20171202dfsg0-4 (armhf)
r-cran-erm/1.0-0-1 (armhf)
libsys-cpuload-perl/0.03-8build5 (armhf)
libhttp-parser-xs-perl/0.17-1build5 (armhf)
php-luasandbox/3.0.3-2build2 (armhf)
pynfft/1.3.2-3build1 (armhf)
r-cran-processx/3.4.2-1 (ppc64el)
r-bioc-multtest/2.42.0-1 (armhf)
linux-hwe-5.13/5.13.0-23.23~20.04.2 (armhf)
python-blosc/1.7.0+ds1-2ubuntu2 (armhf)
gyoto/1.4.4-3 (armhf)
r-cran-sem/3.1.9-2build1 (armhf)
libtext-reflow-perl/1.17-1build3 (armhf)
python3.9/3.9.5-3ubuntu0~20.04.1 (armhf)
r-cran-samr/3.0-1 (armhf)
r-cran-dplyr/0.8.4-1 (armhf)
python3.8/3.8.10-0ubuntu1~20.04.2 (armhf)
findent/3.1.1-1build1 (armhf)
mercurial/5.3.1-1ubuntu1 (amd64)
libmemcached-libmemcached-perl/1.001801+dfsg-2build4 (armhf)
openbabel/3.0.0+dfsg-3ubuntu3 (armhf)

Please visit the excuses page listed below and investigate the failures, proceeding afterwards as per the StableReleaseUpdates policy regarding autopkgtest regressions [1].

https://people.canonical.com/~ubuntu-archive/proposed-migration/focal/update_excuses.html#glibc

[1] https://wiki.ubuntu.com/StableReleaseUpdates#Autopkgtest_Regressions

Thank you!

Revision history for this message
Brian Murray (brian-murray) wrote : Please test proposed package

Hello Heitor, or anyone else affected,

Accepted glibc into focal-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/glibc/2.31-0ubuntu9.5 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, what testing has been performed on the package and change the tag from verification-needed-focal to verification-done-focal. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-focal. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

tags: added: verification-needed verification-needed-focal
removed: verification-done verification-done-focal
Revision history for this message
Ubuntu SRU Bot (ubuntu-sru-bot) wrote : Autopkgtest regression report (glibc/2.31-0ubuntu9.5)

All autopkgtests for the newly accepted glibc (2.31-0ubuntu9.5) for focal have finished running.
The following regressions have been reported in tests triggered by the package:

garli/2.1-3build1 (armhf)
fpc/3.0.4+dfsg-23 (armhf)
lazarus/2.0.6+dfsg-3 (armhf)
libuv1/1.34.2-1ubuntu1.3 (i386)
ikiwiki-hosting/0.20180719-2 (armhf)
rtags/2.37-1 (amd64)
mercurial/5.3.1-1ubuntu1 (amd64, ppc64el)
foo2zjs/20171202dfsg0-4 (armhf)
frameworkintegration/5.68.0-0ubuntu1 (armhf)
hilive/2.0a-3build2 (arm64)
ruby-libxml/3.1.0-2 (s390x)
plasma-framework/5.68.0-0ubuntu1 (armhf)
feersum/1.407-2 (s390x)
r-bioc-delayedarray/0.12.2+dfsg-1 (armhf)
php-luasandbox/3.0.3-2build2 (ppc64el)
snapd-glib/1.58-0ubuntu0.20.04.0 (armhf)
bolt/0.8-4ubuntu1 (ppc64el)
threadweaver/5.68.0-0ubuntu1 (armhf)
python3.8/3.8.10-0ubuntu1~20.04.2 (amd64)

Please visit the excuses page listed below and investigate the failures, proceeding afterwards as per the StableReleaseUpdates policy regarding autopkgtest regressions [1].

https://people.canonical.com/~ubuntu-archive/proposed-migration/focal/update_excuses.html#glibc

[1] https://wiki.ubuntu.com/StableReleaseUpdates#Autopkgtest_Regressions

Thank you!

Revision history for this message
Brian Murray (brian-murray) wrote : Please test proposed package

Hello Heitor, or anyone else affected,

Accepted glibc into focal-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/glibc/2.31-0ubuntu9.8 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, what testing has been performed on the package and change the tag from verification-needed-focal to verification-done-focal. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-focal. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Revision history for this message
Ubuntu SRU Bot (ubuntu-sru-bot) wrote : Autopkgtest regression report (glibc/2.31-0ubuntu9.8)

All autopkgtests for the newly accepted glibc (2.31-0ubuntu9.8) for focal have finished running.
The following regressions have been reported in tests triggered by the package:

ruby-stackprof/0.2.15-2 (arm64)
sphinxbase/0.8+5prealpha+1-8 (armhf)
r-cran-ps/1.3.2-2 (s390x)
linux-hwe-5.13/5.13.0-37.42~20.04.1 (armhf)
mercurial/5.3.1-1ubuntu1 (armhf, ppc64el)
linux-hwe-5.11/5.11.0-61.61 (armhf)
mbedtls/2.16.4-1ubuntu2 (s390x)
libreoffice/1:6.4.7-0ubuntu0.20.04.4 (armhf)
ruby-ferret/0.11.8.7-2 (amd64)
cross-toolchain-base/43ubuntu3.1 (ppc64el)

Please visit the excuses page listed below and investigate the failures, proceeding afterwards as per the StableReleaseUpdates policy regarding autopkgtest regressions [1].

https://people.canonical.com/~ubuntu-archive/proposed-migration/focal/update_excuses.html#glibc

[1] https://wiki.ubuntu.com/StableReleaseUpdates#Autopkgtest_Regressions

Thank you!

Revision history for this message
Steve Langasek (vorlon) wrote : Please test proposed package

Hello Heitor, or anyone else affected,

Accepted glibc into focal-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/glibc/2.31-0ubuntu9.9 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, what testing has been performed on the package and change the tag from verification-needed-focal to verification-done-focal. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-focal. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Revision history for this message
Ubuntu SRU Bot (ubuntu-sru-bot) wrote : Autopkgtest regression report (glibc/2.31-0ubuntu9.9)

All autopkgtests for the newly accepted glibc (2.31-0ubuntu9.9) for focal have finished running.
The following regressions have been reported in tests triggered by the package:

hilive/2.0a-3build2 (arm64)
tomb/2.7+dfsg2-1 (arm64)
linux-hwe-5.13/5.13.0-40.45~20.04.1 (armhf)
bali-phy/3.4.1+dfsg-2build1 (s390x, arm64)
smalt/0.7.6-9 (ppc64el)
mariadb-10.3/1:10.3.34-0ubuntu0.20.04.1 (armhf)
feersum/1.407-2 (s390x)
kopanocore/8.7.0-7ubuntu1 (amd64)
r-cran-ps/1.3.2-2 (s390x, ppc64el)
libreoffice/1:6.4.7-0ubuntu0.20.04.4 (amd64)
imagemagick/8:6.9.10.23+dfsg-2.1ubuntu11.4 (armhf)
ruby-stackprof/0.2.15-2 (amd64)
gnome-photos/3.34.1-1 (ppc64el)
linux-azure-5.11/5.11.0-1029.32~20.04.2 (amd64)
linux-intel-5.13/5.13.0-1010.10 (amd64)
php-luasandbox/3.0.3-2build2 (armhf, arm64)
mbedtls/2.16.4-1ubuntu2 (amd64, ppc64el)
cross-toolchain-base/43ubuntu3.1 (ppc64el)
rtags/2.37-1 (amd64)
gvfs/1.44.1-1ubuntu1 (arm64, ppc64el)
linux-oem-5.14/5.14.0-1033.36 (amd64)
linux-azure-cvm/5.4.0-1076.79+cvm1 (amd64)
mercurial/5.3.1-1ubuntu1 (armhf)
r-cran-satellite/1.0.2-1build1 (armhf)
s3ql/3.3.2+dfsg-1ubuntu1 (armhf)
snapd/2.54.3+20.04.1ubuntu0.2 (s390x, arm64, amd64, ppc64el)
sphinxbase/0.8+5prealpha+1-8 (armhf)
gemma/0.98.1+dfsg-1 (armhf)

Please visit the excuses page listed below and investigate the failures, proceeding afterwards as per the StableReleaseUpdates policy regarding autopkgtest regressions [1].

https://people.canonical.com/~ubuntu-archive/proposed-migration/focal/update_excuses.html#glibc

[1] https://wiki.ubuntu.com/StableReleaseUpdates#Autopkgtest_Regressions

Thank you!

Revision history for this message
Heitor Alves de Siqueira (halves) wrote :

Validated glibc from focal-proposed according to test case from description:

halves@glibc-zen:~$ ./test_memcpy64 32
32 MB = 1.222535 ms
-Compare match (should be zero): 0

halves@glibc-zen:~$ dpkg -l | grep libc-bin
ii libc-bin 2.31-0ubuntu9.9 amd64 GNU C Library: Binaries
halves@glibc-zen:~$ grep -m1 "model name" /proc/cpuinfo
model name : AMD Ryzen 7 3700X 8-Core Processor

Also validated on an Intel system, and no performance regressions have been observed:
halves@halves-focal-glibc-xeon:~$ ./test_memcpy64 32
32 MB = 2.174005 ms
-Compare match (should be zero): 0

halves@halves-focal-glibc-xeon:~$ grep -m1 "model name" /proc/cpuinfo
model name : Intel(R) Xeon(R) CPU E5-2683 v3 @ 2.00GHz
halves@halves-focal-glibc-xeon:~$ dpkg -l | grep libc-bin
ii libc-bin 2.31-0ubuntu9.9 amd64 GNU C Library: Binaries

tags: added: verification-done verification-done-focal
removed: verification-needed verification-needed-focal
Revision history for this message
Chris Halse Rogers (raof) wrote : Update Released

The verification of the Stable Release Update for glibc has completed successfully and the package is now being released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package glibc - 2.31-0ubuntu9.9

---------------
glibc (2.31-0ubuntu9.9) focal; urgency=medium

  * Disable testsuite on riscv64. It is failing maths tests intermittently in
    ways that cannot be a glibc regression and is disabled in later series
    anyway.

glibc (2.31-0ubuntu9.8) focal; urgency=medium

  * Update for 20.04. (LP: #1951033)

  [ Balint Reczey ]
  * Cherry-pick upstream patch to fix building with -moutline-atomics
  * Prevent rare deadlock in pthread_cond_signal (LP: #1899800)

  [ Matthias Klose ]
  * Revert: Use DH_COMPAT=8 for dh_strip to fix debug sections for valgrind.
    Enables debugging ld.so related issues. (LP: #1918035)
  * Don't strip ld.so on armhf. (LP: #1927192)

  [ Gunnar Hjalmarsson ]
  * d/local/usr_sbin/update-locale: improve sanity checks. (LP: #1892825)

  [ Heitor Alves de Siqueira ]
  * d/p/u/git-lp1928508-reversing-calculation-of-__x86_shared_non_temporal.patch:
    - Fix memcpy() performance regression on x86 AMD systems (LP: #1928508)

  [ Aurelien Jarno ]
  * debian/debhelper.in/libc.preinst: drop the check for kernel release
    > 255 now that glibc and preinstall script are fixed. (LP: #1962225)

  [ Michael Hudson-Doyle ]
  * libc6 on arm64 is now built with -moutline-atomics so libc6-lse can now be
    an empty package that is safe to remove. (LP: #1912652)
  * d/patches/u/aarch64-memcpy-improvements.patch: Backport memcpy
    improvements. (LP: #1951032)
  * Add test-float64x-yn to xfails on riscv64.

 -- Michael Hudson-Doyle <email address hidden> Thu, 07 Apr 2022 13:24:41 +1200

Changed in glibc (Ubuntu Focal):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.