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
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)