Blame view
fs/ceph/metric.h
3.85 KB
f9009efac
|
1 2 3 4 5 6 |
/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _FS_CEPH_MDS_METRIC_H #define _FS_CEPH_MDS_METRIC_H #include <linux/types.h> #include <linux/percpu_counter.h> |
97e27aaa9
|
7 |
#include <linux/ktime.h> |
f9009efac
|
8 |
|
18f473b38
|
9 10 11 12 13 14 15 16 17 18 19 |
extern bool disable_send_metrics; enum ceph_metric_type { CLIENT_METRIC_TYPE_CAP_INFO, CLIENT_METRIC_TYPE_READ_LATENCY, CLIENT_METRIC_TYPE_WRITE_LATENCY, CLIENT_METRIC_TYPE_METADATA_LATENCY, CLIENT_METRIC_TYPE_DENTRY_LEASE, CLIENT_METRIC_TYPE_MAX = CLIENT_METRIC_TYPE_DENTRY_LEASE, }; |
3b4168dd8
|
20 21 22 23 24 25 26 27 28 29 30 31 |
/* * This will always have the highest metric bit value * as the last element of the array. */ #define CEPHFS_METRIC_SPEC_CLIENT_SUPPORTED { \ CLIENT_METRIC_TYPE_CAP_INFO, \ CLIENT_METRIC_TYPE_READ_LATENCY, \ CLIENT_METRIC_TYPE_WRITE_LATENCY, \ CLIENT_METRIC_TYPE_METADATA_LATENCY, \ \ CLIENT_METRIC_TYPE_MAX, \ } |
18f473b38
|
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
/* metric caps header */ struct ceph_metric_cap { __le32 type; /* ceph metric type */ __u8 ver; __u8 compat; __le32 data_len; /* length of sizeof(hit + mis + total) */ __le64 hit; __le64 mis; __le64 total; } __packed; /* metric read latency header */ struct ceph_metric_read_latency { __le32 type; /* ceph metric type */ __u8 ver; __u8 compat; __le32 data_len; /* length of sizeof(sec + nsec) */ __le32 sec; __le32 nsec; } __packed; /* metric write latency header */ struct ceph_metric_write_latency { __le32 type; /* ceph metric type */ __u8 ver; __u8 compat; __le32 data_len; /* length of sizeof(sec + nsec) */ __le32 sec; __le32 nsec; } __packed; /* metric metadata latency header */ struct ceph_metric_metadata_latency { __le32 type; /* ceph metric type */ __u8 ver; __u8 compat; __le32 data_len; /* length of sizeof(sec + nsec) */ __le32 sec; __le32 nsec; } __packed; struct ceph_metric_head { __le32 num; /* the number of metrics that will be sent */ } __packed; |
f9009efac
|
84 85 86 87 88 |
/* This is the global metrics */ struct ceph_client_metric { atomic64_t total_dentries; struct percpu_counter d_lease_hit; struct percpu_counter d_lease_mis; |
1af16d547
|
89 |
|
4f1d756de
|
90 |
atomic64_t total_caps; |
1af16d547
|
91 92 |
struct percpu_counter i_caps_hit; struct percpu_counter i_caps_mis; |
97e27aaa9
|
93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
spinlock_t read_latency_lock; u64 total_reads; ktime_t read_latency_sum; ktime_t read_latency_sq_sum; ktime_t read_latency_min; ktime_t read_latency_max; spinlock_t write_latency_lock; u64 total_writes; ktime_t write_latency_sum; ktime_t write_latency_sq_sum; ktime_t write_latency_min; ktime_t write_latency_max; |
70c948206
|
107 108 109 110 111 112 113 |
spinlock_t metadata_latency_lock; u64 total_metadatas; ktime_t metadata_latency_sum; ktime_t metadata_latency_sq_sum; ktime_t metadata_latency_min; ktime_t metadata_latency_max; |
18f473b38
|
114 |
|
1dd8d4708
|
115 116 117 118 119 120 |
/* The total number of directories and files that are opened */ atomic64_t opened_files; /* The total number of inodes that have opened files or directories */ struct percpu_counter opened_inodes; struct percpu_counter total_inodes; |
18f473b38
|
121 122 |
struct ceph_mds_session *session; struct delayed_work delayed_work; /* delayed work */ |
f9009efac
|
123 |
}; |
18f473b38
|
124 125 126 127 128 129 130 131 |
static inline void metric_schedule_delayed(struct ceph_client_metric *m) { if (disable_send_metrics) return; /* per second */ schedule_delayed_work(&m->delayed_work, round_jiffies_relative(HZ)); } |
f9009efac
|
132 133 |
extern int ceph_metric_init(struct ceph_client_metric *m); extern void ceph_metric_destroy(struct ceph_client_metric *m); |
1af16d547
|
134 135 136 137 138 139 140 141 142 143 |
static inline void ceph_update_cap_hit(struct ceph_client_metric *m) { percpu_counter_inc(&m->i_caps_hit); } static inline void ceph_update_cap_mis(struct ceph_client_metric *m) { percpu_counter_inc(&m->i_caps_mis); } |
97e27aaa9
|
144 145 146 147 148 149 150 |
extern void ceph_update_read_latency(struct ceph_client_metric *m, ktime_t r_start, ktime_t r_end, int rc); extern void ceph_update_write_latency(struct ceph_client_metric *m, ktime_t r_start, ktime_t r_end, int rc); |
70c948206
|
151 152 153 |
extern void ceph_update_metadata_latency(struct ceph_client_metric *m, ktime_t r_start, ktime_t r_end, int rc); |
f9009efac
|
154 |
#endif /* _FS_CEPH_MDS_METRIC_H */ |