v3: - rework average/stdev handling by maintaining sum of squares and calculating standard deviation when sending metrics Right now, cumulative read/write/metadata latencies are tracked and are periodically forwarded to the MDS. These meterics are not particularly useful. A much more useful metric is the average latency and standard deviation (stdev) which is what this series of patches aims to do. The userspace (libcephfs+tool) changes are here:: https://github.com/ceph/ceph/pull/41397 The math involved in keeping track of the average latency and stdev are adjusted to closely mimic how its done in user space ceph (with some restrictions obviously) as per:: NEW_AVG = OLD_AVG + ((latency - OLD_AVG) / total_ops) NEW_STDEV = SQRT(SQ_SUM / (total_ops - 1)) Note that the cumulative latencies are still forwarded to the MDS but the tool (cephfs-top) ignores it altogether. Venky Shankar (4): ceph: use "struct ceph_timespec" for r/w/m latencies ceph: track average/stdev r/w/m latency ceph: include average/stddev r/w/m latency in mds metrics ceph: use tracked average r/w/m latencies to display metrics in debugfs fs/ceph/debugfs.c | 6 +-- fs/ceph/metric.c | 109 ++++++++++++++++++++++++---------------------- fs/ceph/metric.h | 62 ++++++++++++++++---------- 3 files changed, 101 insertions(+), 76 deletions(-) -- 2.31.1