[dm-devel] [PATCH v3 0/5] multipath: optimizations for large mptable
mwilck at suse.com
mwilck at suse.com
Fri Aug 26 16:21:58 UTC 2022
From: Martin Wilck <mwilck at suse.com>
We observe that multipath operations take a long time if the multipaths
section in multipath.conf contains a lot of alias settings
(10000+ in our case). This hurts in particular in udev rules, when
multipath -u or multipath -U is invoked, but also for command line
invocations like "multipath -ll".
This series provides a few optimizations for this use case. It speeds
up simple multipath operations in the test case by a factor of 20.
Changes v2->v3, after discussion with Benjamin Marzinski:
01, 02: added msort.c from glibc and adapted to our needs.
Numbering changes accordingly.
03, 04: (was 01, 02): remove pointer comparisons from v2 again, this was a
dumb idea. Use the stable msort algorithm instead.
Changes wrt v1, after suggestions from Benjamin Marzinski:
01, 02: Use pointer comparisons to achieve stable sorting with qsort
02: Fix return without popping the cleanup handler. The way I fixed this
leaves the possibility that some memory won't be freed if a thread is
killed while executing vector_convert(). I think this is acceptible;
avoiding it would complicate the code, with very small benefit.
02: Remove unnecessary checks and break loop if alias==NULL is encountered.
Martin Wilck (5):
libmultipath: add msort.c from glibc
libmultipath: modifications for msort.c
libmultipath: merge_mptable(): sort table by wwid
libmultipath: check_alias_settings(): pre-sort mptable by alias
multipath: optimize program startup for frequent invocations
libmultipath/Makefile | 2 +-
libmultipath/alias.c | 37 +++++-
libmultipath/config.c | 15 ++-
libmultipath/msort.c | 268 ++++++++++++++++++++++++++++++++++++++++++
libmultipath/msort.h | 6 +
libmultipath/vector.c | 9 ++
libmultipath/vector.h | 1 +
multipath/main.c | 33 +++---
8 files changed, 349 insertions(+), 22 deletions(-)
create mode 100644 libmultipath/msort.c
create mode 100644 libmultipath/msort.h
--
2.37.1
More information about the dm-devel
mailing list