glibc: backport AArch64 mem{cpy,cmp} improvements

Bug #1999551 reported by Simon Chopin
16
This bug affects 1 person
Affects Status Importance Assigned to Milestone
glibc (Ubuntu)
Fix Released
High
Simon Chopin
Focal
Triaged
High
Unassigned
Jammy
Triaged
High
Unassigned
Kinetic
Fix Released
Undecided
Unassigned

Bug Description

[impact]

There have been relatively recent improvements to the memcmp and memcpy routines for server-grade AArch64 implementation, in particular AWS's Graviton3.

We'd like to backport those improvements to Jammy and Focal when appropriate, under the HWE umbrella.

The relevant patches are

https://sourceware.org/git/?p=glibc.git;a=commit;h=9f298bfe1f183804bb54b54ff9071afc0494906c (Jammy & Focal)
https://sourceware.org/git/?p=glibc.git;a=commit;h=b51eb35c572b015641f03e3682c303f7631279b7 (Focal only, already present in Jammy)

In addition, to be able to actually test the changes and its impact on all architectures, we'll need the following fix:

https://sourceware.org/git/?p=glibc.git;a=commit;h=311a7e0256975275d97077f1af338bc9caf0c837

[test case]

Since those are optimization patches, we'll be relying on the autopkgtests triggered by the upload for regression detection.

However, we'll also benchmark the optimizations on Graviton AWS instances as well as various Raspberry Pi models to ensure there is no severe performance regression on those platforms.

To do the performance test, first install the libc from this PPA:

https://launchpad.net/~schopin/+archive/ubuntu/glibc-benchmark

that is the current Jammy glibc with the extra fix for benchmarking.

Then, untar the attached archive bench-timing.tar.xz on the target platform, and follow the instructions from the README.

[Regression potential]

This could potentially impact performance on other, non-server-grade arm64 platforms such as RPi. Furthermore, there could be unforeseen issues with the newly optimized routine in edge cases (a recent amd64 optimization had issues on page boundaries, for instance).

Revision history for this message
Simon Chopin (schopin) wrote :
Simon Chopin (schopin)
Changed in glibc (Ubuntu Focal):
status: New → In Progress
Changed in glibc (Ubuntu Jammy):
status: New → In Progress
Changed in glibc (Ubuntu Focal):
importance: Undecided → High
Changed in glibc (Ubuntu Jammy):
importance: Undecided → High
Simon Chopin (schopin)
Changed in glibc (Ubuntu):
status: In Progress → Fix Released
Revision history for this message
Simon Chopin (schopin) wrote :

I have a preliminary package purely for testing purposed (the final release will contain more patches) at https://launchpad.net/~schopin/+archive/ubuntu/glibc-jammy-sru

description: updated
Revision history for this message
Simon Chopin (schopin) wrote :
Revision history for this message
Julian Schroeder (jumaco) wrote :

I tried on an SVE enable platform, running Ubuntu-22:
sudo add-apt-repository ppa:schopin/glibc-benchmark
sudo apt update
sudo apt upgrade
and then ran the benchmark code under GDB: the code is using Neon instead of SVE.
Am I missing a step to install libc?

Revision history for this message
Simon Chopin (schopin) wrote :

No, you're doing it properly, for some reason the ifunc isn't resolved to the SVE version. I'm investigating it right now. At first I thought because we were missing https://sourceware.org/bugzilla/show_bug.cgi?id=29394 but that's not the cause.

Revision history for this message
Julian Schroeder (jumaco) wrote :

Hi Simon,
if I do this:
sudo add-apt-repository ppa:schopin/glibc-jammy-sru
it works.

Revision history for this message
Simon Chopin (schopin) wrote :

A late follow up on that: I thought the Jammy package was broken because I detected use of the non-SVE variant of memcpy. After a while I realized it was due to it being used *before* the ifunc resolution was done, probably within the dynamic linker itself.

I prepared a Focal package as well. Sadly, the patchset there is much more involved than the one for Jammy. It's in the same PPA (which has a decidedly inadequate name).

Simon Chopin (schopin)
Changed in glibc (Ubuntu Kinetic):
status: New → Fix Released
Revision history for this message
Brian Murray (brian-murray) wrote : Please test proposed package

Hello Simon, or anyone else affected,

Accepted glibc into jammy-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/glibc/2.35-0ubuntu3.2 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-jammy to verification-done-jammy. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-jammy. 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.

description: updated
Changed in glibc (Ubuntu Jammy):
status: In Progress → Fix Committed
tags: added: verification-needed verification-needed-jammy
Revision history for this message
Ubuntu SRU Bot (ubuntu-sru-bot) wrote : Autopkgtest regression report (glibc/2.35-0ubuntu3.2)

All autopkgtests for the newly accepted glibc (2.35-0ubuntu3.2) for jammy have finished running.
The following regressions have been reported in tests triggered by the package:

adsys/0.9.2~22.04.1 (armhf)
bbmap/38.95+dfsg-1 (armhf)
boost1.74/1.74.0-14ubuntu3 (armhf)
breezy/3.2.1+bzr7585-1build1 (armhf)
casync/2+20201210-1build1 (ppc64el)
cmake/3.22.1-1ubuntu1.22.04.1 (amd64, arm64, armhf)
cython/0.29.28-1ubuntu3 (i386)
dbus-test-runner/16.10.0~bzr100+repack1-4.1 (armhf)
exim4/4.95-4ubuntu2.2 (ppc64el)
fwupd/1.7.9-1~22.04.1 (armhf)
glib-networking/2.72.0-1 (i386)
golang-github-influxdata-tail/1.0.0+git20180327.c434825-4 (ppc64el)
golang-gogoprotobuf/1.3.2-1 (arm64)
grubzfs-testsuite/0.4.15build1 (amd64)
gtk+3.0/3.24.33-1ubuntu2 (i386)
gyoto/1.4.4-7build1 (amd64, arm64, s390x)
ksh93u+m/1.0.0~beta.2-1 (ppc64el)
libassuan/2.5.5-1build1 (amd64)
libflame/5.2.0-3ubuntu3 (s390x)
libite/2.5.1-1 (s390x)
linux-aws-5.19/5.19.0-1027.28~22.04.1 (amd64, arm64)
linux-azure-5.19/5.19.0-1027.30~22.04.2 (amd64)
linux-gcp-5.19/5.19.0-1026.28~22.04.1 (arm64)
linux-gke/5.15.0-1034.39 (arm64)
linux-hwe-5.19/5.19.0-44.45~22.04.1 (amd64)
linux-lowlatency-hwe-5.19/5.19.0-1026.27~22.04.1 (amd64)
linux-oracle-5.19/5.19.0-1025.28~22.04.1 (amd64)
mercurial/6.1.1-1ubuntu1 (amd64)
mtail/3.0.0~rc48-3 (ppc64el)
mutter/42.5-0ubuntu1 (amd64)
mypy/0.942-1ubuntu1 (armhf)
mysql-8.0/8.0.33-0ubuntu0.22.04.2 (s390x)
netgen/6.2.2006+really6.2.1905+dfsg-5build1 (armhf)
notcurses/3.0.6+dfsg.1-1 (armhf)
pango1.0/1.50.6+ds-2ubuntu1 (i386)
phcpack/2.4.85+dfsg-5build1 (arm64)
pinentry/1.1.1-1build2 (i386)
puma/5.5.2-2ubuntu2 (amd64, arm64)
pycryptodome/3.11.0+dfsg1-3build1 (i386)
pygobject/3.42.1-0ubuntu1 (i386)
python-evdev/1.4.0+dfsg-1build2 (i386)
python-llfuse/1.3.8+dfsg-2build1 (armhf)
python-lz4/3.1.3+dfsg-1build3 (i386)
python3.10/3.10.6-1~22.04.2ubuntu1.1 (arm64)
pyyaml/5.4.1-1ubuntu1 (i386)
r-bioc-rhdf5/2.38.0+dfsg-2 (amd64)
r-cran-randomfieldsutils/1.1.0-1 (armhf)
r-cran-spc/1:0.6.5-1 (armhf)
rsync/3.2.7-0ubuntu0.22.04.2 (i386)
ruby-nio4r/2.5.8-2 (amd64)
ruby-nokogiri/1.13.1+dfsg-2 (amd64)
ruby-prof/1.3.1-2build2 (amd64, ppc64el)
rustc/1.65.0+dfsg0ubuntu1-0ubuntu0.22.04.1 (arm64)
seqkit/2.1.0+ds-1 (arm64, s390x)
stunnel4/3:5.63-1build1 (i386)
swtpm/0.6.3-0ubuntu3.2 (s390x)
systemd/249.11-0ubuntu3.9 (amd64, arm64, ppc64el, s390x)
taptempo/1.4.5-1 (amd64)
texinfo/6.8-4build1 (armhf)
ubiquity/22.04.19 (amd64, arm64, armhf, ppc64el)
udisks2/2.9.4-1ubuntu2 (arm64)
utox/0.18.1-1build1 (armhf)
vlc/3.0.16-1build7 (i386)

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/jammy/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 Simon, 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.10 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-focal
Revision history for this message
Ubuntu SRU Bot (ubuntu-sru-bot) wrote : Autopkgtest regression report (glibc/2.31-0ubuntu9.10)

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

4ti2/1.6.9+ds-2build1 (armhf)
android-platform-external-libunwind/8.1.0+r23-2 (armhf)
android-platform-frameworks-native/1:8.1.0+r23-2build1 (armhf)
apparmor/unknown (armhf)
apport/2.20.11-0ubuntu27.27 (armhf)
at-spi2-core/2.36.0-2 (armhf)
atk1.0/2.35.1-1ubuntu2 (armhf)
augustus/unknown (armhf)
autodock-vina/unknown (armhf)
autopilot-gtk/1.6.0 (armhf)
bgw-replstatus/1.0.4 (armhf)
biosquid/1.9g+cvs20050121-11 (armhf)
blackbox/0.70.1-38 (armhf)
bomstrip/9-13 (armhf)
borgbackup/1.1.15-1~ubuntu1.20.04.1 (armhf)
bosh/0.6-10 (armhf)
botch/0.22-3 (armhf)
brlaser/6-1build1 (armhf)
burp/2.2.18-2 (armhf)
butt/unknown (armhf)
cargo/0.66.0+ds0ubuntu0.libgit2-0ubuntu0.20.04 (armhf)
ceph/15.2.17-0ubuntu0.20.04.4 (armhf)
chafa/1.2.1-1 (armhf)
clearcut/1.0.9-5 (armhf)
consulfs/0.2.1-1 (armhf)
coturn/4.5.1.1-1.1ubuntu0.20.04.2 (armhf)
dune-common/2.6.0-4build1 (armhf)
fpc/3.0.4+dfsg-23 (arm64)
frameworkintegration/5.68.0-0ubuntu1 (armhf)
heaptrack/1.1.0+20180922.gitf752536-4build1 (armhf)
jsonnet/unknown (armhf)
kbibtex/0.8.1-1ubuntu5 (armhf)
kholidays/1:5.68.0-0ubuntu1 (armhf)
kiconthemes/5.68.0-0ubuntu1 (armhf)
kitemmodels/5.68.0-0ubuntu1 (armhf)
kpty/5.68.0-0ubuntu1 (armhf)
libdbd-pg-perl/3.10.4-1 (amd64)
libgdata/0.17.12-1 (armhf)
libtk-tablematrix-perl/1.23-7 (armhf)
linux-gcp-5.15/5.15.0-1036.44~20.04.1 (arm64)
linux-gke-5.15/5.15.0-1036.41~20.04.1 (arm64)
linux-lowlatency-hwe-5.15/5.15.0-75.82~20.04.1 (arm64)
linux-oracle-5.15/5.15.0-1037.43~20.04.1 (arm64)
magicrescue/1.1.10-3 (armhf)
mercurial/5.3.1-1ubuntu1 (amd64, armhf, ppc64el)
modemmanager-qt/5.68.0-0ubuntu1 (armhf)
node-ws/7.2.1-3 (armhf)
octave-image/2.12.0-2 (armhf)
osmo-mgw/1.4.0-1 (armhf)
php-excimer/1.0.0~git20190913.d82eaf7-1build1 (arm64)
polkit-qt-1/0.113.0-0ubuntu2 (armhf)
qcustomplot/2.0.1+dfsg1-1build1 (armhf)
qutip/4.4.1-6build1 (amd64)
r-cran-ps/1.3.2-2 (armhf)
ruby-bootsnap/1.4.6-1 (amd64)
ruby-standalone/2.7~2 (armhf)
ruby2.7/2.7.0-5ubuntu1.11 (armhf, s390x)
sks/1.1.6-14 (s390x)
systemd/245.4-4ubuntu3.22 (armhf)
threadweaver/5.68.0-0ubuntu1 (armhf)
tomb/2.7+dfsg2-1 (amd64)
umockdev/0.14.1-1ubuntu0.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
Dave Jones (waveform) wrote : Re: glibc: backport AArch64 memcmp improvements

Attaching the results of running the benchmarks on an Pi 3+ and a Pi 4. The -baseline.tar.gz tarballs contain the results of running before+after *without* upgrade to give an idea of the background noise in the data. The -actual.tar.gz tarballs contain the results of running before+after with upgrade.

In each archive, compare.out contains the text of running "make compare". Overall it *appears* as if there's quite a mix of wins and losses.

Revision history for this message
Dave Jones (waveform) wrote :
Revision history for this message
Dave Jones (waveform) wrote :
Revision history for this message
Dave Jones (waveform) wrote :
Revision history for this message
Dave Jones (waveform) wrote :
Revision history for this message
Dave Jones (waveform) wrote :

Sorry -- results above (comments 12-16) are for jammy, specifically

Revision history for this message
Simon Chopin (schopin) wrote :

Sooo, bad news: I've apparently failed at backporting the timing code needed for the benchmark in Focal, *and* also failed at testing said code. I'm guessing I tested the Jammy version twice?

Well, it's either that or focal has become *very* fast on Graviton3, which I somehow doubt :)

Revision history for this message
Simon Chopin (schopin) wrote :

So, my last comment was me being a vaporhead. It turned out I used the wrong benchmark tarball.

After having done the tests on Grav2 and Grav3 instances, on both Focal and Jammy, the results are all over the place. Dave agreed offline to re-run the tests on the Pis with 100 runs rather than 10 to hopefully get rid of the noise, while I do the same on the AWS machines.

Revision history for this message
Simon Chopin (schopin) wrote :

When using a much bigger sample size (100 runs instead of 10), the results are more consistent. I'll wait for Dave's raw results before publishing a comprehensive analysis, but meanwhile here's the new raw data for both Graviton2 and Graviton3.

I'll delete the previous results to prevent mixups :)

Revision history for this message
Dave Jones (waveform) wrote :

Pi 4 results incoming!

Revision history for this message
Dave Jones (waveform) wrote :
Revision history for this message
Dave Jones (waveform) wrote :
Revision history for this message
Dave Jones (waveform) wrote :
Revision history for this message
Dave Jones (waveform) wrote :

I've also deleted my earlier results to avoid confusion; will try and post the pi3+ results a bit later (when they finish running!)

Revision history for this message
Simon Chopin (schopin) wrote :

Just with these results I can already say that the memcmp focal patch will need to be reversed. See attached plot (X is buffer size, Y is performance delta in %, we want negative values)

Revision history for this message
Julian Schroeder (jumaco) wrote :

This is a Pi4 Focal (Ubuntu-20.04) issue only.
Ubuntu-22.04 (Jammy) is using glibc-2.35 which already has the updated memcmp code from Wilco.
I'll take a closer look at the code change and try to figure out why Pi4 would have an issue with it.

Revision history for this message
Julian Schroeder (jumaco) wrote :

Hi Simon,
I looked at Wilco's commit b51eb35c572b015641f03e3682c303f7631279b7 again.
From what I can see the (aarch64) memcmp code is reorganized and uses Neon code for comparing > 64 bytes. Since Pi4 supports Neon, it should benefit from this.
Can you check if the Pi4 is using sysdeps/aarch64/memcmp.S code and not string/memcmp.c generic code?
Thanks,
Julian.

Revision history for this message
Julian Schroeder (jumaco) wrote :

Hi Simon,
is it possible the Pi4 went into thermal throttling since you run 10x longer than I?
Thanks,
Julian.

Revision history for this message
Simon Chopin (schopin) wrote :

You made me dig up my own Pi4 to check that the correct function is called, and it is the memcmp.S variant, not the generic one.

I'm also running the tests anew under aggressive active cooling, just to be sure, but Dave also had some active cooling on hi Pi and seems to think throttling is highly unlikely.

(meanwhile the pi3 results might have run into a failing SD card...)

Revision history for this message
Simon Chopin (schopin) wrote :

I ran the analysis with the results of the tests on my own Pi, which never got above 42°C (so no throttling), and the results were substantially the same.

Revision history for this message
Julian Schroeder (jumaco) wrote :

The Pi4 is definitively running the Neon code? That's a puzzler. The curve for the Pi4 is sort of the inverse of the Grv2/Grv3 curve. I'll see if I can round up a Pi4. Why would it run slower running Neon code for memcmp? From the chart it is the >64 bytes memcmp calls that take distinctly longer. So it should be running Neon code 90% of the time. I'll take another look at the data.

Revision history for this message
Julian Schroeder (jumaco) wrote :

Hi Simon,
I got a Pi4 and tested the memcmp code by compiling it into bench-memcmp directly.
I also tested on an S905X board that has an A54 CPU. Both boards are slower with the Neon code for memcmp.
Looks like the Pi4 has PMU counters. I'll capture some stats to see what's going on.

Revision history for this message
Dave Jones (waveform) wrote :

Pi 3+ results incoming!

Revision history for this message
Dave Jones (waveform) wrote :
Revision history for this message
Dave Jones (waveform) wrote :
Revision history for this message
Dave Jones (waveform) wrote :
Revision history for this message
Julian Schroeder (jumaco) wrote :

Hi Simon,
my coworker Geoff pointed out the GP reg to Neon copro register transfers on A54 and A72 are very slow, in the order of 9 CPU cycles. I'm looking into an ifunc implementation so we can stay clear of Neon if we run on < ARM Neoverse cores.

Revision history for this message
Julian Schroeder (jumaco) wrote :

Hi Simon,
can we merge the memcpy and memmove SVE versions, at least?
I'm having a conversation with Wilco about the memcmp options.
He might chime in here, as well.

Revision history for this message
Simon Chopin (schopin) wrote :

Attached are all the generated plots for the various benchmarks.

My matplotlib skills being rather poor, here's the legend: y axis in %, we want negative values, x axis is the size of the buffers being processed.

My conclusions are that the memcmp patch for focal should be rolled back, but the Jammy results are fairly OK. There's a huge (150%!) performance regression for very small memmoves (as in < 16 bytes), but I think it's only showing that the fixed cost of the function has increased. I also think the "fixed input" part of the benchmarks are actually hitting a worst-case scenario, as we show no improvement in the non-random benchmarks (including the large ones), whereas the ones on random inputs are much more satisfying, with impressive results on graviton3 without significant regression on non-SVE machines.

Thus, I'm marking the jammy upload as verified.

I'll have to re-do a focal upload without the memcmp patch, though.

tags: added: verification-done-jammy
removed: verification-needed-jammy
Simon Chopin (schopin)
summary: - glibc: backport AArch64 memcmp improvements
+ glibc: backport AArch64 mem{cpy,cmp} improvements
Revision history for this message
Ubuntu SRU Bot (ubuntu-sru-bot) wrote : Autopkgtest regression report (glibc/2.31-0ubuntu9.10)

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

cargo/0.66.0+ds0ubuntu0.libgit2-0ubuntu0.20.04 (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
Julian Schroeder (jumaco) wrote :

We are running into an issue with the Linux kernel and SVE. Here's my current understanding of it: Upon return from a kernel call the context restore does not re-enable SVE. When encountering the next SVE instruction in user space, an exception (trap) is triggered that then re-enables SVE and restores the SVE context. This causes a 6% performance degradation on our NGNIX test workload in a single core system.
With this we should hold off on merging SVE memcpy/memmove.

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

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

dune-common/2.6.0-4build1 (armhf)
khtml/5.68.0-0ubuntu1 (armhf)
kitemmodels/5.68.0-0ubuntu1 (armhf)
kpeople/5.68.0-0ubuntu1 (armhf)
kplotting/5.68.0-0ubuntu1 (armhf)
kpty/5.68.0-0ubuntu1 (armhf)
kxmlgui/5.68.0-0ubuntu2 (armhf)
linux-nvidia-tegra-5.15/5.15.0-1015.15~20.04.1 (arm64)
netplan.io/0.104-0ubuntu2~20.04.2 (s390x)
nfs-utils/1:1.3.4-2.5ubuntu3.4 (amd64)
ruby-stackprof/0.2.15-2 (arm64)
sbd/1.4.1-3 (s390x)
threadweaver/5.68.0-0ubuntu1 (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!

Simon Chopin (schopin)
tags: added: regression-proposed verification-needed-jammy
removed: verification-done-jammy
Revision history for this message
Brian Murray (brian-murray) wrote : Please test proposed package

Hello Simon, or anyone else affected,

Accepted glibc into jammy-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/glibc/2.35-0ubuntu3.3 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-jammy to verification-done-jammy. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-jammy. 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.35-0ubuntu3.2)

All autopkgtests for the newly accepted glibc (2.35-0ubuntu3.2) for jammy have finished running.
The following regressions have been reported in tests triggered by the package:

linux-aws-6.2/6.2.0-1007.7~22.04.1 (arm64)
linux-azure-6.2/6.2.0-1007.7~22.04.1 (arm64)
linux-oracle-5.19/5.19.0-1025.28~22.04.1 (arm64)
mysql-8.0/8.0.33-0ubuntu0.22.04.2 (s390x)
ubiquity/22.04.19 (amd64, arm64, armhf, 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/jammy/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 Simon, 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.12 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.12)

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

aevol/5.0+ds-1build1 (arm64)
c-icap/1:0.5.3-3 (armhf)
cysignals/1.10.2+ds-4 (s390x)
dbus/1.12.16-2ubuntu2.3 (armhf)
docker.io/20.10.21-0ubuntu1~20.04.2 (amd64, arm64, ppc64el, s390x)
flatpak/1.6.5-0ubuntu0.4 (ppc64el)
kholidays/1:5.68.0-0ubuntu1 (armhf)
kplotting/5.68.0-0ubuntu1 (armhf)
libimage-sane-perl/5-1 (arm64)
libreoffice/1:6.4.7-0ubuntu0.20.04.8 (armhf)
libxml-libxslt-perl/1.99-1 (s390x)
libxml-quote-perl/1.02-4build2 (s390x)
linux-aws-5.15/5.15.0-1041.46~20.04.1 (arm64)
linux-gcp-5.15/5.15.0-1039.47~20.04.1 (arm64)
linux-lowlatency-hwe-5.15/5.15.0-79.88~20.04.1 (arm64)
mariadb-10.3/1:10.3.38-0ubuntu0.20.04.1 (armhf)
postgresql-12/12.15-0ubuntu0.20.04.1 (amd64)
r-bioc-delayedarray/0.12.2+dfsg-1 (armhf)
r-cran-curl/4.3+dfsg-1 (armhf)
systemd/245.4-4ubuntu3.22 (arm64)
threadweaver/5.68.0-0ubuntu1 (amd64)
utox/0.17.1-1 (arm64)

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
Ubuntu SRU Bot (ubuntu-sru-bot) wrote : Autopkgtest regression report (glibc/2.35-0ubuntu3.3)

All autopkgtests for the newly accepted glibc (2.35-0ubuntu3.3) for jammy have finished running.
The following regressions have been reported in tests triggered by the package:

adsys/0.9.2~22.04.1 (arm64)
datefudge/1.24 (arm64)
dbus/1.12.20-2ubuntu4.1 (armhf)
dpdk/21.11.3-0ubuntu0.22.04.1 (arm64)
ganeti/3.0.2-1ubuntu1 (armhf)
gcc-9/9.5.0-1ubuntu1~22.04 (armhf)
gjs/1.72.4-0ubuntu0.22.04.1 (amd64)
golang-github-canonical-go-dqlite/1.10.1-1 (arm64)
golang-github-influxdata-tail/1.0.0+git20180327.c434825-4 (amd64)
golang-github-xenolf-lego/4.1.3-3ubuntu1.22.04.1 (armhf)
golang-gogoprotobuf/1.3.2-1 (amd64, s390x)
google-osconfig-agent/20230504.00-0ubuntu1~22.04.0 (armhf)
gvfs/1.48.2-0ubuntu1 (amd64)
hilive/2.0a-3build3 (arm64)
hyphy/2.5.36+dfsg-1 (amd64)
kmediaplayer/5.92.0-0ubuntu1 (armhf)
libclass-methodmaker-perl/2.24-2build2 (armhf)
libflame/5.2.0-3ubuntu3 (arm64)
libimage-sane-perl/5-1build3 (s390x)
libuev/2.4.0-1.1 (s390x)
linux-aws-6.2/6.2.0-1009.9~22.04.2 (arm64)
linux-azure-5.19/5.19.0-1027.30~22.04.2 (arm64)
linux-azure-6.2/6.2.0-1009.9~22.04.2 (arm64)
linux-gcp-5.19/5.19.0-1030.32~22.04.1 (arm64)
linux-gke/5.15.0-1039.44 (arm64)
linux-hwe-5.19/5.19.0-50.50 (arm64)
linux-lowlatency/5.15.0-79.88 (arm64)
linux-nvidia-6.2/6.2.0-1006.6~22.04.2 (arm64)
linux-nvidia-tegra/5.15.0-1015.15 (arm64)
linux-oem-5.17/5.17.0-1035.36 (amd64)
linux-oracle-5.19/5.19.0-1027.30 (arm64)
linux-xilinx-zynqmp/5.15.0-1023.27 (arm64)
log4cxx/0.12.1-4 (armhf)
netplan.io/0.105-0ubuntu2~22.04.3 (arm64)
notcurses/3.0.6+dfsg.1-1 (armhf)
php-luasandbox/4.0.2-3build1 (ppc64el)
prometheus/2.31.2+ds1-1ubuntu1.22.04.2 (s390x)
qcustomplot/2.0.1+dfsg1-5 (armhf)
r-cran-mice/3.14.0-1 (armhf)
r-cran-randomfields/3.3.14-1 (armhf)
r-cran-sys/3.4-1 (s390x)
ruby-rblineprof/0.3.7-2build3 (arm64)
rustc/1.66.1+dfsg0ubuntu1-0ubuntu0.22.04.1 (arm64)
samba/2:4.15.13+dfsg-0ubuntu1.2 (s390x)
stunnel4/3:5.63-1build1 (ppc64el)
swtpm/0.6.3-0ubuntu3.2 (arm64)
tmux/3.2a-4ubuntu0.2 (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/jammy/update_excuses.html#glibc

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

Thank you!

Revision history for this message
Julian Schroeder (jumaco) wrote :

The SVE linux kernel issue is present in kernels < 6.3. "When encountering the next SVE instruction in user space, an exception (trap) is triggered that then re-enables SVE and restores the SVE context. This causes a 6% or worse performance degradation on our NGNIX test workload in a single core system.
With this we should hold off on merging SVE memcpy/memmove."

Revision history for this message
Mauricio Faria de Oliveira (mfo) wrote :

Hi. These patches are not included in glibc 2.35-0ubuntu3.3 (reverted from 3.2; diff [1]).

The automatic messages apparently still make it here due to the changelog mention in the incremental upload [2] (on top of 3.2, with the old "LP: #" still in place).

[1] https://launchpadlibrarian.net/679304586/glibc_2.35-0ubuntu3.2_2.35-0ubuntu3.3.diff.gz
[2] https://launchpad.net/ubuntu/+source/glibc/2.35-0ubuntu3.3

Simon Chopin (schopin)
tags: added: verification-done verification-done-focal verification-done-jammy
removed: verification-needed verification-needed-focal verification-needed-jammy
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package glibc - 2.35-0ubuntu3.3

---------------
glibc (2.35-0ubuntu3.3) jammy; urgency=medium

  * Drop SVE patches due to kernal-related performance regression
  * Fix the armhf stripping exception for ld.so (LP: #1927192)

glibc (2.35-0ubuntu3.2) jammy; urgency=medium

  * d/rules.d/debhelper.mk: fix permissions of libc.so (LP: #1989082)
  * Cherry-picks from upstream:
    - d/p/lp1999551/*: arm64 memcpy optimization (LP: #1999551)
    - d/p/lp1995362*.patch: Fix ldd segfault with missing libs (LP: #1995362)
    - d/p/lp2007796*: Fix missing cancellation point in pthread (LP: #2007796)
    - d/p/lp2007599*: add new tunables for s390x (LP: #2007599)
    - d/p/lp2011421/*: Fix crash on TDX-enabled platforms (LP: #2011421)
    - d/p/lp1992159*: Fix socket.h headers for non-GNU compilers (LP: #1992159)

 -- Simon Chopin <email address hidden> Wed, 26 Jul 2023 10:27:54 +0200

Changed in glibc (Ubuntu Jammy):
status: Fix Committed → Fix Released
Revision history for this message
Steve Langasek (vorlon) 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
Simon Chopin (schopin) wrote :

Adjusting the Jammy status, as it had incorrectly been marked as Fix Released due to automation. The final version that was released does *not* include the patches.

Changed in glibc (Ubuntu Jammy):
status: Fix Released → Triaged
Revision history for this message
Launchpad Janitor (janitor) wrote :

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

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

  * Drop SVE memcpy implementation due to kernel-related performance
    regression

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

  * Drop memcmp arm64 SIMD optimization patch due to performance regression
    on Raspberry Pi 3+ and 4

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

  [ Andrei Gherzan ]
  * d/p/lp1910312: Backport upstream fix for SEM_STAT_ANY (LP: #1910312)

  [ Simon Chopin ]
  * d/p/lp1999551/*: backport mem{cmp,cpy} optimizations for arm64 (LP: #1999551)
  * d/p/lp2001932/*: fix segfault in AVX2 strncmp (LP: #2001932)
  * d/p/lp2001975/*: fix overflow in AVX2 wcsncmp (LP: #2001975)

 -- Simon Chopin <email address hidden> Wed, 26 Jul 2023 09:44:39 +0200

Changed in glibc (Ubuntu Focal):
status: Fix Committed → Fix Released
Revision history for this message
Simon Chopin (schopin) wrote :

Reverting the Focal status back to Triaged since the fix was subsequently reverted (see #43)

Changed in glibc (Ubuntu Focal):
status: Fix Released → Triaged
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.