[Bug 1885012] Re: Provide libc6-lse binary package optimized for Large System Extensions (LSE)

Balint Reczey 1885012 at bugs.launchpad.net
Fri Oct 9 16:04:14 UTC 2020


Verified with 2.27-3ubuntu1.3 on Bionic.

ubuntu at ip-172-31-33-219:~$ dpkg -l libc6 libc6-lse | cat
dpkg-query: no packages found matching libc6-lse
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version         Architecture Description
+++-==============-===============-============-=================================
ii  libc6:arm64    2.27-3ubuntu1.3 arm64        GNU C Library: Shared libraries
ubuntu at ip-172-31-33-219:~$ 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/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/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/proc/filesystems", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/aarch64-linux-gnu/gconv/gconv-modules.cache", O_RDONLY) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_MEASUREMENT", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_TELEPHONE", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_ADDRESS", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_NAME", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_PAPER", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_MESSAGES", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_MESSAGES/SYS_LC_MESSAGES", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_MONETARY", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_COLLATE", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_TIME", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_NUMERIC", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_CTYPE", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, ".", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
a.c  a.out
+++ exited with 0 +++
ubuntu at ip-172-31-33-219:~$ gcc -O2 -o a.out a.c -lpthread -DITER=1000 -DTHREADS=64
ubuntu at ip-172-31-33-219:~$ ./a.out 
thread 0: min=128, max=202622080, average=136215.531250, mutexes_locked=10663, flips=0
thread 1: min=128, max=285471840, average=17960.134766, mutexes_locked=78401, flips=1
thread 2: min=128, max=195449376, average=80376.078125, mutexes_locked=17194, flips=1
thread 3: min=128, max=265049664, average=12830.956055, mutexes_locked=103458, flips=0
thread 4: min=128, max=382705952, average=16430.542969, mutexes_locked=72433, flips=0
thread 5: min=128, max=217932064, average=14540233.000000, mutexes_locked=93, flips=0
thread 6: min=128, max=219085888, average=70205.203125, mutexes_locked=17430, flips=0
thread 7: min=128, max=265637312, average=32240.302734, mutexes_locked=39906, flips=0
thread 8: min=128, max=171533056, average=18359.027344, mutexes_locked=69059, flips=0
thread 9: min=128, max=390047232, average=68779.570312, mutexes_locked=21468, flips=0
thread 10: min=128, max=210032352, average=4176407.250000, mutexes_locked=354, flips=1
thread 11: min=128, max=303787296, average=22163.617188, mutexes_locked=64889, flips=0
thread 12: min=128, max=343074752, average=47846.933594, mutexes_locked=30841, flips=0
thread 13: min=128, max=202920768, average=28269.964844, mutexes_locked=51255, flips=2
thread 14: min=128, max=194553152, average=24361.039062, mutexes_locked=59795, flips=2
thread 15: min=128, max=296455584, average=97139.250000, mutexes_locked=13318, flips=1
thread 16: min=128, max=264621664, average=46561.179688, mutexes_locked=29095, flips=3
thread 17: min=128, max=265127680, average=11381.584961, mutexes_locked=121063, flips=1
thread 18: min=128, max=281418848, average=34689.199219, mutexes_locked=37234, flips=1
thread 19: min=128, max=171594784, average=103475.148438, mutexes_locked=13929, flips=3
thread 20: min=128, max=280893504, average=46895.488281, mutexes_locked=29550, flips=0
thread 21: min=128, max=203348224, average=98628.250000, mutexes_locked=14381, flips=1
thread 22: min=128, max=202185280, average=1178475.000000, mutexes_locked=900, flips=1
thread 23: min=128, max=218387936, average=109334.750000, mutexes_locked=13400, flips=961
thread 24: min=128, max=327741280, average=14713702.000000, mutexes_locked=88, flips=0
thread 25: min=128, max=296289632, average=51559.507812, mutexes_locked=28390, flips=0
thread 26: min=128, max=327571072, average=20917.150391, mutexes_locked=67945, flips=1
thread 27: min=128, max=296373600, average=7844082.000000, mutexes_locked=167, flips=1
thread 28: min=128, max=421409984, average=24436.640625, mutexes_locked=58824, flips=0
thread 29: min=128, max=374428416, average=22664.373047, mutexes_locked=62406, flips=1
thread 30: min=128, max=218332000, average=18031018.000000, mutexes_locked=80, flips=0
thread 31: min=128, max=265216704, average=8871683.000000, mutexes_locked=160, flips=0
thread 32: min=128, max=171492512, average=37041.085938, mutexes_locked=35292, flips=0
thread 33: min=128, max=242293440, average=22668.140625, mutexes_locked=63912, flips=0
thread 34: min=128, max=249929568, average=35306.703125, mutexes_locked=35472, flips=0
thread 35: min=128, max=156202368, average=88255.375000, mutexes_locked=14304, flips=0
thread 36: min=128, max=211019584, average=44352.406250, mutexes_locked=30008, flips=0
thread 37: min=128, max=358924224, average=49087.457031, mutexes_locked=27600, flips=1
thread 38: min=128, max=296413632, average=46659.050781, mutexes_locked=29735, flips=0
thread 39: min=128, max=257856000, average=20518.306641, mutexes_locked=66627, flips=1
thread 40: min=128, max=155998016, average=14021.840820, mutexes_locked=73050, flips=2
thread 41: min=128, max=226665504, average=31297.167969, mutexes_locked=43302, flips=0
thread 42: min=128, max=211103072, average=22528.082031, mutexes_locked=63788, flips=0
thread 43: min=128, max=171350752, average=901092.812500, mutexes_locked=1445, flips=1
thread 44: min=128, max=242238464, average=93425.960938, mutexes_locked=13592, flips=0
thread 45: min=128, max=280459552, average=37028.617188, mutexes_locked=33627, flips=0
thread 46: min=128, max=272890112, average=17198.107422, mutexes_locked=83455, flips=1
thread 47: min=128, max=311986656, average=66256.562500, mutexes_locked=20692, flips=0
thread 48: min=128, max=218158720, average=9965.125000, mutexes_locked=131929, flips=0
thread 49: min=128, max=202931200, average=19828.449219, mutexes_locked=57188, flips=0
thread 50: min=128, max=328106880, average=18321.082031, mutexes_locked=72887, flips=0
thread 51: min=128, max=312036512, average=16550.621094, mutexes_locked=87198, flips=1
thread 52: min=128, max=241812160, average=22006.316406, mutexes_locked=65670, flips=0
thread 53: min=128, max=265257440, average=12535.343750, mutexes_locked=115069, flips=0
thread 54: min=128, max=218277088, average=17168.166016, mutexes_locked=76369, flips=2
thread 55: min=128, max=296524192, average=78772.531250, mutexes_locked=18466, flips=1
thread 56: min=128, max=234082208, average=31224.683594, mutexes_locked=44888, flips=0
thread 57: min=128, max=233833376, average=2102463.000000, mutexes_locked=690, flips=3
thread 58: min=128, max=218189536, average=99991.265625, mutexes_locked=13872, flips=0
thread 59: min=128, max=179917504, average=13216.059570, mutexes_locked=103756, flips=0
thread 60: min=128, max=327572416, average=24879.900391, mutexes_locked=58795, flips=3
thread 61: min=128, max=273512128, average=17095430.000000, mutexes_locked=78, flips=0
thread 62: min=128, max=140950752, average=48152.300781, mutexes_locked=29432, flips=0
thread 63: min=128, max=600201408, average=30847.994141, mutexes_locked=43875, flips=2
server: min=128, max=226092832, average=26893.224609, mutexes_locked=54646, flips=1000
ubuntu at ip-172-31-33-219:~$ time ./a.out 
thread 0: min=128, max=202775552, average=36288.757812, mutexes_locked=45221, flips=0
thread 1: min=128, max=249545632, average=18736.197266, mutexes_locked=77080, flips=0
thread 2: min=128, max=187151776, average=25841.167969, mutexes_locked=63792, flips=1
thread 3: min=128, max=265305504, average=24874.847656, mutexes_locked=64383, flips=0
thread 4: min=128, max=187774624, average=16987.982422, mutexes_locked=87232, flips=1
thread 5: min=128, max=225252192, average=64116.804688, mutexes_locked=26000, flips=0
thread 6: min=128, max=195055040, average=23934.007812, mutexes_locked=61052, flips=1
thread 7: min=128, max=218444064, average=16034.120117, mutexes_locked=103665, flips=0
thread 8: min=128, max=194077280, average=16474.224609, mutexes_locked=97966, flips=1
thread 9: min=128, max=250248096, average=49201.113281, mutexes_locked=30219, flips=0
thread 10: min=128, max=359090560, average=95415.140625, mutexes_locked=15355, flips=1
thread 11: min=128, max=156381824, average=26091.261719, mutexes_locked=57796, flips=1
thread 12: min=128, max=375016736, average=58106.355469, mutexes_locked=28412, flips=0
thread 13: min=128, max=234046720, average=45886.246094, mutexes_locked=35965, flips=0
thread 14: min=128, max=412859392, average=258444.734375, mutexes_locked=6456, flips=0
thread 15: min=128, max=280137120, average=109022.507812, mutexes_locked=15016, flips=0
thread 16: min=128, max=171764416, average=18462.046875, mutexes_locked=76517, flips=0
thread 17: min=128, max=140576096, average=18356.292969, mutexes_locked=75289, flips=0
thread 18: min=128, max=218478784, average=49404.136719, mutexes_locked=30576, flips=1
thread 19: min=128, max=234092576, average=35604.839844, mutexes_locked=44814, flips=0
thread 20: min=128, max=264803360, average=21737.238281, mutexes_locked=67198, flips=0
thread 21: min=128, max=233360864, average=29054.957031, mutexes_locked=56213, flips=0
thread 22: min=128, max=162820832, average=33043.156250, mutexes_locked=45457, flips=0
thread 23: min=128, max=249392544, average=43956.167969, mutexes_locked=37192, flips=0
thread 24: min=128, max=218525120, average=48978.308594, mutexes_locked=30206, flips=0
thread 25: min=128, max=234462464, average=103251.859375, mutexes_locked=15954, flips=1
thread 26: min=128, max=256805984, average=100495.812500, mutexes_locked=15510, flips=0
thread 27: min=128, max=187185600, average=173422.140625, mutexes_locked=8273, flips=1
thread 28: min=128, max=327769536, average=72212.500000, mutexes_locked=22656, flips=0
thread 29: min=128, max=194288224, average=16337.498047, mutexes_locked=98801, flips=0
thread 30: min=128, max=232900736, average=49341.312500, mutexes_locked=29501, flips=0
thread 31: min=128, max=226768032, average=40821.546875, mutexes_locked=33942, flips=0
thread 32: min=128, max=390249504, average=43526.609375, mutexes_locked=37204, flips=1
thread 33: min=128, max=311526880, average=109124.171875, mutexes_locked=15001, flips=0
thread 34: min=128, max=265392768, average=35110.378906, mutexes_locked=46833, flips=0
thread 35: min=128, max=156003456, average=38188.652344, mutexes_locked=38313, flips=0
thread 36: min=128, max=280347168, average=15906.828125, mutexes_locked=88740, flips=0
thread 37: min=128, max=281357344, average=22497.488281, mutexes_locked=73018, flips=1
thread 38: min=128, max=295997216, average=23829.187500, mutexes_locked=68932, flips=982
thread 39: min=128, max=343198880, average=23815.556641, mutexes_locked=68548, flips=1
thread 40: min=128, max=265188384, average=35697.222656, mutexes_locked=45350, flips=0
thread 41: min=128, max=405704448, average=182765.171875, mutexes_locked=8020, flips=0
thread 42: min=128, max=218719872, average=25703.791016, mutexes_locked=59565, flips=0
thread 43: min=128, max=343072800, average=28634.669922, mutexes_locked=53772, flips=0
thread 44: min=128, max=179864704, average=14064.057617, mutexes_locked=106429, flips=0
thread 45: min=128, max=179843296, average=25217.250000, mutexes_locked=59170, flips=0
thread 46: min=128, max=211197696, average=48879.082031, mutexes_locked=29320, flips=0
thread 47: min=128, max=233975168, average=51151.796875, mutexes_locked=31058, flips=0
thread 48: min=128, max=265659680, average=35999.316406, mutexes_locked=45445, flips=1
thread 49: min=128, max=249111584, average=35461.429688, mutexes_locked=46082, flips=0
thread 50: min=128, max=334780192, average=41472.347656, mutexes_locked=38486, flips=0
thread 51: min=128, max=358777984, average=18424.933594, mutexes_locked=86803, flips=0
thread 52: min=128, max=172021216, average=21271.957031, mutexes_locked=75973, flips=2
thread 53: min=128, max=233554048, average=9869008.000000, mutexes_locked=166, flips=0
thread 54: min=128, max=374320768, average=52629.281250, mutexes_locked=29880, flips=0
thread 55: min=128, max=327078720, average=54973.636719, mutexes_locked=29784, flips=1
thread 56: min=128, max=296259808, average=29250.394531, mutexes_locked=52176, flips=0
thread 57: min=128, max=218896160, average=47844.390625, mutexes_locked=30425, flips=0
thread 58: min=128, max=296342464, average=31385.640625, mutexes_locked=45617, flips=1
thread 59: min=128, max=194607232, average=32321.542969, mutexes_locked=48136, flips=0
thread 60: min=128, max=249039680, average=153157.953125, mutexes_locked=9263, flips=0
thread 61: min=128, max=156064480, average=66134.593750, mutexes_locked=24741, flips=0
thread 62: min=128, max=374145408, average=40410.339844, mutexes_locked=36002, flips=1
thread 63: min=128, max=327196224, average=34403.753906, mutexes_locked=45278, flips=0
server: min=128, max=701799200, average=268447.125000, mutexes_locked=6240, flips=1000

real	0m0.432s
user	0m6.892s
sys	0m0.004s
ubuntu at ip-172-31-33-219:~$ sudo apt install -yqq libc6-lse
The following NEW packages will be installed:
  libc6-lse
0 upgraded, 1 newly installed, 0 to remove and 18 not upgraded.
Need to get 1077 kB of archives.
After this operation, 3304 kB of additional disk space will be used.
Selecting previously unselected package libc6-lse:arm64.
(Reading database ... 94946 files and directories currently installed.)
Preparing to unpack .../libc6-lse_2.27-3ubuntu1.3_arm64.deb ...
Unpacking libc6-lse:arm64 (2.27-3ubuntu1.3) ...
Setting up libc6-lse:arm64 (2.27-3ubuntu1.3) ...
Processing triggers for libc-bin (2.27-3ubuntu1.3) ...
ubuntu at ip-172-31-33-219:~$ 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
openat(AT_FDCWD, "/proc/filesystems", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/aarch64-linux-gnu/gconv/gconv-modules.cache", O_RDONLY) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_MEASUREMENT", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_TELEPHONE", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_ADDRESS", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_NAME", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_PAPER", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_MESSAGES", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_MESSAGES/SYS_LC_MESSAGES", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_MONETARY", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_COLLATE", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_TIME", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_NUMERIC", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/usr/lib/locale/C.UTF-8/LC_CTYPE", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, ".", O_RDONLY|O_NONBLOCK|O_CLOEXEC|O_DIRECTORY) = 3
a.c  a.out
+++ exited with 0 +++
ubuntu at ip-172-31-33-219:~$ time ./a.out 
thread 0: min=128, max=851840, average=17455.943359, mutexes_locked=1686, flips=45
thread 1: min=128, max=1308384, average=40662.308594, mutexes_locked=776, flips=16
thread 2: min=128, max=1612704, average=14104.613281, mutexes_locked=2231, flips=63
thread 3: min=128, max=970976, average=13640.013672, mutexes_locked=2288, flips=43
thread 4: min=128, max=220736, average=10136.965820, mutexes_locked=1424, flips=37
thread 5: min=128, max=913632, average=12980.020508, mutexes_locked=2519, flips=64
thread 6: min=128, max=784096, average=13341.416992, mutexes_locked=2441, flips=52
thread 7: min=128, max=724576, average=10121.278320, mutexes_locked=3235, flips=72
thread 8: min=128, max=1373760, average=13463.912109, mutexes_locked=2445, flips=60
thread 9: min=128, max=839488, average=15711.789062, mutexes_locked=2121, flips=46
thread 10: min=128, max=467072, average=14799.766602, mutexes_locked=2263, flips=42
thread 11: min=128, max=844000, average=14749.674805, mutexes_locked=2285, flips=42
thread 12: min=128, max=873184, average=13017.318359, mutexes_locked=2591, flips=35
thread 13: min=128, max=947488, average=13383.441406, mutexes_locked=2533, flips=42
thread 14: min=128, max=1055136, average=20691.996094, mutexes_locked=1650, flips=26
thread 15: min=128, max=1027968, average=25056.958984, mutexes_locked=1367, flips=14
thread 16: min=128, max=1462560, average=14085.414062, mutexes_locked=2435, flips=58
thread 17: min=128, max=2060128, average=24347.046875, mutexes_locked=1428, flips=13
thread 18: min=128, max=1075680, average=12786.740234, mutexes_locked=2698, flips=52
thread 19: min=128, max=1178464, average=21791.363281, mutexes_locked=1609, flips=35
thread 20: min=128, max=1985792, average=15403.351562, mutexes_locked=2275, flips=27
thread 21: min=128, max=1180416, average=25463.050781, mutexes_locked=1373, flips=17
thread 22: min=128, max=1569664, average=26278.457031, mutexes_locked=1343, flips=10
thread 23: min=128, max=913984, average=28779.505859, mutexes_locked=1232, flips=11
thread 24: min=128, max=835264, average=36856.191406, mutexes_locked=963, flips=16
thread 25: min=128, max=1162528, average=25859.195312, mutexes_locked=1382, flips=14
thread 26: min=128, max=1266720, average=24596.912109, mutexes_locked=1469, flips=10
thread 27: min=128, max=1561568, average=31039.863281, mutexes_locked=1171, flips=8
thread 28: min=128, max=1083072, average=25586.796875, mutexes_locked=1430, flips=10
thread 29: min=128, max=1579776, average=22116.525391, mutexes_locked=1669, flips=19
thread 30: min=128, max=3101792, average=48816.921875, mutexes_locked=730, flips=0
thread 31: min=128, max=30080, average=2023.529419, mutexes_locked=17, flips=0
thread 32: min=128, max=72352, average=4123.428711, mutexes_locked=28, flips=0
thread 33: min=128, max=5016896, average=560679.375000, mutexes_locked=39, flips=0
thread 34: min=1888, max=1888, average=1888.000000, mutexes_locked=1, flips=0
thread 35: min=832, max=832, average=832.000000, mutexes_locked=1, flips=0
thread 36: min=1000000, max=0, average=nan, mutexes_locked=0, flips=0
thread 37: min=608, max=38848, average=13418.666992, mutexes_locked=3, flips=0
thread 38: min=128, max=74624, average=4579.000000, mutexes_locked=32, flips=0
thread 39: min=86208, max=86208, average=86208.000000, mutexes_locked=1, flips=0
thread 40: min=1000000, max=0, average=nan, mutexes_locked=0, flips=0
thread 41: min=1152, max=54976, average=28064.000000, mutexes_locked=2, flips=0
thread 42: min=128, max=6300224, average=212758.406250, mutexes_locked=30, flips=0
thread 43: min=224, max=78560, average=16070.400391, mutexes_locked=5, flips=0
thread 44: min=1000000, max=0, average=nan, mutexes_locked=0, flips=0
thread 45: min=1000000, max=0, average=nan, mutexes_locked=0, flips=0
thread 46: min=1000000, max=0, average=nan, mutexes_locked=0, flips=0
thread 47: min=128, max=6826048, average=299241.000000, mutexes_locked=71, flips=0
thread 48: min=1000000, max=0, average=nan, mutexes_locked=0, flips=0
thread 49: min=1000000, max=0, average=nan, mutexes_locked=0, flips=0
thread 50: min=1000000, max=6356064, average=6356064.000000, mutexes_locked=1, flips=0
thread 51: min=1000000, max=0, average=nan, mutexes_locked=0, flips=0
thread 52: min=128, max=2077408, average=38719.035156, mutexes_locked=829, flips=0
thread 53: min=1000000, max=0, average=nan, mutexes_locked=0, flips=0
thread 54: min=160, max=704, average=344.000000, mutexes_locked=4, flips=0
thread 55: min=1000000, max=0, average=nan, mutexes_locked=0, flips=0
thread 56: min=26016, max=26016, average=26016.000000, mutexes_locked=1, flips=0
thread 57: min=1000000, max=0, average=nan, mutexes_locked=0, flips=0
thread 58: min=1000000, max=0, average=nan, mutexes_locked=0, flips=0
thread 59: min=93504, max=93504, average=93504.000000, mutexes_locked=1, flips=0
thread 60: min=160, max=37056, average=7648.000000, mutexes_locked=5, flips=0
thread 61: min=128, max=5559136, average=724296.875000, mutexes_locked=36, flips=1
thread 62: min=128, max=576, average=298.666656, mutexes_locked=6, flips=0
thread 63: min=1000000, max=0, average=nan, mutexes_locked=0, flips=0
server: min=128, max=3027776, average=20226.677734, mutexes_locked=1470, flips=1000

real	0m0.013s
user	0m0.020s
sys	0m0.166s
ubuntu at ip-172-31-33-219:~$ dpkg -l libc6 libc6-lse | cat
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name            Version         Architecture Description
+++-===============-===============-============-=================================
ii  libc6:arm64     2.27-3ubuntu1.3 arm64        GNU C Library: Shared libraries
ii  libc6-lse:arm64 2.27-3ubuntu1.3 arm64        GNU C Library: Shared Libraries


** Tags removed: verification-needed verification-needed-bionic
** Tags added: verification-done verification-done-bionic

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

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

Status in glibc package in Ubuntu:
  Fix Released
Status in glibc source package in Bionic:
  Fix Committed

Bug description:
  [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]

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



More information about the foundations-bugs mailing list