Exemple #1
0
 def fetch_statistics(self):
     """
     Loads statistics from this vDisk - returns unprocessed data
     """
     # Load data from volumedriver
     if self.volume_id and self.vpool:
         try:
             vdiskstats = self.storagedriver_client.statistics_volume(str(self.volume_id))
             vdiskinfo = self.storagedriver_client.info_volume(str(self.volume_id))
         except:
             vdiskstats = StorageDriverClient.empty_statistics()
             vdiskinfo = StorageDriverClient.empty_info()
     else:
         vdiskstats = StorageDriverClient.empty_statistics()
         vdiskinfo = StorageDriverClient.empty_info()
     # Load volumedriver data in dictionary
     vdiskstatsdict = {}
     try:
         pc = vdiskstats.performance_counters
         vdiskstatsdict['backend_data_read'] = pc.backend_read_request_size.sum()
         vdiskstatsdict['backend_data_written'] = pc.backend_write_request_size.sum()
         vdiskstatsdict['backend_read_operations'] = pc.backend_read_request_size.events()
         vdiskstatsdict['backend_write_operations'] = pc.backend_write_request_size.events()
         vdiskstatsdict['data_read'] = pc.read_request_size.sum()
         vdiskstatsdict['data_written'] = pc.write_request_size.sum()
         vdiskstatsdict['read_operations'] = pc.read_request_size.events()
         vdiskstatsdict['write_operations'] = pc.write_request_size.events()
         for key in ['cluster_cache_hits', 'cluster_cache_misses', 'metadata_store_hits',
                     'metadata_store_misses', 'sco_cache_hits', 'sco_cache_misses']:
             vdiskstatsdict[key] = getattr(vdiskstats, key)
         # Do some more manual calculations
         block_size = vdiskinfo.lba_size * vdiskinfo.cluster_multiplier
         if block_size == 0:
             block_size = 4096
         vdiskstatsdict['4k_read_operations'] = vdiskstatsdict['data_read'] / block_size
         vdiskstatsdict['4k_write_operations'] = vdiskstatsdict['data_written'] / block_size
         # Precalculate sums
         for key, items in StorageDriverClient.stat_sums.iteritems():
             vdiskstatsdict[key] = 0
             for item in items:
                 vdiskstatsdict[key] += vdiskstatsdict[item]
     except:
         pass
     return vdiskstatsdict
Exemple #2
0
 def _statistics(self, dynamic):
     """
     Fetches the Statistics for the vDisk.
     """
     client = StorageDriverClient()
     volatile = VolatileFactory.get_client()
     prev_key = '{0}_{1}'.format(self._key, 'statistics_previous')
     # Load data from volumedriver
     if self.volume_id and self.vpool:
         try:
             vdiskstats = self.storagedriver_client.statistics_volume(
                 str(self.volume_id))
         except:
             vdiskstats = client.empty_statistics()
     else:
         vdiskstats = client.empty_statistics()
     # Load volumedriver data in dictionary
     vdiskstatsdict = {}
     for key, value in vdiskstats.__class__.__dict__.items():
         if type(value) is property and key in client.stat_counters:
             vdiskstatsdict[key] = getattr(vdiskstats, key)
     # Precalculate sums
     for key, items in client.stat_sums.iteritems():
         vdiskstatsdict[key] = 0
         for item in items:
             vdiskstatsdict[key] += vdiskstatsdict[item]
     vdiskstatsdict['timestamp'] = time.time()
     # Calculate delta's based on previously loaded dictionary
     previousdict = volatile.get(prev_key, default={})
     for key in vdiskstatsdict.keys():
         if key in client.stat_keys:
             delta = vdiskstatsdict['timestamp'] - previousdict.get(
                 'timestamp', vdiskstatsdict['timestamp'])
             if delta < 0:
                 vdiskstatsdict['{0}_ps'.format(key)] = 0
             elif delta == 0:
                 vdiskstatsdict['{0}_ps'.format(key)] = previousdict.get(
                     '{0}_ps'.format(key), 0)
             else:
                 vdiskstatsdict['{0}_ps'.format(key)] = max(
                     0, (vdiskstatsdict[key] - previousdict[key]) / delta)
     volatile.set(prev_key, vdiskstatsdict, dynamic.timeout * 10)
     # Returning the dictionary
     return vdiskstatsdict
Exemple #3
0
 def _statistics(self, dynamic):
     """
     Fetches the Statistics for the vDisk.
     """
     volatile = VolatileFactory.get_client()
     prev_key = '{0}_{1}'.format(self._key, 'statistics_previous')
     # Load data from volumedriver
     if self.volume_id and self.vpool:
         try:
             vdiskstats = self.storagedriver_client.statistics_volume(str(self.volume_id))
         except:
             vdiskstats = StorageDriverClient.empty_statistics()
     else:
         vdiskstats = StorageDriverClient.empty_statistics()
     # Load volumedriver data in dictionary
     vdiskstatsdict = {}
     for key, value in vdiskstats.__class__.__dict__.items():
         if type(value) is property and key in StorageDriverClient.stat_counters:
             vdiskstatsdict[key] = getattr(vdiskstats, key)
     # Precalculate sums
     for key, items in StorageDriverClient.stat_sums.iteritems():
         vdiskstatsdict[key] = 0
         for item in items:
             vdiskstatsdict[key] += vdiskstatsdict[item]
     vdiskstatsdict['timestamp'] = time.time()
     # Calculate delta's based on previously loaded dictionary
     previousdict = volatile.get(prev_key, default={})
     for key in vdiskstatsdict.keys():
         if key in StorageDriverClient.stat_keys:
             delta = vdiskstatsdict['timestamp'] - previousdict.get('timestamp',
                                                                    vdiskstatsdict['timestamp'])
             if delta < 0:
                 vdiskstatsdict['{0}_ps'.format(key)] = 0
             elif delta == 0:
                 vdiskstatsdict['{0}_ps'.format(key)] = previousdict.get('{0}_ps'.format(key), 0)
             else:
                 vdiskstatsdict['{0}_ps'.format(key)] = max(0, (vdiskstatsdict[key] - previousdict[key]) / delta)
     volatile.set(prev_key, vdiskstatsdict, dynamic.timeout * 10)
     # Returning the dictionary
     return vdiskstatsdict