Liran Zelkha has uploaded a new change for review. Change subject: core: Lazy load of Vms per VDS ......................................................................
core: Lazy load of Vms per VDS Loading all the VMs of a VDS is a slow operation. This patch tries to minimize the amount of these DB calls by lazy loading the VM dictionary in VURTI Change-Id: Ic61f8d965083b814b64257831a2ed3c6d7f764c7 Signed-off-by: [email protected] <[email protected]> --- M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java 1 file changed, 23 insertions(+), 17 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/69/32669/1 diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java index da7c0df..c9b2dc82 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/VdsUpdateRunTimeInfo.java @@ -123,7 +123,7 @@ private final VdsManager _vdsManager; private final MonitoringStrategy monitoringStrategy; private final VDS _vds; - private final Map<Guid, VM> _vmDict; + private Map<Guid, VM> vmDict; private boolean processHardwareCapsNeeded; private boolean refreshedCapabilities = false; private static Map<Guid, Long> hostDownTimes = new HashMap<>(); @@ -477,7 +477,13 @@ _vds = vds; _firstStatus = _vds.getStatus(); this.monitoringStrategy = monitoringStrategy; - _vmDict = getDbFacade().getVmDao().getAllRunningByVds(_vds.getId()); + } + + private Map<Guid, VM> getVmDict() { + if (vmDict == null) { + vmDict = getDbFacade().getVmDao().getAllRunningByVds(_vds.getId()); + } + return vmDict; } public void refresh() { @@ -1002,7 +1008,7 @@ for (VmInternalData vmInternalData : _runningVms.values()) { VmDynamic vmDynamic = vmInternalData.getVmDynamic(); if (vmDynamic != null) { - VM vm = _vmDict.get(vmDynamic.getId()); + VM vm = getVmDict().get(vmDynamic.getId()); if (vm != null) { List<VmGuestAgentInterface> vmGuestAgentInterfaces = vmInternalData.getVmGuestAgentInterfaces(); int guestAgentNicHash = vmGuestAgentInterfaces == null ? 0 : vmGuestAgentInterfaces.hashCode(); @@ -1137,7 +1143,7 @@ for (VmInternalData vmInternalData : _runningVms.values()) { VmDynamic vmDynamic = vmInternalData.getVmDynamic(); if (vmDynamic != null && vmDynamic.getStatus() != VMStatus.MigratingTo) { - VM vm = _vmDict.get(vmDynamic.getId()); + VM vm = getVmDict().get(vmDynamic.getId()); if (vm != null) { String dbHash = vm.getHash(); if ((dbHash == null && vmDynamic.getHash() != null) || (dbHash != null) @@ -1329,7 +1335,7 @@ tempRunningList.add(runningVm.getVmDynamic()); } for (VmDynamic runningVm : tempRunningList) { - VM vmToUpdate = _vmDict.get(runningVm.getId()); + VM vmToUpdate = getVmDict().get(runningVm.getId()); boolean statusChanged = false; if (vmToUpdate == null @@ -1365,7 +1371,7 @@ private void proceedWatchdogEvents() { for (VmInternalData vmInternalData : _runningVms.values()) { VmDynamic vmDynamic = vmInternalData.getVmDynamic(); - VM vmTo = _vmDict.get(vmDynamic.getId()); + VM vmTo = getVmDict().get(vmDynamic.getId()); if (isNewWatchdogEvent(vmDynamic, vmTo)) { AuditLogableBase auditLogable = new AuditLogableBase(); auditLogable.setVmId(vmDynamic.getId()); @@ -1380,7 +1386,7 @@ private void proceedGuaranteedMemoryCheck() { for (VmInternalData vmInternalData : _runningVms.values()) { - VM savedVm = _vmDict.get(vmInternalData.getVmDynamic().getId()); + VM savedVm = getVmDict().get(vmInternalData.getVmDynamic().getId()); if (savedVm == null) { continue; } @@ -1405,7 +1411,7 @@ for (VmInternalData vmInternalData : _runningVms.values()) { VmBalloonInfo balloonInfo = vmInternalData.getVmStatistics().getVmBalloonInfo(); Guid vmId = vmInternalData.getVmDynamic().getId(); - if (_vmDict.get(vmId) == null) { + if (getVmDict().get(vmId) == null) { continue; // if vm is unknown - continue } @@ -1480,7 +1486,7 @@ } private boolean isBalloonDeviceActiveOnVm(VmInternalData vmInternalData) { - VM savedVm = _vmDict.get(vmInternalData.getVmDynamic().getId()); + VM savedVm = getVmDict().get(vmInternalData.getVmDynamic().getId()); if (savedVm != null) { VmBalloonInfo balloonInfo = vmInternalData.getVmStatistics().getVmBalloonInfo(); @@ -1507,7 +1513,7 @@ continue; } - VM vmTo = _vmDict.get(vm.getId()); + VM vmTo = getVmDict().get(vm.getId()); VMStatus status = VMStatus.Unassigned; if (vmTo != null) { status = vmTo.getStatus(); @@ -1645,7 +1651,7 @@ List<String> vmsToQuery = new ArrayList<String>(); // Searching for External VMs that run on the host for (VmInternalData vmInternalData : _runningVms.values()) { - VM currentVmData = _vmDict.get(vmInternalData.getVmDynamic().getId()); + VM currentVmData = getVmDict().get(vmInternalData.getVmDynamic().getId()); if (currentVmData == null) { if (getDbFacade().getVmStaticDao().get(vmInternalData.getVmDynamic().getId()) == null) { Guid vmId = vmInternalData.getVmDynamic().getId(); @@ -1698,12 +1704,12 @@ private void updateRepository(List<Guid> staleRunningVms) { for (VmInternalData vmInternalData : _runningVms.values()) { VmDynamic runningVm = vmInternalData.getVmDynamic(); - VM vmToUpdate = _vmDict.get(runningVm.getId()); + VM vmToUpdate = getVmDict().get(runningVm.getId()); // if not migrating here and not down if (!inMigrationTo(runningVm, vmToUpdate) && runningVm.getStatus() != VMStatus.Down) { if (vmToUpdate != null) { - if (_vmDict.containsKey(vmToUpdate.getId()) + if (getVmDict().containsKey(vmToUpdate.getId()) && !StringUtils.equals(runningVm.getClientIp(), vmToUpdate.getClientIp())) { _vmsClientIpChanged.put(vmToUpdate, runningVm); } @@ -1772,7 +1778,7 @@ } if (vmToUpdate != null) { updateVmStatistics(vmToUpdate); - if (_vmDict.containsKey(runningVm.getId())) { + if (getVmDict().containsKey(runningVm.getId())) { staleRunningVms.add(runningVm.getId()); if (!_vdsManager.getInitialized()) { ResourceManager.getInstance().RemoveVmFromDownVms(_vds.getId(), runningVm.getId()); @@ -1831,7 +1837,7 @@ * @param staleRunningVms - VMs that didn't change their status */ private void removeVmsFromCache(List<Guid> staleRunningVms) { - for (VM vmToRemove : _vmDict.values()) { + for (VM vmToRemove : getVmDict().values()) { if (staleRunningVms.contains(vmToRemove.getId())) { continue; } @@ -1947,7 +1953,7 @@ // we shouldn't include them as committed. if (vmDynamic.getStatus() != VMStatus.WaitForLaunch && vmDynamic.getStatus() != VMStatus.Down) { - VM vm = _vmDict.get(vmDynamic.getId()); + VM vm = getVmDict().get(vmDynamic.getId()); if (vm != null) { memCommited += vm.getVmMemSizeMb(); memCommited += _vds.getGuestOverhead(); @@ -1996,7 +2002,7 @@ .getVmNetworkInterfaceDao() .getAllForVm(vmToUpdate.argvalue.getId())); - _vmDict.put(vmToUpdate.argvalue.getId(), vmToUpdate.argvalue); + getVmDict().put(vmToUpdate.argvalue.getId(), vmToUpdate.argvalue); if (vmNewDynamicData.getStatus() == VMStatus.Up) { if (!_succededToRunVms.contains(vmToUpdate.argvalue.getId())) { _succededToRunVms.add(vmToUpdate.argvalue.getId()); -- To view, visit http://gerrit.ovirt.org/32669 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic61f8d965083b814b64257831a2ed3c6d7f764c7 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Liran Zelkha <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
