Bug 2141996

Summary: There is no historical-service-time path selector in multipath.conf man page
Product: Red Hat Enterprise Linux 8 Reporter: Lin Li <lilin>
Component: device-mapper-multipathAssignee: Ben Marzinski <bmarzins>
Status: CLOSED ERRATA QA Contact: Lin Li <lilin>
Severity: medium Docs Contact:
Priority: medium    
Version: 8.8CC: agk, bmarzins, heinzm, msnitzer, prajnoha, zkabelac
Target Milestone: rcKeywords: Triaged
Target Release: 8.8   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: device-mapper-multipath-0.8.4-33.el8 Doc Type: No Doc Update
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2023-05-16 08:44:49 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Lin Li 2022-11-11 11:15:51 UTC
Description of problem:
There is no historical-service-time path selector in multipath.conf man page

Version-Release number of selected component (if applicable):
device-mapper-multipath-0.8.4-31.el8.x86_64

How reproducible:
always

Steps to Reproduce:
1.# rpm -qa | grep multipath
device-mapper-multipath-0.8.4-31.el8.x86_64
device-mapper-multipath-libs-0.8.4-31.el8.x86_64
2.# man multipath.conf
       path_selector    The default path selector algorithm to use; they are offered by the kernel multipath  target.
                        There are three selector algorithms:

                        round-robin 0
                                    Loop  through  every  path  in  the path group, sending the same amount of I/O to
                                    each. Some aspects of behavior can be controlled with the attributes:  rr_min_io,
                                    rr_min_io_rq and rr_weight.

                        queue-length 0
                                    (Since  2.6.31  kernel)  Choose  the  path for the next bunch of I/O based on the
                                    amount of outstanding I/O to the path.

                        service-time 0
                                    (Since 2.6.31 kernel) Choose the path for the next bunch  of  I/O  based  on  the
                                    amount of outstanding I/O to the path and its relative throughput.

                        The default is: service-time 0
3.configure multipath to use the historical-service-time selector. Add the line
        path_selector "historical-service-time 0"
   to the defaults section of multipath.conf
4. create some multipath devices
5. Run "multipath -l" to list them
# multipath -l
360a98000324669436c2b45666c567865 dm-3 NETAPP,LUN
size=2.0G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 alua' wp=rw
|-+- policy='historical-service-time 2' prio=0 status=enabled
| |- 3:0:0:0 sdj     8:144 undef undef running
| `- 4:0:0:0 sdb     8:16  undef undef running
`-+- policy='historical-service-time 2' prio=0 status=undef
  |- 3:0:1:0 sdn     8:208 undef undef running
  `- 4:0:1:0 sdf     8:80  undef undef running
360a98000324669436c2b45666c567867 dm-4 NETAPP,LUN
size=2.0G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 alua' wp=rw
|-+- policy='historical-service-time 2' prio=0 status=enabled
| |- 3:0:0:1 sdk     8:160 undef undef running
| `- 4:0:0:1 sdc     8:32  undef undef running
`-+- policy='historical-service-time 2' prio=0 status=undef
  |- 3:0:1:1 sdo     8:224 undef undef running
  `- 4:0:1:1 sdg     8:96  undef undef running
360a98000324669436c2b45666c567869 dm-5 NETAPP,LUN
size=2.0G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 alua' wp=rw
|-+- policy='historical-service-time 2' prio=0 status=enabled
| |- 3:0:0:2 sdl     8:176 undef undef running
| `- 4:0:0:2 sdd     8:48  undef undef running
`-+- policy='historical-service-time 2' prio=0 status=undef
  |- 3:0:1:2 sdp     8:240 undef undef running
  `- 4:0:1:2 sdh     8:112 undef undef running
360a98000324669436c2b45666c56786b dm-6 NETAPP,LUN
size=2.0G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 alua' wp=rw
|-+- policy='historical-service-time 2' prio=0 status=enabled
| |- 3:0:0:3 sdm     8:192 undef undef running
| `- 4:0:0:3 sde     8:64  undef undef running
`-+- policy='historical-service-time 2' prio=0 status=undef
  |- 3:0:1:3 sdq     65:0  undef undef running
  `- 4:0:1:3 sdi     8:128 undef undef running
mpatha (333333330000007d0) dm-7 Linux,scsi_debug
size=100M features='0' hwhandler='1 alua' wp=rw
|-+- policy='historical-service-time 2' prio=0 status=enabled
| `- 6:0:0:0 sds     65:32 undef undef running
|-+- policy='historical-service-time 2' prio=0 status=undef
| `- 7:0:0:0 sdt     65:48 undef undef running
|-+- policy='historical-service-time 2' prio=0 status=undef
| `- 5:0:0:0 sdr     65:16 undef undef running
`-+- policy='historical-service-time 2' prio=0 status=undef
  `- 8:0:0:0 sdu     65:64 undef undef running
mpathb (uuid.b195552a-8465-4f6c-baf0-98cf3d29b40a) dm-8 NVME,Linux                                   
size=70G features='0' hwhandler='0' wp=rw
|-+- policy='historical-service-time 2' prio=0 status=enabled
| `- 0:2:1:1 nvme0n1 259:0 undef undef running
|-+- policy='historical-service-time 2' prio=0 status=undef
| `- 1:3:1:1 nvme1n1 259:1 undef undef running
|-+- policy='historical-service-time 2' prio=0 status=undef
| `- 2:4:1:1 nvme2n1 259:2 undef undef running
`-+- policy='historical-service-time 2' prio=0 status=undef
  `- 3:1:1:1 nvme3n1 259:3 undef undef running

Actual results:
No a warning message. multipath supports the historical-service-time path selector. But there is no historical-service-time path selector in multipath.conf man page

Expected results:
historical-service-time path selector exists in multipath.conf man page

Additional info:

Comment 8 Lin Li 2022-12-19 14:35:28 UTC
1.[root@storageqe-25 ~]# rpm -qa | grep multipath
device-mapper-multipath-libs-0.8.4-34.el8.x86_64
device-mapper-multipath-0.8.4-34.el8.x86_64

2.[root@storageqe-25 ~]# man multipath.conf
       path_selector    The default path selector algorithm to use; they are offered by the kernel  multi-
                        path target. There are three selector algorithms:

                        round-robin 0
                                    Loop  through every path in the path group, sending the same amount of
                                    I/O to each. Some aspects of  behavior  can  be  controlled  with  the
                                    attributes: rr_min_io, rr_min_io_rq and rr_weight.

                        queue-length 0
                                    (Since  2.6.31 kernel) Choose the path for the next bunch of I/O based
                                    on the amount of outstanding I/O to the path.

                        service-time 0
                                    (Since 2.6.31 kernel) Choose the path for the next bunch of I/O  based
                                    on the amount of outstanding I/O to the path and its relative through-
                                    put.

                        historical-service-time 0
                                    (Since 4.18.0-305.3.el8 kernel) Choose the path for the next bunch  of
                                    I/O  based  on the estimation of future service time based on the his-
                                    tory of previous I/O submitted to each path.

                        The default is: service-time 0

3.configure multipath to use the historical-service-time selector. Add the line
        path_selector "historical-service-time 0"
   to the defaults section of multipath.conf
4. create some multipath devices
5. Run "multipath -l" to list them
# multipath -l
360a98000324669436c2b45666c567858 dm-3 NETAPP,LUN
size=2.0G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 alua' wp=rw
|-+- policy='historical-service-time 2' prio=0 status=enabled
| |- 7:0:1:0 sdf 8:80  undef undef running
| `- 8:0:1:0 sdn 8:208 undef undef running
`-+- policy='historical-service-time 2' prio=0 status=undef
  |- 7:0:0:0 sdb 8:16  undef undef running
  `- 8:0:0:0 sdj 8:144 undef undef running
360a98000324669436c2b45666c56785a dm-4 NETAPP,LUN
size=2.0G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 alua' wp=rw
|-+- policy='historical-service-time 2' prio=0 status=enabled
| |- 7:0:1:1 sdg 8:96  undef undef running
| `- 8:0:1:1 sdo 8:224 undef undef running
`-+- policy='historical-service-time 2' prio=0 status=undef
  |- 7:0:0:1 sdc 8:32  undef undef running
  `- 8:0:0:1 sdk 8:160 undef undef running
360a98000324669436c2b45666c567861 dm-5 NETAPP,LUN
size=2.0G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 alua' wp=rw
|-+- policy='historical-service-time 2' prio=0 status=enabled
| |- 7:0:1:2 sdh 8:112 undef undef running
| `- 8:0:1:2 sdp 8:240 undef undef running
`-+- policy='historical-service-time 2' prio=0 status=undef
  |- 7:0:0:2 sdd 8:48  undef undef running
  `- 8:0:0:2 sdl 8:176 undef undef running
360a98000324669436c2b45666c567863 dm-6 NETAPP,LUN
size=2.0G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 alua' wp=rw
|-+- policy='historical-service-time 2' prio=0 status=enabled
| |- 7:0:1:3 sdi 8:128 undef undef running
| `- 8:0:1:3 sdq 65:0  undef undef running
`-+- policy='historical-service-time 2' prio=0 status=undef
  |- 7:0:0:3 sde 8:64  undef undef running
  `- 8:0:0:3 sdm 8:192 undef undef running


Test result:Added historical-service-time to the man page.

Comment 10 errata-xmlrpc 2023-05-16 08:44:49 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (Moderate: device-mapper-multipath security and bug fix update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHSA-2023:2948