Пример #1
0
    def inspect_memory_usage(self, instance, duration=None):
        instance_name = instance.name()
        domain = self._get_domain_not_shut_off_or_raise(instance)

        try:
            memory_stats = domain.memoryStats()
            if (memory_stats and memory_stats.get('available')
                    and memory_stats.get('unused')):
                memory_used = (memory_stats.get('available') -
                               memory_stats.get('unused'))
                # Stat provided from libvirt is in KB, converting it to MB.
                memory_used = memory_used / units.Ki
                return virt_inspector.MemoryUsageStats(usage=memory_used)
            else:
                msg = ('Failed to inspect memory usage of instance '
                       '<name=%(name)s, id=%(id)s>, '
                       'can not get info from libvirt.') % {
                           'name': instance_name,
                           'id': instance.ID()
                       }
                raise virt_inspector.NoDataException(msg)
        # memoryStats might launch an exception if the method is not supported
        # by the underlying hypervisor being used by libvirt.
        except libvirt.libvirtError as e:
            msg = ('Failed to inspect memory usage of %(instance_uuid)s, '
                   'can not get info from libvirt: %(error)s') % {
                       'instance_uuid': domain.ID(),
                       'error': e
                   }
            raise virt_inspector.NoDataException(msg)
Пример #2
0
 def inspect_memory_usage(self, instance, duration=None):
     instance_name = get_instance_name(instance)
     vm_ref = self._lookup_by_name(instance_name)
     metrics_ref = self._call_xenapi("VM.get_metrics", vm_ref)
     metrics_rec = self._call_xenapi("VM_metrics.get_record", metrics_ref)
     # Stat provided from XenServer is in B, converting it to MB.
     memory = long(metrics_rec['memory_actual']) / units.Mi
     return virt_inspector.MemoryUsageStats(usage=memory)
Пример #3
0
 def inspect_memory_usage(self, instance, duration=None):
     vm_moid = self._ops.get_vm_moid(instance.id)
     if vm_moid is None:
         raise virt_inspector.InstanceNotFoundException(
             'VM %s not found in VMware Vsphere' % instance.id)
     mem_counter_id = self._ops.get_perf_counter_id(
         VC_AVERAGE_MEMORY_CONSUMED_CNTR)
     memory = self._ops.query_vm_aggregate_stats(vm_moid, mem_counter_id,
                                                 duration)
     # Stat provided from vSphere is in KB, converting it to MB.
     memory = memory / units.Ki
     return virt_inspector.MemoryUsageStats(usage=memory)
Пример #4
0
 def inspect_memory_usage(self, instance, duration=None):
     instance_name = get_instance_name(instance)
     usage = self._utils.get_memory_metrics(instance_name)
     return virt_inspector.MemoryUsageStats(usage=usage)