Accepting request 1085804 from Base:System
OBS-URL: https://build.opensuse.org/request/show/1085804 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/util-linux?expand=0&rev=270
This commit is contained in:
commit
96c4e4e9fb
83
fix-lib-internal-cache-size.patch
Normal file
83
fix-lib-internal-cache-size.patch
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
From 2fa4168c8bc9d5438bc1dfadda293c7c21b6fa59 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michael Trapp <michael.trapp@sap.com>
|
||||||
|
Date: Mon, 6 Mar 2023 10:40:20 +0000
|
||||||
|
Subject: [PATCH] libuuid: fix lib internal cache size
|
||||||
|
|
||||||
|
The lib internal cache improves throughput in high load
|
||||||
|
scenarios but for applications with a low request rate,
|
||||||
|
the cache size must be adapted to this situation.
|
||||||
|
Therefore the cache size should be changed to the current
|
||||||
|
requirements of the application during runtime.
|
||||||
|
---
|
||||||
|
libuuid/src/gen_uuid.c | 30 ++++++++++++++++++++++--------
|
||||||
|
1 file changed, 22 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
Index: util-linux-2.38.1/libuuid/src/gen_uuid.c
|
||||||
|
===================================================================
|
||||||
|
--- util-linux-2.38.1.orig/libuuid/src/gen_uuid.c
|
||||||
|
+++ util-linux-2.38.1/libuuid/src/gen_uuid.c
|
||||||
|
@@ -442,25 +442,35 @@ int __uuid_generate_time(uuid_t out, int
|
||||||
|
*/
|
||||||
|
static int uuid_generate_time_generic(uuid_t out) {
|
||||||
|
#ifdef HAVE_TLS
|
||||||
|
+ /* thread local cache for uuidd based requests */
|
||||||
|
+ const int cs_min = (1<<6);
|
||||||
|
+ const int cs_max = (1<<18);
|
||||||
|
+ const int cs_factor = 2;
|
||||||
|
THREAD_LOCAL int num = 0;
|
||||||
|
- THREAD_LOCAL int cache_size = 1;
|
||||||
|
+ THREAD_LOCAL int cache_size = cs_min;
|
||||||
|
+ THREAD_LOCAL int last_used = 0;
|
||||||
|
THREAD_LOCAL struct uuid uu;
|
||||||
|
THREAD_LOCAL time_t last_time = 0;
|
||||||
|
time_t now;
|
||||||
|
|
||||||
|
- if (num > 0) {
|
||||||
|
+ if (num > 0) { /* expire cache */
|
||||||
|
now = time(NULL);
|
||||||
|
- if (now > last_time+1)
|
||||||
|
+ if (now > last_time+1) {
|
||||||
|
+ last_used = cache_size - num;
|
||||||
|
num = 0;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
- if (num <= 0) {
|
||||||
|
+ if (num <= 0) { /* fill cache */
|
||||||
|
/*
|
||||||
|
* num + OP_BULK provides a local cache in each application.
|
||||||
|
* Start with a small cache size to cover short running applications
|
||||||
|
- * and increment the cache size over the runntime.
|
||||||
|
+ * and adjust the cache size over the runntime.
|
||||||
|
*/
|
||||||
|
- if (cache_size < 1000000)
|
||||||
|
- cache_size *= 10;
|
||||||
|
+ if ((last_used == cache_size) && (cache_size < cs_max))
|
||||||
|
+ cache_size *= cs_factor;
|
||||||
|
+ else if ((last_used < (cache_size / cs_factor)) && (cache_size > cs_min))
|
||||||
|
+ cache_size /= cs_factor;
|
||||||
|
+
|
||||||
|
num = cache_size;
|
||||||
|
|
||||||
|
if (get_uuid_via_daemon(UUIDD_OP_BULK_TIME_UUID,
|
||||||
|
@@ -470,9 +480,11 @@ static int uuid_generate_time_generic(uu
|
||||||
|
num--;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
+ /* request to daemon failed, reset cache */
|
||||||
|
num = 0;
|
||||||
|
+ cache_size = cs_min;
|
||||||
|
}
|
||||||
|
- if (num > 0) {
|
||||||
|
+ if (num > 0) { /* serve uuid from cache */
|
||||||
|
uu.time_low++;
|
||||||
|
if (uu.time_low == 0) {
|
||||||
|
uu.time_mid++;
|
||||||
|
@@ -481,6 +493,8 @@ static int uuid_generate_time_generic(uu
|
||||||
|
}
|
||||||
|
num--;
|
||||||
|
uuid_pack(&uu, out);
|
||||||
|
+ if (num == 0)
|
||||||
|
+ last_used = cache_size;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#else
|
@ -1,3 +1,21 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue May 9 19:46:41 UTC 2023 - Antonio Teixeira <antonio.teixeira@suse.com>
|
||||||
|
|
||||||
|
- Suppress error messages for grep command where the input file
|
||||||
|
might not exist (boo#1169835)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue May 9 16:31:55 UTC 2023 - Daniel Garcia <daniel.garcia@suse.com>
|
||||||
|
|
||||||
|
- Call fdupes without -s to avoid broken symlinks, pointing to
|
||||||
|
different subpackage. boo#1209990
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Apr 28 09:42:27 UTC 2023 - Daniel Garcia <daniel.garcia@suse.com>
|
||||||
|
|
||||||
|
- Add upstream patch fix-lib-internal-cache-size.patch
|
||||||
|
bsc#1210164, gh#util-linux/util-linux@2fa4168c8bc9
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Mar 31 13:02:13 UTC 2023 - Michal Koutný <mkoutny@suse.com>
|
Fri Mar 31 13:02:13 UTC 2023 - Michal Koutný <mkoutny@suse.com>
|
||||||
|
|
||||||
|
@ -114,6 +114,8 @@ Patch4: util-linux-bash-completion-su-chsh-l.patch
|
|||||||
Patch5: util-linux-fix-tests-when-at-symbol-in-path.patch
|
Patch5: util-linux-fix-tests-when-at-symbol-in-path.patch
|
||||||
# https://github.com/util-linux/util-linux/commit/0c0fb46dcef6c63c74094486e499e376fdb33a04.diff
|
# https://github.com/util-linux/util-linux/commit/0c0fb46dcef6c63c74094486e499e376fdb33a04.diff
|
||||||
Patch6: util-linux-honor-noclear-when-reprint-issue.patch
|
Patch6: util-linux-honor-noclear-when-reprint-issue.patch
|
||||||
|
# Patch-FIX_UPSTREAM: fix-lib-internal-cache-size.patch bsc#1210164 -- gh#util-linux/util-linux@2fa4168c8bc9
|
||||||
|
Patch7: fix-lib-internal-cache-size.patch
|
||||||
BuildRequires: audit-devel
|
BuildRequires: audit-devel
|
||||||
BuildRequires: bc
|
BuildRequires: bc
|
||||||
BuildRequires: binutils-devel
|
BuildRequires: binutils-devel
|
||||||
@ -663,7 +665,7 @@ rm -r %{buildroot}{%{_bindir},%{_mandir},%{_datadir},%{_includedir},%{_libdir}/{
|
|||||||
|
|
||||||
# fdupes for all multibuild flavors
|
# fdupes for all multibuild flavors
|
||||||
# Link duplicate manpages or python bindings.
|
# Link duplicate manpages or python bindings.
|
||||||
%fdupes -s %{buildroot}%{_prefix}
|
%fdupes %{buildroot}%{_prefix}
|
||||||
|
|
||||||
##############
|
##############
|
||||||
# Base check #
|
# Base check #
|
||||||
@ -752,7 +754,7 @@ done
|
|||||||
# Perform one-time config replace.
|
# Perform one-time config replace.
|
||||||
# Applies for: Update from SLE11, online update for SLE15 SP1, Leap15.1.
|
# Applies for: Update from SLE11, online update for SLE15 SP1, Leap15.1.
|
||||||
# Not needed for /etc/default/runuser. It was first packaged after the change.
|
# Not needed for /etc/default/runuser. It was first packaged after the change.
|
||||||
if ! grep -q "^# /etc/default/su is an override" %{_sysconfdir}/default/su ; then
|
if ! grep -qs "^# /etc/default/su is an override" %{_sysconfdir}/default/su ; then
|
||||||
if test -f %{_sysconfdir}/default/su.rpmnew ; then
|
if test -f %{_sysconfdir}/default/su.rpmnew ; then
|
||||||
if ! test -f %{_sysconfdir}/default/su.rpmorig ; then
|
if ! test -f %{_sysconfdir}/default/su.rpmorig ; then
|
||||||
cp -a %{_sysconfdir}/default/su %{_sysconfdir}/default/su.rpmorig
|
cp -a %{_sysconfdir}/default/su %{_sysconfdir}/default/su.rpmorig
|
||||||
|
Loading…
Reference in New Issue
Block a user