Esempio n. 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))
         except Exception as ex:
             VDisk._logger.error(
                 'Error loading statistics_volume from {0}: {1}'.format(
                     self.volume_id, ex))
             vdiskstats = StorageDriverClient.EMPTY_STATISTICS()
     else:
         vdiskstats = StorageDriverClient.EMPTY_STATISTICS()
     # 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', 'stored'
         ]:
             vdiskstatsdict[key] = getattr(vdiskstats, key)
         # Do some more manual calculations
         block_size = self.metadata.get('lba_size', 0) * self.metadata.get(
             'cluster_multiplier', 0)
         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
         # Pre-calculate sums
         for key, items in StorageDriverClient.STAT_SUMS.iteritems():
             vdiskstatsdict[key] = 0
             for item in items:
                 vdiskstatsdict[key] += vdiskstatsdict[item]
     except:
         pass
     return vdiskstatsdict
Esempio n. 2
0
 def fetch_statistics(self):
     """
     Loads statistics from this vDisk - returns unprocessed data
     """
     # Load data from volumedriver
     vdiskstats = StorageDriverClient.EMPTY_STATISTICS()
     if self.volume_id and self.vpool:
         try:
             vdiskstats = self.storagedriver_client.statistics_volume(
                 str(self.volume_id), req_timeout_secs=2)
         except Exception as ex:
             VDisk._logger.error(
                 'Error loading statistics_volume from {0}: {1}'.format(
                     self.volume_id, ex))
     # Load volumedriver data in dictionary
     return VDisk.extract_statistics(vdiskstats, self)