Activity log for bug #1456480

Date Who What changed Old value New value Message
2015-05-19 07:29:16 Tina Tang bug added bug
2015-05-19 07:31:21 Tina Tang summary performance issue during volume detach ment when ISCSIConnector when iSCSI multipath Performance issue during volume detachment in ISCSIConnector when iSCSI multipath is used
2015-05-19 07:32:48 Tina Tang description When the multipath is used, there is performance issue in the ISCSIConnector in the disconnect volume. When there are many attached volume, creating a volume from image may resulting in many of execution of 'multipath -ll <device>' For example, on my system there are only 6 attached LUNs which leads to 35 iscsi devices files under /dev/disk/by-path: stack@ubuntu-server12:/opt/stack/logs/screen$ ls /dev/disk/by-path | grep iscsi | wc -l 35 22492196-3071-4bb6-9dc2-41f0ce24269b is a request id of creating a volume from a image. There are 234 times of multipath -ll execution in order to to handle this request. stack@ubuntu-server12:/opt/stack/logs/screen$ grep 22492196-3071-4bb6-9dc2-41f0ce24269b screen-c-vol.log | grep "multipath \['\-ll'," | grep cinder.brick.initiator.connector | wc -l 231 When there are many attached LUNs on the host, there may be thousands of execution of "multipath -ll" Per the debuging: In the method _disconnect_volume_multipath_iscsi https://github.com/openstack/os-brick/blob/master/os_brick/initiator/connector.py#L488 Assume the number of iscsi devices under /dev/disk/by-path excludes the devices for the volume to be detached is N. L494 - 501 will introduce N times of "multipath -ll <dev>" L514 - 515 will introduce about N to N(N+1)/2 times of "multipath -ll <dev>" depends on the order of the devices. Reproduce steps in Cinder: 1. Nova and Cinder is runing on a same host 2. Attach 50 luns to the VM created on the same host 3. Create a volume from image This was found in Kilo release When the multipath is used, there is performance issue in the ISCSIConnector in the disconnect volume. When there are many attached volume, creating a volume from image may resulting in many of execution of 'multipath -ll <device>' For example, on my system there are only 6 attached LUNs which leads to 35 iscsi devices files under /dev/disk/by-path: stack@ubuntu-server12:/opt/stack/logs/screen$ ls /dev/disk/by-path | grep iscsi | wc -l 35 22492196-3071-4bb6-9dc2-41f0ce24269b is a request id of creating a volume from a image. There are 234 times of multipath -ll execution in order to to handle this request. stack@ubuntu-server12:/opt/stack/logs/screen$ grep 22492196-3071-4bb6-9dc2-41f0ce24269b screen-c-vol.log | grep "multipath \['\-ll'," | grep cinder.brick.initiator.connector | wc -l 231 When there are many attached LUNs on the host, there may be thousands of execution of "multipath -ll" Per the debuging: In the method _disconnect_volume_multipath_iscsi https://github.com/openstack/os-brick/blob/master/os_brick/initiator/connector.py#L488 Assume the number of iscsi devices under /dev/disk/by-path excludes the devices for the volume to be detached is N. L494 - 501 will introduce N times of "multipath -ll <dev>" L514 - 515 will introduce about N to N(N+1)/2 times of "multipath -ll <dev>" depends on the order of the devices. Reproduce steps in Cinder: 1. Nova and Cinder is runing on a same host 2. Attach 50 luns to the VM created on the same host 3. Create a volume from image This was found in Kilo release
2015-05-19 08:10:39 Tina Tang description When the multipath is used, there is performance issue in the ISCSIConnector in the disconnect volume. When there are many attached volume, creating a volume from image may resulting in many of execution of 'multipath -ll <device>' For example, on my system there are only 6 attached LUNs which leads to 35 iscsi devices files under /dev/disk/by-path: stack@ubuntu-server12:/opt/stack/logs/screen$ ls /dev/disk/by-path | grep iscsi | wc -l 35 22492196-3071-4bb6-9dc2-41f0ce24269b is a request id of creating a volume from a image. There are 234 times of multipath -ll execution in order to to handle this request. stack@ubuntu-server12:/opt/stack/logs/screen$ grep 22492196-3071-4bb6-9dc2-41f0ce24269b screen-c-vol.log | grep "multipath \['\-ll'," | grep cinder.brick.initiator.connector | wc -l 231 When there are many attached LUNs on the host, there may be thousands of execution of "multipath -ll" Per the debuging: In the method _disconnect_volume_multipath_iscsi https://github.com/openstack/os-brick/blob/master/os_brick/initiator/connector.py#L488 Assume the number of iscsi devices under /dev/disk/by-path excludes the devices for the volume to be detached is N. L494 - 501 will introduce N times of "multipath -ll <dev>" L514 - 515 will introduce about N to N(N+1)/2 times of "multipath -ll <dev>" depends on the order of the devices. Reproduce steps in Cinder: 1. Nova and Cinder is runing on a same host 2. Attach 50 luns to the VM created on the same host 3. Create a volume from image This was found in Kilo release When the multipath is used, there is performance issue in the ISCSIConnector in the disconnect volume. When there are many attached volume, creating a volume from image may resulting in many of execution of 'multipath -ll <device>' For example, on my system there are only 6 attached LUNs which leads to 35 iscsi devices files under /dev/disk/by-path: stack@ubuntu-server12:/opt/stack/logs/screen$ ls /dev/disk/by-path | grep iscsi | wc -l 35 22492196-3071-4bb6-9dc2-41f0ce24269b is a request id of creating a volume from a image. There are 234 times of multipath -ll execution in order to to handle this request. stack@ubuntu-server12:/opt/stack/logs/screen$ grep 22492196-3071-4bb6-9dc2-41f0ce24269b screen-c-vol.log | grep "multipath \['\-ll'," | grep cinder.brick.initiator.connector | wc -l 231 When there are many attached LUNs on the host, there may be thousands of execution of "multipath -ll" Per the debuging: In the method _disconnect_volume_multipath_iscsi https://github.com/openstack/os-brick/blob/master/os_brick/initiator/connector.py#L488 Assume the number of iscsi devices under /dev/disk/by-path excludes the devices for the volume to be detached is N. L494 - 501 will introduce N times of "multipath -ll <dev>" L514 - 515 will introduce about N to N(N+1)/2 times of "multipath -ll <dev>" depends on the order of the devices. When the driver is the default driver HostDriver L494 - 501 It using multipath -ll to find the multipath dev path like "/dev/mapper/<multipath_id>" for each devices under /dev/disk/by-path Then: L514 -555 It go through each devices under /dev/disk/by-path to find the paths for each multipath dev found in L494 -501. And then parse the file name of the device under /dev/disk/by-path to get the used portal and iqns. The whole logic is twist and has low performance. Why we need to find the multipath device first and then go back to find the paths under /dev/disk/by-path? Seems the logic can be simplified to go through the devices under /dev/disk/by-path to see whether the protals and iqns are used Reproduce steps in Cinder: 1. Nova and Cinder is runing on a same host 2. Attach 50 luns to the VM created on the same host 3. Create a volume from image This was found in Kilo release
2015-05-19 08:11:27 Tina Tang description When the multipath is used, there is performance issue in the ISCSIConnector in the disconnect volume. When there are many attached volume, creating a volume from image may resulting in many of execution of 'multipath -ll <device>' For example, on my system there are only 6 attached LUNs which leads to 35 iscsi devices files under /dev/disk/by-path: stack@ubuntu-server12:/opt/stack/logs/screen$ ls /dev/disk/by-path | grep iscsi | wc -l 35 22492196-3071-4bb6-9dc2-41f0ce24269b is a request id of creating a volume from a image. There are 234 times of multipath -ll execution in order to to handle this request. stack@ubuntu-server12:/opt/stack/logs/screen$ grep 22492196-3071-4bb6-9dc2-41f0ce24269b screen-c-vol.log | grep "multipath \['\-ll'," | grep cinder.brick.initiator.connector | wc -l 231 When there are many attached LUNs on the host, there may be thousands of execution of "multipath -ll" Per the debuging: In the method _disconnect_volume_multipath_iscsi https://github.com/openstack/os-brick/blob/master/os_brick/initiator/connector.py#L488 Assume the number of iscsi devices under /dev/disk/by-path excludes the devices for the volume to be detached is N. L494 - 501 will introduce N times of "multipath -ll <dev>" L514 - 515 will introduce about N to N(N+1)/2 times of "multipath -ll <dev>" depends on the order of the devices. When the driver is the default driver HostDriver L494 - 501 It using multipath -ll to find the multipath dev path like "/dev/mapper/<multipath_id>" for each devices under /dev/disk/by-path Then: L514 -555 It go through each devices under /dev/disk/by-path to find the paths for each multipath dev found in L494 -501. And then parse the file name of the device under /dev/disk/by-path to get the used portal and iqns. The whole logic is twist and has low performance. Why we need to find the multipath device first and then go back to find the paths under /dev/disk/by-path? Seems the logic can be simplified to go through the devices under /dev/disk/by-path to see whether the protals and iqns are used Reproduce steps in Cinder: 1. Nova and Cinder is runing on a same host 2. Attach 50 luns to the VM created on the same host 3. Create a volume from image This was found in Kilo release When the multipath is used, there is performance issue in the ISCSIConnector in the disconnect volume. When there are many attached volume, creating a volume from image may resulting in many of execution of 'multipath -ll <device>' For example, on my system there are only 6 attached LUNs which leads to 35 iscsi devices files under /dev/disk/by-path: stack@ubuntu-server12:/opt/stack/logs/screen$ ls /dev/disk/by-path | grep iscsi | wc -l 35 Given 22492196-3071-4bb6-9dc2-41f0ce24269b is a request id of creating a volume from a image. There are 231 times of multipath -ll execution in order to to handle this request. stack@ubuntu-server12:/opt/stack/logs/screen$ grep 22492196-3071-4bb6-9dc2-41f0ce24269b screen-c-vol.log | grep "multipath \['\-ll'," | grep cinder.brick.initiator.connector | wc -l 231 When there are many attached LUNs on the host, there may be thousands of execution of "multipath -ll" Per the debuging in to the code: In the method _disconnect_volume_multipath_iscsi https://github.com/openstack/os-brick/blob/master/os_brick/initiator/connector.py#L488 Assume the number of iscsi devices under /dev/disk/by-path excludes the devices for the volume to be detached is N. L494 - 501 will introduce N times of "multipath -ll <dev>" L514 - 515 will introduce about N to N(N+1)/2 times of "multipath -ll <dev>" depends on the order of the devices. When the driver is the default driver HostDriver L494 - 501 It using multipath -ll to find the multipath dev path like "/dev/mapper/<multipath_id>" for each devices under /dev/disk/by-path Then: L514 -555 It go through each devices under /dev/disk/by-path to find the paths for each multipath dev found in L494 -501. And then parse the file name of the device under /dev/disk/by-path to get the used portal and iqns. The whole logic is twist and has low performance. Why we need to find the multipath device first and then go back to find the paths under /dev/disk/by-path? Seems the logic can be simplified to go through the devices under /dev/disk/by-path to see whether the protals and iqns are used Reproduce steps in Cinder: 1. Nova and Cinder is runing on a same host 2. Attach 50 luns to the VM created on the same host 3. Create a volume from image This was found in Kilo release
2015-05-22 18:44:51 Walt Boring os-brick: status New Triaged
2015-05-22 18:57:32 rasoto os-brick: assignee rasoto (rasoto)
2015-05-27 21:09:28 Walt Boring os-brick: importance Undecided Medium
2015-06-11 23:48:03 Tomoki Sekiyama os-brick: assignee rasoto (rasoto) Tomoki Sekiyama (tsekiyama)
2015-06-17 07:49:39 OpenStack Infra os-brick: status Triaged Fix Committed
2015-07-20 15:28:14 Doug Hellmann os-brick: status Fix Committed Fix Released
2015-07-20 15:28:14 Doug Hellmann os-brick: milestone 0.3.0
2015-11-13 18:39:24 Preston L. Bannister bug added subscriber Preston L. Bannister
2016-02-04 15:59:46 Eric Harney bug task added cinder
2016-02-04 16:03:42 Eric Harney nominated for series cinder/kilo
2016-02-04 16:07:27 Eric Harney bug task added cinder/kilo
2016-02-04 16:07:36 Eric Harney cinder/kilo: milestone 2015.1.3
2016-02-04 16:07:39 Eric Harney cinder/kilo: status New Fix Released
2016-02-04 16:07:48 Eric Harney cinder: status New Invalid
2016-02-04 19:15:02 Eric Harney cinder/kilo: assignee Patrick East (patrick-east)