[dm-devel] [PATCH v4 0/5] multipath: optimizations for large mptable
Benjamin Marzinski
bmarzins at redhat.com
Mon Aug 29 17:42:23 UTC 2022
On Fri, Aug 26, 2022 at 08:05:51PM +0200, mwilck at suse.com wrote:
> From: Martin Wilck <mwilck at suse.com>
For the set:
Reviewed-by: Benjamin Marzinski <bmarzins at redhat.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 v3->v4:
>
> 02: more compilation fixes for msort.c to make it pass CI
> (only re-posting this patch)
>
> 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 | 271 ++++++++++++++++++++++++++++++++++++++++++
> libmultipath/msort.h | 6 +
> libmultipath/vector.c | 9 ++
> libmultipath/vector.h | 1 +
> multipath/main.c | 33 ++---
> 8 files changed, 352 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