* [PATCH v2] multipath: change default configuration parameters
@ 2013-01-10 20:05 Benjamin Marzinski
2013-01-11 7:00 ` Hannes Reinecke
0 siblings, 1 reply; 4+ messages in thread
From: Benjamin Marzinski @ 2013-01-10 20:05 UTC (permalink / raw)
To: device-mapper development; +Cc: Christophe Varoqui
This patch makes multipath devices default to setting fast_io_fail,
switches the default selector to service-time and removes the
round-robin setting of the builtin device configurations. The goal is
to give multipath devices better performance "out of the box".
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
libmultipath/config.c | 1
libmultipath/defaults.h | 2 -
libmultipath/hwtable.c | 65 ------------------------------------------------
3 files changed, 2 insertions(+), 66 deletions(-)
Index: multipath-tools-120821/libmultipath/config.c
===================================================================
--- multipath-tools-120821.orig/libmultipath/config.c
+++ multipath-tools-120821/libmultipath/config.c
@@ -516,6 +516,7 @@ load_config (char * file)
conf->reassign_maps = DEFAULT_REASSIGN_MAPS;
conf->checkint = DEFAULT_CHECKINT;
conf->max_checkint = MAX_CHECKINT(conf->checkint);
+ conf->fast_io_fail = 5;
/*
* preload default hwtable
Index: multipath-tools-120821/libmultipath/hwtable.c
===================================================================
--- multipath-tools-120821.orig/libmultipath/hwtable.c
+++ multipath-tools-120821/libmultipath/hwtable.c
@@ -28,7 +28,6 @@ static struct hwentry default_hw[] = {
.product = "Compellent Vol",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = MULTIBUS,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -50,7 +49,6 @@ static struct hwentry default_hw[] = {
.product = "Xserve RAID ",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = MULTIBUS,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -72,7 +70,6 @@ static struct hwentry default_hw[] = {
.product = "VV",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = MULTIBUS,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -88,7 +85,6 @@ static struct hwentry default_hw[] = {
.product = "HSG80",
.features = "1 queue_if_no_path",
.hwhandler = "1 hp_sw",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -104,7 +100,6 @@ static struct hwentry default_hw[] = {
.product = "A6189A",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = MULTIBUS,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -121,7 +116,6 @@ static struct hwentry default_hw[] = {
.product = "(MSA|HSV)1.0.*",
.features = "1 queue_if_no_path",
.hwhandler = "1 hp_sw",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -137,7 +131,6 @@ static struct hwentry default_hw[] = {
.product = "MSA VOLUME",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -153,7 +146,6 @@ static struct hwentry default_hw[] = {
.product = "HSV1[01]1|HSV2[01]0|HSV300|HSV4[05]0",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -169,7 +161,6 @@ static struct hwentry default_hw[] = {
.product = "MSA2[02]12fc|MSA2012i",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = MULTIBUS,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -185,7 +176,6 @@ static struct hwentry default_hw[] = {
.product = "MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -202,7 +192,6 @@ static struct hwentry default_hw[] = {
.product = "HSVX700",
.features = DEFAULT_FEATURES,
.hwhandler = "1 alua",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -219,7 +208,6 @@ static struct hwentry default_hw[] = {
.product = "LOGICAL VOLUME.*",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = MULTIBUS,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -236,7 +224,6 @@ static struct hwentry default_hw[] = {
.product = "P2000 G3 FC|P2000G3 FC/iSCSI|P2000 G3 SAS|P2000 G3 iSCSI",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -258,7 +245,6 @@ static struct hwentry default_hw[] = {
.product = "SAN DataDirector",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = MULTIBUS,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -280,7 +266,6 @@ static struct hwentry default_hw[] = {
.product = "SYMMETRIX",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = MULTIBUS,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -297,7 +282,6 @@ static struct hwentry default_hw[] = {
.bl_product = "LUNZ",
.features = "1 queue_if_no_path",
.hwhandler = "1 emc",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -314,7 +298,6 @@ static struct hwentry default_hw[] = {
.bl_product = "LUNZ",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = MULTIBUS,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -336,7 +319,6 @@ static struct hwentry default_hw[] = {
.product = "CentricStor",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_SERIAL,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -352,7 +334,6 @@ static struct hwentry default_hw[] = {
.product = "ETERNUS_DX(L|400|8000)",
.features = "1 queue_if_no_path",
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -373,7 +354,6 @@ static struct hwentry default_hw[] = {
.product = "OPEN-.*",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = MULTIBUS,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -389,7 +369,6 @@ static struct hwentry default_hw[] = {
.product = "DF.*",
.features = "1 queue_if_no_path",
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -411,7 +390,6 @@ static struct hwentry default_hw[] = {
.product = "ProFibre 4000R",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = MULTIBUS,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -429,7 +407,6 @@ static struct hwentry default_hw[] = {
.bl_product = "Universal Xport",
.features = "1 queue_if_no_path",
.hwhandler = "1 rdac",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -447,7 +424,6 @@ static struct hwentry default_hw[] = {
.bl_product = "Universal Xport",
.features = "1 queue_if_no_path",
.hwhandler = "1 rdac",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -465,7 +441,6 @@ static struct hwentry default_hw[] = {
.bl_product = "Universal Xport",
.features = "1 queue_if_no_path",
.hwhandler = "1 rdac",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -483,7 +458,6 @@ static struct hwentry default_hw[] = {
.bl_product = "Universal Xport",
.features = DEFAULT_FEATURES,
.hwhandler = "1 rdac",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -500,7 +474,6 @@ static struct hwentry default_hw[] = {
.bl_product = "Universal Xport",
.features = "2 pg_init_retries 50",
.hwhandler = "1 rdac",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -518,7 +491,6 @@ static struct hwentry default_hw[] = {
.bl_product = "Universal Xport",
.features = DEFAULT_FEATURES,
.hwhandler = "1 rdac",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -536,7 +508,6 @@ static struct hwentry default_hw[] = {
.bl_product = "Universal Xport",
.features = DEFAULT_FEATURES,
.hwhandler = "1 rdac",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -554,7 +525,6 @@ static struct hwentry default_hw[] = {
.bl_product = "Universal Xport",
.features = DEFAULT_FEATURES,
.hwhandler = "1 rdac",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -572,7 +542,6 @@ static struct hwentry default_hw[] = {
.bl_product = "Universal Xport",
.features = DEFAULT_FEATURES,
.hwhandler = "1 rdac",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -589,7 +558,6 @@ static struct hwentry default_hw[] = {
.product = "^3542",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_SERIAL,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -606,7 +574,6 @@ static struct hwentry default_hw[] = {
.product = "^2105800",
.features = "1 queue_if_no_path",
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_SERIAL,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -623,7 +590,6 @@ static struct hwentry default_hw[] = {
.product = "^2105F20",
.features = "1 queue_if_no_path",
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_SERIAL,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -640,7 +606,6 @@ static struct hwentry default_hw[] = {
.product = "^1750500",
.features = "1 queue_if_no_path",
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -657,7 +622,6 @@ static struct hwentry default_hw[] = {
.product = "^2107900",
.features = "1 queue_if_no_path",
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = MULTIBUS,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -674,7 +638,6 @@ static struct hwentry default_hw[] = {
.product = "^2145",
.features = "1 queue_if_no_path",
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -693,7 +656,6 @@ static struct hwentry default_hw[] = {
.uid_attribute = "ID_UID",
.features = "1 queue_if_no_path",
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = MULTIBUS,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -712,7 +674,6 @@ static struct hwentry default_hw[] = {
.uid_attribute = "ID_UID",
.features = "1 queue_if_no_path",
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = MULTIBUS,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -729,7 +690,6 @@ static struct hwentry default_hw[] = {
.product = "^IPR.*",
.features = "1 queue_if_no_path",
.hwhandler = "1 alua",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -746,7 +706,6 @@ static struct hwentry default_hw[] = {
.product = "1820N00",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -763,7 +722,6 @@ static struct hwentry default_hw[] = {
.product = "2810XIV",
.features = "1 queue_if_no_path",
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = MULTIBUS,
.pgfailback = 15,
.rr_weight = RR_WEIGHT_NONE,
@@ -786,7 +744,6 @@ static struct hwentry default_hw[] = {
.product = "VDASD",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = MULTIBUS,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -803,7 +760,6 @@ static struct hwentry default_hw[] = {
.product = "3303 NVDISK",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = FAILOVER,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -820,7 +776,6 @@ static struct hwentry default_hw[] = {
.product = "NVDISK",
.features = DEFAULT_FEATURES,
.hwhandler = "1 alua",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -838,7 +793,6 @@ static struct hwentry default_hw[] = {
.bl_product = "Universal Xport",
.features = "2 pg_init_retries 50",
.hwhandler = "1 rdac",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -856,7 +810,6 @@ static struct hwentry default_hw[] = {
.bl_product = "Universal Xport",
.features = "2 pg_init_retries 50",
.hwhandler = "1 rdac",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -874,7 +827,6 @@ static struct hwentry default_hw[] = {
.bl_product = "Universal Xport",
.features = "2 pg_init_retries 50",
.hwhandler = "1 rdac",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -892,7 +844,6 @@ static struct hwentry default_hw[] = {
.bl_product = "Universal Xport",
.features = "2 pg_init_retries 50",
.hwhandler = "1 rdac",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -914,7 +865,6 @@ static struct hwentry default_hw[] = {
.product = "LUN.*",
.features = "3 queue_if_no_path pg_init_retries 50",
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.flush_on_last_del = FLUSH_ENABLED,
@@ -936,7 +886,6 @@ static struct hwentry default_hw[] = {
.product = "COMSTAR",
.features = "1 queue_if_no_path",
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_SERIAL,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -957,7 +906,6 @@ static struct hwentry default_hw[] = {
.product = "Nseries.*",
.features = "1 queue_if_no_path",
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -978,7 +926,6 @@ static struct hwentry default_hw[] = {
.product = "Axiom.*",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -1001,7 +948,6 @@ static struct hwentry default_hw[] = {
.product = "TP9[13]00",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = MULTIBUS,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -1018,7 +964,6 @@ static struct hwentry default_hw[] = {
.bl_product = "Universal Xport",
.features = DEFAULT_FEATURES,
.hwhandler = "1 rdac",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -1035,7 +980,6 @@ static struct hwentry default_hw[] = {
.bl_product = "Universal Xport",
.features = "2 pg_init_retries 50",
.hwhandler = "1 rdac",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -1052,7 +996,6 @@ static struct hwentry default_hw[] = {
.product = "DISK ARRAY",
.features = DEFAULT_FEATURES,
.hwhandler = "1 alua",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -1075,7 +1018,6 @@ static struct hwentry default_hw[] = {
.bl_product = "Universal Xport",
.features = DEFAULT_FEATURES,
.hwhandler = "1 rdac",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -1097,7 +1039,6 @@ static struct hwentry default_hw[] = {
.product = "(StorEdge 3510|T4)",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = MULTIBUS,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -1113,7 +1054,6 @@ static struct hwentry default_hw[] = {
.product = "FC2502",
.features = DEFAULT_FEATURES,
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -1135,7 +1075,6 @@ static struct hwentry default_hw[] = {
.product = "RAIGE VOLUME",
.features = "1 queue_if_no_path",
.hwhandler = DEFAULT_HWHANDLER,
- .selector = DEFAULT_SELECTOR,
.pgpolicy = MULTIBUS,
.pgfailback = FAILBACK_UNDEF,
.rr_weight = RR_WEIGHT_NONE,
@@ -1151,7 +1090,6 @@ static struct hwentry default_hw[] = {
.bl_product = "Universal Xport",
.features = DEFAULT_FEATURES,
.hwhandler = "1 rdac",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -1169,7 +1107,6 @@ static struct hwentry default_hw[] = {
.bl_product = "Universal Xport",
.features = DEFAULT_FEATURES,
.hwhandler = "1 rdac",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -1187,7 +1124,6 @@ static struct hwentry default_hw[] = {
.bl_product = "Universal Xport",
.features = "2 pg_init_retries 50",
.hwhandler = "1 rdac",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
@@ -1204,7 +1140,6 @@ static struct hwentry default_hw[] = {
.bl_product = "Universal Xport",
.features = DEFAULT_FEATURES,
.hwhandler = "1 rdac",
- .selector = DEFAULT_SELECTOR,
.pgpolicy = GROUP_BY_PRIO,
.pgfailback = -FAILBACK_IMMEDIATE,
.rr_weight = RR_WEIGHT_NONE,
Index: multipath-tools-120821/libmultipath/defaults.h
===================================================================
--- multipath-tools-120821.orig/libmultipath/defaults.h
+++ multipath-tools-120821/libmultipath/defaults.h
@@ -1,7 +1,7 @@
#define DEFAULT_UID_ATTRIBUTE "ID_SERIAL"
#define DEFAULT_UDEVDIR "/dev"
#define DEFAULT_MULTIPATHDIR "/" LIB_STRING "/multipath"
-#define DEFAULT_SELECTOR "round-robin 0"
+#define DEFAULT_SELECTOR "service-time 0"
#define DEFAULT_ALIAS_PREFIX "mpath"
#define DEFAULT_FEATURES "0"
#define DEFAULT_HWHANDLER "0"
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2] multipath: change default configuration parameters
2013-01-10 20:05 [PATCH v2] multipath: change default configuration parameters Benjamin Marzinski
@ 2013-01-11 7:00 ` Hannes Reinecke
2013-01-11 17:01 ` Benjamin Marzinski
0 siblings, 1 reply; 4+ messages in thread
From: Hannes Reinecke @ 2013-01-11 7:00 UTC (permalink / raw)
To: device-mapper development
On 01/10/2013 09:05 PM, Benjamin Marzinski wrote:
> This patch makes multipath devices default to setting fast_io_fail,
> switches the default selector to service-time and removes the
> round-robin setting of the builtin device configurations. The goal is
> to give multipath devices better performance "out of the box".
>
Couldn't you split it off in three patches?
(Bad) experience tells me one always run into problems when
munching together unrelated pieces ...
> Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
> ---
> libmultipath/config.c | 1
> libmultipath/defaults.h | 2 -
> libmultipath/hwtable.c | 65 ------------------------------------------------
> 3 files changed, 2 insertions(+), 66 deletions(-)
>
> Index: multipath-tools-120821/libmultipath/config.c
> ===================================================================
> --- multipath-tools-120821.orig/libmultipath/config.c
> +++ multipath-tools-120821/libmultipath/config.c
> @@ -516,6 +516,7 @@ load_config (char * file)
> conf->reassign_maps = DEFAULT_REASSIGN_MAPS;
> conf->checkint = DEFAULT_CHECKINT;
> conf->max_checkint = MAX_CHECKINT(conf->checkint);
> + conf->fast_io_fail = 5;
>
> /*
> * preload default hwtable
Please use #define DEFAULT_FAST_IO_FAIL here.
> Index: multipath-tools-120821/libmultipath/hwtable.c
> ===================================================================
> --- multipath-tools-120821.orig/libmultipath/hwtable.c
> +++ multipath-tools-120821/libmultipath/hwtable.c
> @@ -28,7 +28,6 @@ static struct hwentry default_hw[] = {
> .product = "Compellent Vol",
> .features = DEFAULT_FEATURES,
> .hwhandler = DEFAULT_HWHANDLER,
> - .selector = DEFAULT_SELECTOR,
> .pgpolicy = MULTIBUS,
> .pgfailback = -FAILBACK_IMMEDIATE,
> .rr_weight = RR_WEIGHT_NONE,
Can't we get rid of _all_ 'DEFAULT_XXX' settings in the
hardware table? They _should_ be set to default during
init anyway, shouldn't they?
And that would shorten the hardware table by quite a lot ...
> Index: multipath-tools-120821/libmultipath/defaults.h
> ===================================================================
> --- multipath-tools-120821.orig/libmultipath/defaults.h
> +++ multipath-tools-120821/libmultipath/defaults.h
> @@ -1,7 +1,7 @@
> #define DEFAULT_UID_ATTRIBUTE "ID_SERIAL"
> #define DEFAULT_UDEVDIR "/dev"
> #define DEFAULT_MULTIPATHDIR "/" LIB_STRING "/multipath"
> -#define DEFAULT_SELECTOR "round-robin 0"
> +#define DEFAULT_SELECTOR "service-time 0"
> #define DEFAULT_ALIAS_PREFIX "mpath"
> #define DEFAULT_FEATURES "0"
> #define DEFAULT_HWHANDLER "0"
>
Hmm.
And you _have_ tested 'service-time' thoroughly, now have you?
Cheers,
Hannes
--
Dr. Hannes Reinecke zSeries & Storage
hare@suse.de +49 911 74053 688
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg)
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2] multipath: change default configuration parameters
2013-01-11 7:00 ` Hannes Reinecke
@ 2013-01-11 17:01 ` Benjamin Marzinski
2013-01-14 15:50 ` Hannes Reinecke
0 siblings, 1 reply; 4+ messages in thread
From: Benjamin Marzinski @ 2013-01-11 17:01 UTC (permalink / raw)
To: device-mapper development
On Fri, Jan 11, 2013 at 08:00:22AM +0100, Hannes Reinecke wrote:
> On 01/10/2013 09:05 PM, Benjamin Marzinski wrote:
>> This patch makes multipath devices default to setting fast_io_fail,
>> switches the default selector to service-time and removes the
>> round-robin setting of the builtin device configurations. The goal is
>> to give multipath devices better performance "out of the box".
>>
> Couldn't you split it off in three patches?
> (Bad) experience tells me one always run into problems when
> munching together unrelated pieces ...
>
I suppose. However, each config change is easily isolatable by editting
multipath.conf.
>> Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
>> ---
>> libmultipath/config.c | 1
>> libmultipath/defaults.h | 2 -
>> libmultipath/hwtable.c | 65 ------------------------------------------------
>> 3 files changed, 2 insertions(+), 66 deletions(-)
>>
>> Index: multipath-tools-120821/libmultipath/config.c
>> ===================================================================
>> --- multipath-tools-120821.orig/libmultipath/config.c
>> +++ multipath-tools-120821/libmultipath/config.c
>> @@ -516,6 +516,7 @@ load_config (char * file)
>> conf->reassign_maps = DEFAULT_REASSIGN_MAPS;
>> conf->checkint = DEFAULT_CHECKINT;
>> conf->max_checkint = MAX_CHECKINT(conf->checkint);
>> + conf->fast_io_fail = 5;
>>
>> /*
>> * preload default hwtable
>
> Please use #define DEFAULT_FAST_IO_FAIL here.
fine.
>> Index: multipath-tools-120821/libmultipath/hwtable.c
>> ===================================================================
>> --- multipath-tools-120821.orig/libmultipath/hwtable.c
>> +++ multipath-tools-120821/libmultipath/hwtable.c
>> @@ -28,7 +28,6 @@ static struct hwentry default_hw[] = {
>> .product = "Compellent Vol",
>> .features = DEFAULT_FEATURES,
>> .hwhandler = DEFAULT_HWHANDLER,
>> - .selector = DEFAULT_SELECTOR,
>> .pgpolicy = MULTIBUS,
>> .pgfailback = -FAILBACK_IMMEDIATE,
>> .rr_weight = RR_WEIGHT_NONE,
>
> Can't we get rid of _all_ 'DEFAULT_XXX' settings in the
> hardware table? They _should_ be set to default during
> init anyway, shouldn't they?
> And that would shorten the hardware table by quite a lot ...
Not all of them, I think. For instance, for many devices, we know that
we don't want a hardware handler. Someone could set the hardware handler
in their defaults section to deal with all their devices that don't
already have a device specific config built in. In this case, we want
the devices with a built-in config to not use that new hwhandler
setting. I think a good question would be, "will changing this option
make the device not work correctly?" If so, then it should be
explicitly set in the device config. If not, then it can inherit it
from default.
So, DEFAULT_HWHANDLER, DEFAULT_CHECKER, and DEFAULT_PRIO, must be stay
explicitly set. DEFAULT_FEATURES is kind of questionable but I think it
should stay as well. DEFAULT_MINIO and DEFAULT_MINIO_RQ are safe to
inherit from the defaults section. Does that sound reasonable?
>> Index: multipath-tools-120821/libmultipath/defaults.h
>> ===================================================================
>> --- multipath-tools-120821.orig/libmultipath/defaults.h
>> +++ multipath-tools-120821/libmultipath/defaults.h
>> @@ -1,7 +1,7 @@
>> #define DEFAULT_UID_ATTRIBUTE "ID_SERIAL"
>> #define DEFAULT_UDEVDIR "/dev"
>> #define DEFAULT_MULTIPATHDIR "/" LIB_STRING "/multipath"
>> -#define DEFAULT_SELECTOR "round-robin 0"
>> +#define DEFAULT_SELECTOR "service-time 0"
>> #define DEFAULT_ALIAS_PREFIX "mpath"
>> #define DEFAULT_FEATURES "0"
>> #define DEFAULT_HWHANDLER "0"
>>
> Hmm.
>
> And you _have_ tested 'service-time' thoroughly, now have you?
I've tested it with the admittedly non-exhaustive supply of hardware I
have available. In my experience, service-time or queue-length are
both pefectly good choices. But on some loads to some arrays, they
do outperform round-robin, and I've never seen them noticeably worse.
When people ask for performance tuning tips and we have them try out the
dynamic load balancing selectors, I've never heard a report that they
underperform round-robin. Have you seen different results? If there's
a good reason to think it might cause problems, I'm fine with leaving
round-robin as the default. But I think we should try to get the
defaults to what we believe will provide the best performance on most
devices.
-Ben
> Cheers,
>
> Hannes
> --
> Dr. Hannes Reinecke zSeries & Storage
> hare@suse.de +49 911 74053 688
> SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
> GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg)
>
> --
> dm-devel mailing list
> dm-devel@redhat.com
> https://www.redhat.com/mailman/listinfo/dm-devel
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2] multipath: change default configuration parameters
2013-01-11 17:01 ` Benjamin Marzinski
@ 2013-01-14 15:50 ` Hannes Reinecke
0 siblings, 0 replies; 4+ messages in thread
From: Hannes Reinecke @ 2013-01-14 15:50 UTC (permalink / raw)
To: dm-devel
On 01/11/2013 06:01 PM, Benjamin Marzinski wrote:
> On Fri, Jan 11, 2013 at 08:00:22AM +0100, Hannes Reinecke wrote:
>> On 01/10/2013 09:05 PM, Benjamin Marzinski wrote:
>>> This patch makes multipath devices default to setting fast_io_fail,
>>> switches the default selector to service-time and removes the
>>> round-robin setting of the builtin device configurations. The goal is
>>> to give multipath devices better performance "out of the box".
>>>
>> Couldn't you split it off in three patches?
>> (Bad) experience tells me one always run into problems when
>> munching together unrelated pieces ...
>>
>
> I suppose. However, each config change is easily isolatable by editting
> multipath.conf.
>
>>> Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
>>> ---
>>> libmultipath/config.c | 1
>>> libmultipath/defaults.h | 2 -
>>> libmultipath/hwtable.c | 65 ------------------------------------------------
>>> 3 files changed, 2 insertions(+), 66 deletions(-)
>>>
>>> Index: multipath-tools-120821/libmultipath/config.c
>>> ===================================================================
>>> --- multipath-tools-120821.orig/libmultipath/config.c
>>> +++ multipath-tools-120821/libmultipath/config.c
>>> @@ -516,6 +516,7 @@ load_config (char * file)
>>> conf->reassign_maps = DEFAULT_REASSIGN_MAPS;
>>> conf->checkint = DEFAULT_CHECKINT;
>>> conf->max_checkint = MAX_CHECKINT(conf->checkint);
>>> + conf->fast_io_fail = 5;
>>>
>>> /*
>>> * preload default hwtable
>>
>> Please use #define DEFAULT_FAST_IO_FAIL here.
>
> fine.
>
>>> Index: multipath-tools-120821/libmultipath/hwtable.c
>>> ===================================================================
>>> --- multipath-tools-120821.orig/libmultipath/hwtable.c
>>> +++ multipath-tools-120821/libmultipath/hwtable.c
>>> @@ -28,7 +28,6 @@ static struct hwentry default_hw[] = {
>>> .product = "Compellent Vol",
>>> .features = DEFAULT_FEATURES,
>>> .hwhandler = DEFAULT_HWHANDLER,
>>> - .selector = DEFAULT_SELECTOR,
>>> .pgpolicy = MULTIBUS,
>>> .pgfailback = -FAILBACK_IMMEDIATE,
>>> .rr_weight = RR_WEIGHT_NONE,
>>
>> Can't we get rid of _all_ 'DEFAULT_XXX' settings in the
>> hardware table? They _should_ be set to default during
>> init anyway, shouldn't they?
>> And that would shorten the hardware table by quite a lot ...
>
> Not all of them, I think. For instance, for many devices, we know that
> we don't want a hardware handler. Someone could set the hardware handler
> in their defaults section to deal with all their devices that don't
> already have a device specific config built in. In this case, we want
> the devices with a built-in config to not use that new hwhandler
> setting. I think a good question would be, "will changing this option
> make the device not work correctly?" If so, then it should be
> explicitly set in the device config. If not, then it can inherit it
> from default.
>
> So, DEFAULT_HWHANDLER, DEFAULT_CHECKER, and DEFAULT_PRIO, must be stay
> explicitly set. DEFAULT_FEATURES is kind of questionable but I think it
> should stay as well. DEFAULT_MINIO and DEFAULT_MINIO_RQ are safe to
> inherit from the defaults section. Does that sound reasonable?
>
>
>>> Index: multipath-tools-120821/libmultipath/defaults.h
>>> ===================================================================
>>> --- multipath-tools-120821.orig/libmultipath/defaults.h
>>> +++ multipath-tools-120821/libmultipath/defaults.h
>>> @@ -1,7 +1,7 @@
>>> #define DEFAULT_UID_ATTRIBUTE "ID_SERIAL"
>>> #define DEFAULT_UDEVDIR "/dev"
>>> #define DEFAULT_MULTIPATHDIR "/" LIB_STRING "/multipath"
>>> -#define DEFAULT_SELECTOR "round-robin 0"
>>> +#define DEFAULT_SELECTOR "service-time 0"
>>> #define DEFAULT_ALIAS_PREFIX "mpath"
>>> #define DEFAULT_FEATURES "0"
>>> #define DEFAULT_HWHANDLER "0"
>>>
>> Hmm.
>>
>> And you _have_ tested 'service-time' thoroughly, now have you?
>
> I've tested it with the admittedly non-exhaustive supply of hardware I
> have available. In my experience, service-time or queue-length are
> both pefectly good choices. But on some loads to some arrays, they
> do outperform round-robin, and I've never seen them noticeably worse.
>
> When people ask for performance tuning tips and we have them try out the
> dynamic load balancing selectors, I've never heard a report that they
> underperform round-robin. Have you seen different results? If there's
> a good reason to think it might cause problems, I'm fine with leaving
> round-robin as the default. But I think we should try to get the
> defaults to what we believe will provide the best performance on most
> devices.
>
Actually, I'm not worried about performance, but rather stability.
multipath-tools took _ages_ to stabilize, and we're still somewhat
on the shaky side. So I'm rather loath to make new features the
default without having tested them thoroughly.
But if you say so ...
Cheers,
Hannes
--
Dr. Hannes Reinecke zSeries & Storage
hare@suse.de +49 911 74053 688
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg)
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-01-14 15:50 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-10 20:05 [PATCH v2] multipath: change default configuration parameters Benjamin Marzinski
2013-01-11 7:00 ` Hannes Reinecke
2013-01-11 17:01 ` Benjamin Marzinski
2013-01-14 15:50 ` Hannes Reinecke
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.