Francesco Romani has uploaded a new change for review. Change subject: virt: stats: explicitily handle not enough samples ......................................................................
virt: stats: explicitily handle not enough samples sampling code needs a miniumum amount of samples to do its job. this patch adds explicit handling of this condition through a new exception. Change-Id: I6d5d908b46b6968555b10380d081aebe24d8645f Signed-off-by: Francesco Romani <[email protected]> --- M vdsm/virt/sampling.py M vdsm/virt/vm.py 2 files changed, 22 insertions(+), 8 deletions(-) git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/91/26791/1 diff --git a/vdsm/virt/sampling.py b/vdsm/virt/sampling.py index 991c969..389bb65 100644 --- a/vdsm/virt/sampling.py +++ b/vdsm/virt/sampling.py @@ -196,6 +196,10 @@ self.thpState = 'never' +class NotEnoughSamplesError(Exception): + pass + + class AdvancedStatsFunction(object): """ A wrapper for functions and methods that will be executed at regular @@ -239,7 +243,7 @@ time difference. """ if len(self._sample) < 2: - return None, None, None + raise NotEnoughSamplesError bgn_time, bgn_sample = self._sample[0] end_time, end_sample = self._sample[-1] diff --git a/vdsm/virt/vm.py b/vdsm/virt/vm.py index d8112ad..42025c0 100644 --- a/vdsm/virt/vm.py +++ b/vdsm/virt/vm.py @@ -231,7 +231,8 @@ # Avoid queries from storage during recovery process if self._vm.isDisksStatsCollectionEnabled(): for vmDrive in self._vm._devices[DISK_DEVICES]: - diskSamples[vmDrive.name] = self._vm._dom.blockStats(vmDrive.name) + diskSamples[vmDrive.name] = self._vm._dom.blockStats( + vmDrive.name) return diskSamples def _sampleDiskLatency(self): @@ -260,7 +261,10 @@ return 100 * val / sampleInterval / 1000 ** 3 def _getCpuStats(self, stats): - sInfo, eInfo, sampleInterval = self.sampleCpu.getStats() + try: + sInfo, eInfo, sampleInterval = self.sampleCpu.getStats() + except sampling.NotEnoughSamplesError: + return try: stats['cpuSys'] = self._usagePercentage( @@ -307,9 +311,9 @@ def _getNetworkStats(self, stats): stats['network'] = {} - sInfo, eInfo, sampleInterval = self.sampleNet.getStats() - - if sInfo is None: + try: + sInfo, eInfo, sampleInterval = self.sampleNet.getStats() + except sampling.NotEnoughSamplesError: return for nic in self._vm._devices[NIC_DEVICES]: @@ -325,7 +329,10 @@ sInfo[nic.name], eInfo[nic.name], sampleInterval) def _getDiskStats(self, stats): - sInfo, eInfo, sampleInterval = self.sampleDisk.getStats() + try: + sInfo, eInfo, sampleInterval = self.sampleDisk.getStats() + except sampling.NotEnoughSamplesError: + return for vmDrive in self._vm._devices[DISK_DEVICES]: dName = vmDrive.name @@ -347,7 +354,10 @@ stats[dName] = dStats def _getDiskLatency(self, stats): - sInfo, eInfo, sampleInterval = self.sampleDiskLatency.getStats() + try: + sInfo, eInfo, sampleInterval = self.sampleDiskLatency.getStats() + except sampling.NotEnoughSamplesError: + return def _avgLatencyCalc(sData, eData): readLatency = (0 if not (eData['rd_operations'] - -- To view, visit http://gerrit.ovirt.org/26791 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6d5d908b46b6968555b10380d081aebe24d8645f Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Francesco Romani <[email protected]> _______________________________________________ vdsm-patches mailing list [email protected] https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches
