mbox series

[v13,0/4] ceph: add perf metrics support

Message ID 1584675902-16493-1-git-send-email-xiubli@redhat.com (mailing list archive)
Headers show
Series ceph: add perf metrics support | expand

Message

Xiubo Li March 20, 2020, 3:44 a.m. UTC
From: Xiubo Li <xiubli@redhat.com>

# cat /sys/kernel/debug/ceph/9a972bfc-68cb-4d52-a610-7cd9a9adbbdd.client52904/metrics
item          total       avg_lat(us)     min_lat(us)     max_lat(us)     stdev(us)
-----------------------------------------------------------------------------------
read          21979       2093            765             248778          2771
write         1129        45184           30252           368629          20437
metadata      3           6462            1674            14260           6811

item          total           miss            hit
-------------------------------------------------
d_lease       2               0               1
caps          2               4               24248


Chnaged in V13:
- [3/4] and [4/4] switch jiffies to ktime_t for the start/end time stamp, which
  will make it much preciser, such as when the IO latency(end - start) < 1ms and
  if the HZ==1000, then we will always get end == start in jiffies, and the min
  will always be 0, actually it should be in range (0, 1000)us.
- [3/4] since by using ktime helpers we are calculating the stdev in nanosecond,
  then switch to us, so to compute the reminder make no sense any more, remove it
  from stdev.

Changed in V12:
- [3/4] and [4/4] switch atomic64_t type to u64 for lat sum and total numbers

Changed in V11:
- [3/4] and [4/4] fold the min/max/stdev factors

Changed in V10:
- rebase to the latest testing branch
- merge all the metric related patches into one
- [1/6] move metric helpers into a new file metric.c
- [2/6] move metric helpers into metric.c
- [3/6] merge the read/write patches into a signal patch and move metric helpers to metric.c
- [4/6] move metric helpers to metric.c
- [5/6] min/max latency support
- [6/6] standard deviation support

Changed in V9:
- add an r_ended field to the mds request struct and use that to calculate the metric
- fix some commit comments

Xiubo Li (4):
  ceph: add dentry lease metric support
  ceph: add caps perf metric for each superblock
  ceph: add read/write latency metric support
  ceph: add metadata perf metric support

 fs/ceph/Makefile                |   2 +-
 fs/ceph/acl.c                   |   2 +-
 fs/ceph/addr.c                  |  20 ++++++
 fs/ceph/caps.c                  |  19 ++++++
 fs/ceph/debugfs.c               | 100 +++++++++++++++++++++++++--
 fs/ceph/dir.c                   |  17 ++++-
 fs/ceph/file.c                  |  30 ++++++++
 fs/ceph/inode.c                 |   4 +-
 fs/ceph/mds_client.c            |  23 ++++++-
 fs/ceph/mds_client.h            |   7 ++
 fs/ceph/metric.c                | 148 ++++++++++++++++++++++++++++++++++++++++
 fs/ceph/metric.h                |  62 +++++++++++++++++
 fs/ceph/super.h                 |   9 ++-
 fs/ceph/xattr.c                 |   4 +-
 include/linux/ceph/osd_client.h |   3 +
 net/ceph/osd_client.c           |   3 +
 16 files changed, 436 insertions(+), 17 deletions(-)
 create mode 100644 fs/ceph/metric.c
 create mode 100644 fs/ceph/metric.h

Comments

Jeff Layton March 20, 2020, 12:10 p.m. UTC | #1
On Thu, 2020-03-19 at 23:44 -0400, xiubli@redhat.com wrote:
> From: Xiubo Li <xiubli@redhat.com>
> 
> # cat /sys/kernel/debug/ceph/9a972bfc-68cb-4d52-a610-7cd9a9adbbdd.client52904/metrics
> item          total       avg_lat(us)     min_lat(us)     max_lat(us)     stdev(us)
> -----------------------------------------------------------------------------------
> read          21979       2093            765             248778          2771
> write         1129        45184           30252           368629          20437
> metadata      3           6462            1674            14260           6811
> 
> item          total           miss            hit
> -------------------------------------------------
> d_lease       2               0               1
> caps          2               4               24248
> 
> 
> Chnaged in V13:
> - [3/4] and [4/4] switch jiffies to ktime_t for the start/end time stamp, which
>   will make it much preciser, such as when the IO latency(end - start) < 1ms and
>   if the HZ==1000, then we will always get end == start in jiffies, and the min
>   will always be 0, actually it should be in range (0, 1000)us.
> - [3/4] since by using ktime helpers we are calculating the stdev in nanosecond,
>   then switch to us, so to compute the reminder make no sense any more, remove it
>   from stdev.
> 
> Changed in V12:
> - [3/4] and [4/4] switch atomic64_t type to u64 for lat sum and total numbers
> 
> Changed in V11:
> - [3/4] and [4/4] fold the min/max/stdev factors
> 
> Changed in V10:
> - rebase to the latest testing branch
> - merge all the metric related patches into one
> - [1/6] move metric helpers into a new file metric.c
> - [2/6] move metric helpers into metric.c
> - [3/6] merge the read/write patches into a signal patch and move metric helpers to metric.c
> - [4/6] move metric helpers to metric.c
> - [5/6] min/max latency support
> - [6/6] standard deviation support
> 
> Changed in V9:
> - add an r_ended field to the mds request struct and use that to calculate the metric
> - fix some commit comments
> 
> Xiubo Li (4):
>   ceph: add dentry lease metric support
>   ceph: add caps perf metric for each superblock
>   ceph: add read/write latency metric support
>   ceph: add metadata perf metric support
> 
>  fs/ceph/Makefile                |   2 +-
>  fs/ceph/acl.c                   |   2 +-
>  fs/ceph/addr.c                  |  20 ++++++
>  fs/ceph/caps.c                  |  19 ++++++
>  fs/ceph/debugfs.c               | 100 +++++++++++++++++++++++++--
>  fs/ceph/dir.c                   |  17 ++++-
>  fs/ceph/file.c                  |  30 ++++++++
>  fs/ceph/inode.c                 |   4 +-
>  fs/ceph/mds_client.c            |  23 ++++++-
>  fs/ceph/mds_client.h            |   7 ++
>  fs/ceph/metric.c                | 148 ++++++++++++++++++++++++++++++++++++++++
>  fs/ceph/metric.h                |  62 +++++++++++++++++
>  fs/ceph/super.h                 |   9 ++-
>  fs/ceph/xattr.c                 |   4 +-
>  include/linux/ceph/osd_client.h |   3 +
>  net/ceph/osd_client.c           |   3 +
>  16 files changed, 436 insertions(+), 17 deletions(-)
>  create mode 100644 fs/ceph/metric.c
>  create mode 100644 fs/ceph/metric.h
> 

Thanks Xiubo,

I think this looks good now. I'm going to do a bit of testing and merge
it later today.

Thanks again!