17840: Merge branch 'main'
[arvados.git] / services / fuse / arvados_fuse / crunchstat.py
index e856d839b83338a879395c877c7b039e2f2c04f9..0cb585a6ff6d551a7db86553282d47ae4fecdb60 100644 (file)
@@ -2,13 +2,15 @@
 #
 # SPDX-License-Identifier: AGPL-3.0
 
+from builtins import str
+from builtins import object
 import sys
 import time
 from collections import namedtuple
 
 Stat = namedtuple("Stat", ['name', 'get'])
 
-class StatWriter(object):    
+class StatWriter(object):
     def __init__(self, prefix, interval, stats):
         self.prefix = prefix
         self.interval = interval
@@ -40,7 +42,7 @@ class StatWriter(object):
 
 def statlogger(interval, keep, ops):
     calls = StatWriter("keepcalls", interval, [
-        Stat("put", keep.put_counter.get), 
+        Stat("put", keep.put_counter.get),
         Stat("get", keep.get_counter.get)
     ])
     net = StatWriter("net:keep0", interval, [
@@ -48,16 +50,20 @@ def statlogger(interval, keep, ops):
         Stat("rx", keep.download_counter.get)
     ])
     cache = StatWriter("keepcache", interval, [
-        Stat("hit", keep.hits_counter.get), 
+        Stat("hit", keep.hits_counter.get),
         Stat("miss", keep.misses_counter.get)
     ])
     fuseops = StatWriter("fuseops", interval, [
-        Stat("write", ops.write_ops_counter.get), 
+        Stat("write", ops.write_ops_counter.get),
         Stat("read", ops.read_ops_counter.get)
     ])
-    fusetime = StatWriter("fuseopstime", interval, [
-        Stat("seconds", ops.fuse_ops_total_time)
-    ])
+    fusetimes = []
+    for cur_op in ops.metric_op_names():
+        name = "fuseop:{0}".format(cur_op)
+        fusetimes.append(StatWriter(name, interval, [
+            Stat("count", ops.metric_count_func(cur_op)),
+            Stat("time", ops.metric_sum_func(cur_op))
+        ]))
     blk = StatWriter("blkio:0:0", interval, [
         Stat("write", ops.write_counter.get),
         Stat("read", ops.read_counter.get)
@@ -68,8 +74,9 @@ def statlogger(interval, keep, ops):
         calls.update()
         net.update()
         cache.update()
-        fuseops.update()
-        fusetime.update()
         blk.update()
+        fuseops.update()
+        for ftime in fusetimes:
+            ftime.update()