X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/20a7cf92c668d8d75ca3d1d64f028973a71245d4..3d7e21293962aac93f195ab02bf29d60039387bb:/services/fuse/arvados_fuse/__init__.py?ds=sidebyside diff --git a/services/fuse/arvados_fuse/__init__.py b/services/fuse/arvados_fuse/__init__.py index 7c078858ca..b37ef695bd 100644 --- a/services/fuse/arvados_fuse/__init__.py +++ b/services/fuse/arvados_fuse/__init__.py @@ -413,14 +413,26 @@ class Operations(llfuse.Operations): # initializing to continue self.initlock.set() - def fuse_ops_total_time(self): - ops_sum = 0.0 - metrics = self.fuse_time.collect() - for metric in metrics: - for sample in metric.samples: - if sample.name == 'arvmount_fuse_operations_seconds_sum': - ops_sum += sample.value - return ops_sum + def metric_samples(self): + return self.fuse_time.collect()[0].samples + + def metric_op_names(self): + ops = [] + for cur_op in [sample.labels['op'] for sample in self.metric_samples()]: + if cur_op not in ops: + ops.append(cur_op) + return ops + + def metric_value(self, opname, metric): + op_value = [sample.value for sample in self.metric_samples() + if sample.name == metric and sample.labels['op'] == opname] + return op_value[0] if len(op_value) == 1 else None + + def metric_sum_func(self, opname): + return lambda: self.metric_value(opname, "arvmount_fuse_operations_seconds_sum") + + def metric_count_func(self, opname): + return lambda: int(self.metric_value(opname, "arvmount_fuse_operations_seconds_count")) @destroy_time.time() @catch_exceptions