[dm-devel] [Question] multipathd add/remove paths takes a long time
Wu Guanghao
wuguanghao3 at huawei.com
Fri Jul 22 06:28:30 UTC 2022
在 2022/7/21 22:34, Benjamin Marzinski 写道:
> On Tue, Jul 19, 2022 at 08:13:39PM +0800, Wu Guanghao wrote:
>> The system has 1K multipath devices, each device has 16 paths.
>> Execute multipathd add/multipathd remove or uev_add_path/
>> uev_remove_path to add/remove paths, which takes over 20s.
>> What's more, the second checkloop may be execed immediately
>> after finishing first checkloop. It's too long.
>>
>> We found that time was mostly spent waiting for locks.
>>
>> checkerloop(){
>> ...
>> lock(&vecs->lock);
>> vector_foreach_slot (vecs->pathvec, pp, i) {
>> rc = check_path(...); // Too many paths, it takes a long time
>> ...
>> }
>> lock_cleanup_pop(vecs->lock);
>> ...
>> }
>>
>> Can the range of vecs->lock locks be adjusted to reduce the time consuming
>> when adding/removing paths?
>
> As long as we make sure not to skip any paths or double-check any paths,
> we don't need to hold the vecs->lock between checking paths. There is
> certainly some optimization that could get done here.
>
> could you post the output of:
>
> # multipath -l <sample_multipath_device>
> # multipathd show config local
>
This is the output and time consuming of 'multipath -l'
# time multipath -l 364cf55b10097699e01a9c4d4000003c4
174181.329435 | loading /lib64/multipath/libchecktur.so checker
364cf55b10097699e01a9c4d4000003c4 dm-604 HUAWEI,XSG1
size=1.0G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active
|- 27:0:0:591 sdlgf 70:8368 active undef running
|- 28:0:0:591 sdlhs 129:8224 active undef running
|- 39:0:0:591 sdlst 131:8464 active undef running
|- 24:0:0:591 sdmdv 133:8720 active undef running
|- 40:0:0:591 sdmej 133:8944 active undef running
|- 29:0:0:591 sdmes 134:8832 active undef running
|- 37:0:0:591 sdmhl 66:9200 active undef running
|- 38:0:0:591 sdmju 70:9152 active undef running
|- 26:0:0:591 sdmjx 70:9200 active undef running
|- 41:0:0:591 sdnre 133:9728 active undef running
|- 43:0:0:591 sdnrz 134:9808 active undef running
`- 42:0:0:591 sdnsp 135:9808 active undef running
real 0m37.570s
user 0m28.676s
sys 0m8.112s
This is the output of 'multipathd show config local'
timeout
defaults {
verbosity 2
polling_interval 5
max_polling_interval 20
reassign_maps "no"
multipath_dir "/lib64/multipath"
path_selector "service-time 0"
path_grouping_policy "group_by_prio"
uid_attribute "ID_SERIAL"
prio "const"
prio_args ""
features "0"
path_checker "tur"
alias_prefix "mpath"
failback "immediate"
rr_min_io 1000
rr_min_io_rq 1
max_fds "max"
rr_weight "uniform"
no_path_retry 18
queue_without_daemon "no"
flush_on_last_del "no"
user_friendly_names "no"
fast_io_fail_tmo 5
bindings_file "/etc/multipath/bindings"
wwids_file "/etc/multipath/wwids"
prkeys_file "/etc/multipath/prkeys"
log_checker_err once
reservation_key file
all_tg_pt "no"
retain_attached_hw_handler "yes"
detect_prio "yes"
detect_checker "yes"
force_sync "no"
strict_timing "no"
deferred_remove "yes"
config_dir "/etc/multipath/conf.d"
delay_watch_checks "no"
delay_wait_checks "no"
san_path_err_threshold "no"
san_path_err_forget_rate "no"
san_path_err_recovery_time "no"
marginal_path_err_sample_time "no"
marginal_path_err_rate_threshold "no"
marginal_path_err_recheck_gap_time "no"
marginal_path_double_failed_time "no"
find_multipaths "off"
uxsock_timeout 4000
retrigger_tries 3
retrigger_delay 10
missing_uev_wait_timeout 30
skip_kpartx "no"
disable_changed_wwids ignored
remove_retries 0
ghost_delay "no"
find_multipaths_timeout -10
enable_foreign ""
marginal_pathgroups "no"
}
blacklist {
devnode "^(ram|zram|raw|loop|fd|md|dm-|sr|scd|st|dcssblk)[0-9]"
devnode "^(td|hd|vd)[a-z]"
device {
vendor "SGI"
product "Universal Xport"
}
device {
vendor "^DGC"
product "LUNZ"
}
device {
vendor "EMC"
product "LUNZ"
}
device {
vendor "DELL"
product "Universal Xport"
}
device {
vendor "IBM"
product "Universal Xport"
}
device {
vendor "LENOVO"
product "Universal Xport"
}
device {
vendor "(NETAPP|LSI|ENGENIO)"
product "Universal Xport"
}
device {
vendor "STK"
product "Universal Xport"
}
device {
vendor "SUN"
product "Universal Xport"
}
device {
vendor "(Intel|INTEL)"
product "VTrak V-LUN"
}
device {
vendor "Promise"
product "VTrak V-LUN"
}
device {
vendor "Promise"
product "Vess V-LUN"
}
device {
vendor "IBM"
product "S/390.*"
}
}
blacklist_exceptions {
}
devices {
device {
vendor "HUAWEI"
product "XSG1"
path_grouping_policy "group_by_prio"
prio "alua"
}
}
overrides {
}
multipaths {
multipath {
wwid "364cf55b10097699e0197320300000174"
}
multipath {
wwid "364cf55b10097699e018d9d9500000171"
}
...
}
> -Ben
>
> .
>
More information about the dm-devel
mailing list