Comment 0 for bug 1443977

Revision history for this message
Loren Erwin (loren-erwin) wrote : Mutipath performance issues: issues with connect_volume and similar fucntions

Customer: When multipath is enabled with Nova, a different codepath is executed for most functions, such as connect_volume and disconnect_volume.

A series of loops exist within connect_volume when multipath is enabled
An iscsiadm discover is ran against the portal information associated with the instance, in our case a portal on the nimble storage array.
For every iqn discovered, _connect_to_iscsi_portal runs and logins to the portal.

In our test scenario, with 183 instances - this results in 183*2 IQN targets being discovered, and logged into, every single time an instance is launched on that node. With multiple instance creation this compounds.

These calls can take upwards of 1 second to run * the number of times.

Additionally there seems to be other code paths with similar loops with iSCSI behaviour.

We may have just addressed the connect_volume loop as well. The IQN of the iSCSI device is always the same, although the portal may be different. iscsi_properties['target_iqn'] contains the target_iqn. Instead of looping through every single IQN to login to, the code now only logs into the IQN's it needs.

such as

for ip, iqn in self._get_target_portals_from_iscsiadm_output(out):
if iqn in iscsi_properties['target_iqn']:
props = iscsi_properties.copy()
props['target_portal'] = ip
props['target_iqn'] = iqn
self._connect_to_iscsi_portal(props)