From: d032747 Date: Fri, 22 Apr 2022 08:07:46 +0000 (+0200) Subject: libuuid: improve cache handling X-Git-Tag: v2.38.1~61 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=52a4208f760393cdfcdf4169f5db06ffc1bb2a4c;p=thirdparty%2Futil-linux.git libuuid: improve cache handling Short running applications with a few UUID request don't need a large cache. Therefore increment the cache size over runtime. --- diff --git a/libuuid/src/gen_uuid.c b/libuuid/src/gen_uuid.c index 76d5371ea7..805b40d901 100644 --- a/libuuid/src/gen_uuid.c +++ b/libuuid/src/gen_uuid.c @@ -443,6 +443,7 @@ int __uuid_generate_time(uuid_t out, int *num) static int uuid_generate_time_generic(uuid_t out) { #ifdef HAVE_TLS THREAD_LOCAL int num = 0; + THREAD_LOCAL int cache_size = 1; THREAD_LOCAL struct uuid uu; THREAD_LOCAL time_t last_time = 0; time_t now; @@ -453,7 +454,15 @@ static int uuid_generate_time_generic(uuid_t out) { num = 0; } if (num <= 0) { - num = 1000000; + /* + * 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. + */ + if (cache_size < 1000000) + cache_size *= 10; + num = cache_size; + if (get_uuid_via_daemon(UUIDD_OP_BULK_TIME_UUID, out, &num) == 0) { last_time = time(NULL);