** Description changed:

  [Impact]
  
  * libc6 is not using LSE atomics even on capable HW causing poor
  performance in heavily threaded application
  
  [Test Case]
  
  * install libc6-lse on capable arm64
- * verify that the library is in use 
+ * verify that the library is in use:
+ $ strace -eopenat ls
+ openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
+ openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libselinux.so.1", 
O_RDONLY|O_CLOEXEC) = 3
+ openat(AT_FDCWD, "/lib/aarch64-linux-gnu/atomics/libc.so.6", 
O_RDONLY|O_CLOEXEC) = 3
+ openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libpcre.so.3", O_RDONLY|O_CLOEXEC) = 
3
+ openat(AT_FDCWD, "/lib/aarch64-linux-gnu/atomics/libdl.so.2", 
O_RDONLY|O_CLOEXEC) = 3
+ openat(AT_FDCWD, "/lib/aarch64-linux-gnu/atomics/libpthread.so.0", 
O_RDONLY|O_CLOEXEC) = 3
+ 
  
  [Regression Potential]
  
- TODO
+ * The libraries in libc6-lse can't be run on not LSE capable HW and trying to 
use them results in crashes due to the illegal instructions. The fix includes 
proper checking for HW capabilities and selecting the libraries in 
/lib/aarch64-linux-gnu/atomics/ only when LSE instructions are supported.
+ * The package build can also fail when trying to run tests of libc6-lse on 
not LSE capable HW but this is avoided by detecting LSE instructions and 
running the tests only if the HW supports them.
+ * Initramfs-tools could break when generating intramfs when the new libc6-lse 
package is installed (LP: #1880853), but this regression is fixed in 
initramfs-tools and Breaks: is added against affected initramfs-tools versions.
+ 
  
  [Other Info]

** Description changed:

  [Impact]
  
  * libc6 is not using LSE atomics even on capable HW causing poor
  performance in heavily threaded application
  
  [Test Case]
  
  * install libc6-lse on capable arm64
  * verify that the library is in use:
  $ strace -eopenat ls
  openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
  openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libselinux.so.1", 
O_RDONLY|O_CLOEXEC) = 3
  openat(AT_FDCWD, "/lib/aarch64-linux-gnu/atomics/libc.so.6", 
O_RDONLY|O_CLOEXEC) = 3
  openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libpcre.so.3", O_RDONLY|O_CLOEXEC) = 
3
  openat(AT_FDCWD, "/lib/aarch64-linux-gnu/atomics/libdl.so.2", 
O_RDONLY|O_CLOEXEC) = 3
  openat(AT_FDCWD, "/lib/aarch64-linux-gnu/atomics/libpthread.so.0", 
O_RDONLY|O_CLOEXEC) = 3
  
- 
  [Regression Potential]
  
  * The libraries in libc6-lse can't be run on not LSE capable HW and trying to 
use them results in crashes due to the illegal instructions. The fix includes 
proper checking for HW capabilities and selecting the libraries in 
/lib/aarch64-linux-gnu/atomics/ only when LSE instructions are supported.
  * The package build can also fail when trying to run tests of libc6-lse on 
not LSE capable HW but this is avoided by detecting LSE instructions and 
running the tests only if the HW supports them.
  * Initramfs-tools could break when generating intramfs when the new libc6-lse 
package is installed (LP: #1880853), but this regression is fixed in 
initramfs-tools and Breaks: is added against affected initramfs-tools versions.
  
- 
  [Other Info]

** Attachment added: "pthread test program"
   
https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1885012/+attachment/5409192/+files/a.c

** Description changed:

  [Impact]
  
  * libc6 is not using LSE atomics even on capable HW causing poor
  performance in heavily threaded application
  
  [Test Case]
  
  * install libc6-lse on capable arm64
  * verify that the library is in use:
  $ strace -eopenat ls
  openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
  openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libselinux.so.1", 
O_RDONLY|O_CLOEXEC) = 3
  openat(AT_FDCWD, "/lib/aarch64-linux-gnu/atomics/libc.so.6", 
O_RDONLY|O_CLOEXEC) = 3
  openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libpcre.so.3", O_RDONLY|O_CLOEXEC) = 
3
  openat(AT_FDCWD, "/lib/aarch64-linux-gnu/atomics/libdl.so.2", 
O_RDONLY|O_CLOEXEC) = 3
  openat(AT_FDCWD, "/lib/aarch64-linux-gnu/atomics/libpthread.so.0", 
O_RDONLY|O_CLOEXEC) = 3
+ * Compile and run the attached a.c test program and observe it running much 
faster on high (>= 8) core count capable HW than with the standard libc6 
package.
  
  [Regression Potential]
  
  * The libraries in libc6-lse can't be run on not LSE capable HW and trying to 
use them results in crashes due to the illegal instructions. The fix includes 
proper checking for HW capabilities and selecting the libraries in 
/lib/aarch64-linux-gnu/atomics/ only when LSE instructions are supported.
  * The package build can also fail when trying to run tests of libc6-lse on 
not LSE capable HW but this is avoided by detecting LSE instructions and 
running the tests only if the HW supports them.
  * Initramfs-tools could break when generating intramfs when the new libc6-lse 
package is installed (LP: #1880853), but this regression is fixed in 
initramfs-tools and Breaks: is added against affected initramfs-tools versions.
  
  [Other Info]

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1885012

Title:
  Provide libc6-lse binary package optimized for Large System Extensions
  (LSE)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1885012/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to