Red Hat Bugzilla – Bug 1468439
VM startup takes 2m and 50 seconds with 1200 devices (use case: multiple direct LUNs)
Last modified: 2017-12-13 02:07:49 EST
Description of problem:
with 1200 devices on the host - 150 direct LUN with 4 paths, and 300 VMS, each attached 2 direct LUN, VM startup takes 2m and 50 seconds
Version-Release number of selected component (if applicable):
vdsm version 4.19.17
Steps to Reproduce:
1.Attache 300 luns with 4 paths to storage
2.Add 150 VMS
3.Attache 2 direct LUN to each VMS
4.Start 150 VMS
5.Start a single VM
Takes very long time
Should be shorter and reasonable time
Logs and additional info will be attached
Where's supervdsm log? It probably has some clues.
Adding a patch here to address redundant call to connectStorageServer during a RunVm flow. VM with different luns IQN, but the SAME server address, will request a single request, instead of 2.
Allon, please double check my logic here to see I'm not missing anything.
(In reply to Roy Golan from comment #12)
> Adding a patch here to address redundant call to connectStorageServer during
> a RunVm flow. VM with different luns IQN, but the SAME server address, will
Roy, thanks for contributing the patch you linked to. However, it used an API (connectStorageToLunByVdsId) that should be used per LUN. We need to double-check why exactly this API needs the lun object.
If it really needs the lun, we need a more robust API that can receive a collection of luns, extract their connections and call connectStorageServer once with all the connections. If it doesn't, we should just connectStorageServer directly.
Initial check by email@example.com show that there is no side-effect on the lun the is passed inside.
If you both are okay with that I have no problem with invoking the connectStorageServer VDS command directly.
(In reply to Roy Golan from comment #16)
> Initial check by firstname.lastname@example.org show that there is no side-effect on the
> lun the is passed inside.
> If you both are okay with that I have no problem with invoking the
> connectStorageServer VDS command directly.
I went over it myself too, and there seems to be a lot of spam there that's only relevant to domains.
In pseudocode, we should have something like this:
.collect(groupingBy(conn -> conn.getType(), toList())