remove loose global variable from zfs monitoring
Costa Tsaousis (ktsaou) committed
Nov 3, 2017 at 00:26 UTC
08e6868cb69320045ceb3d3266f8de7a0ae79fb2
4 files changed
+20
-18
src/freebsd_kstat_zfs.c
+4
-4
@@ -1,7 +1,7 @@
1
#include "common.h"
2
#include "zfs_common.h"
3
4
-struct arcstats arcstats = { 0 };
4
+extern struct arcstats arcstats;
5
6
// --------------------------------------------------------------------------------------------------------------------
7
// kstat.zfs.misc.arcstats
@@ -105,15 +105,15 @@ int do_kstat_zfs_misc_arcstats(int update_every, usec_t dt) {
105
int arc_sys_free[5];
106
} mibs;
107
108
- l2exist = -1;
108
+ arcstats.l2exist = -1;
109
110
if(unlikely(sysctlbyname("kstat.zfs.misc.arcstats.l2_size", &l2_size, &uint64_t_size, NULL, 0)))
111
return 0;
112
113
if(likely(l2_size))
114
- l2exist = 1;
114
+ arcstats.l2exist = 1;
115
else
116
- l2exist = 0;
116
+ arcstats.l2exist = 0;
117
118
GETSYSCTL_SIMPLE("kstat.zfs.misc.arcstats.hits", mibs.hits, arcstats.hits);
119
GETSYSCTL_SIMPLE("kstat.zfs.misc.arcstats.misses", mibs.misses, arcstats.misses);
src/proc_spl_kstat_zfs.c
+6
-6
@@ -3,7 +3,7 @@
3
4
#define ZFS_PROC_ARCSTATS "/proc/spl/kstat/zfs/arcstats"
5
6
-struct arcstats arcstats = { 0 };
6
+extern struct arcstats arcstats;
7
8
int do_proc_spl_kstat_zfs_arcstats(int update_every, usec_t dt) {
9
(void)dt;
@@ -11,7 +11,7 @@ int do_proc_spl_kstat_zfs_arcstats(int update_every, usec_t dt) {
11
static procfile *ff = NULL;
12
static ARL_BASE *arl_base = NULL;
13
14
- l2exist = -1;
14
+ arcstats.l2exist = -1;
15
16
if(unlikely(!arl_base)) {
17
arl_base = arl_create("arcstats", NULL, 60);
@@ -135,16 +135,16 @@ int do_proc_spl_kstat_zfs_arcstats(int update_every, usec_t dt) {
135
const char *key = procfile_lineword(ff, l, 0);
136
const char *value = procfile_lineword(ff, l, 2);
137
138
- if(unlikely(l2exist == -1)) {
138
+ if(unlikely(arcstats.l2exist == -1)) {
139
if(key[0] == 'l' && key[1] == '2' && key[2] == '_')
140
- l2exist = 1;
140
+ arcstats.l2exist = 1;
141
}
142
143
if(unlikely(arl_check(arl_base, key, value))) break;
144
}
145
146
- if(unlikely(l2exist == -1))
147
- l2exist = 0;
146
+ if(unlikely(arcstats.l2exist == -1))
147
+ arcstats.l2exist = 0;
148
149
generate_charts_arcstats("proc", update_every);
150
generate_charts_arc_summary("proc", update_every);
src/zfs_common.c
+6
-6
@@ -1,7 +1,7 @@
1
#include "common.h"
2
#include "zfs_common.h"
3
4
-extern struct arcstats arcstats;
4
+struct arcstats arcstats = { 0 };
5
6
void generate_charts_arcstats(const char *plugin, int update_every) {
7
@@ -70,7 +70,7 @@ void generate_charts_arcstats(const char *plugin, int update_every) {
70
71
// --------------------------------------------------------------------
72
73
- if(likely(l2exist)) {
73
+ if(likely(arcstats.l2exist)) {
74
static RRDSET *st_l2_size = NULL;
75
static RRDDIM *rd_l2_size = NULL;
76
static RRDDIM *rd_l2_asize = NULL;
@@ -133,7 +133,7 @@ void generate_charts_arcstats(const char *plugin, int update_every) {
133
rd_pread = rrddim_add(st_reads, "preads", "prefetch", 1, 1, RRD_ALGORITHM_INCREMENTAL);
134
rd_mread = rrddim_add(st_reads, "mreads", "metadata", 1, 1, RRD_ALGORITHM_INCREMENTAL);
135
136
- if(l2exist)
136
+ if(arcstats.l2exist)
137
rd_l2read = rrddim_add(st_reads, "l2reads", "l2", 1, 1, RRD_ALGORITHM_INCREMENTAL);
138
}
139
else
@@ -144,7 +144,7 @@ void generate_charts_arcstats(const char *plugin, int update_every) {
144
rrddim_set_by_pointer(st_reads, rd_pread, pread);
145
rrddim_set_by_pointer(st_reads, rd_mread, mread);
146
147
- if(l2exist)
147
+ if(arcstats.l2exist)
148
rrddim_set_by_pointer(st_reads, rd_l2read, l2read);
149
150
rrdset_done(st_reads);
@@ -152,7 +152,7 @@ void generate_charts_arcstats(const char *plugin, int update_every) {
152
153
// --------------------------------------------------------------------
154
155
- if(likely(l2exist)) {
155
+ if(likely(arcstats.l2exist)) {
156
static RRDSET *st_l2bytes = NULL;
157
static RRDDIM *rd_l2_read_bytes = NULL;
158
static RRDDIM *rd_l2_write_bytes = NULL;
@@ -322,7 +322,7 @@ void generate_charts_arcstats(const char *plugin, int update_every) {
322
323
// --------------------------------------------------------------------
324
325
- if(likely(l2exist)) {
325
+ if(likely(arcstats.l2exist)) {
326
static RRDSET *st_l2hits = NULL;
327
static RRDDIM *rd_l2hits = NULL;
328
static RRDDIM *rd_l2misses = NULL;
src/zfs_common.h
+4
-2
@@ -8,6 +8,7 @@
8
#define ZFS_FAMILY_HASH "hashes"
9
10
struct arcstats {
11
+ // values
12
unsigned long long hits;
13
unsigned long long misses;
14
unsigned long long demand_data_hits;
@@ -99,9 +100,10 @@ struct arcstats {
100
unsigned long long arc_meta_min;
101
unsigned long long arc_need_free;
102
unsigned long long arc_sys_free;
102
-};
103
104
-int l2exist;
104
+ // flags
105
+ int l2exist;
106
+};
107
108
void generate_charts_arcstats(const char *plugin, int update_every);
109
void generate_charts_arc_summary(const char *plugin, int update_every);