eliminated even more unecessary index lookups
Costa Tsaousis (ktsaou) committed
Oct 14, 2017 at 23:43 UTC
e1f805f85dad60bb8fd3ed660fde452cf88573f2
4 files changed
+682
-578
src/ipc.c
+16
-15
@@ -167,7 +167,8 @@ int do_ipc(int update_every, usec_t dt) {
167
static struct ipc_limits limits;
168
static struct ipc_status status;
169
static RRDVAR *arrays_max = NULL, *semaphores_max = NULL;
170
- static RRDSET *semaphores = NULL, *arrays = NULL;
170
+ static RRDSET *st_semaphores = NULL, *st_arrays = NULL;
171
+ static RRDDIM *rd_semaphores = NULL, *rd_arrays = NULL;
172
173
if(unlikely(!initialized)) {
174
initialized = 1;
@@ -191,8 +192,8 @@ int do_ipc(int update_every, usec_t dt) {
192
if(semaphores_max) rrdvar_custom_host_variable_set(semaphores_max, limits.semmns);
193
194
// create the charts
194
- if(unlikely(!semaphores)) {
195
- semaphores = rrdset_create_localhost(
195
+ if(unlikely(!st_semaphores)) {
196
+ st_semaphores = rrdset_create_localhost(
197
"system"
198
, "ipc_semaphores"
199
, NULL
@@ -206,11 +207,11 @@ int do_ipc(int update_every, usec_t dt) {
207
, localhost->rrd_update_every
208
, RRDSET_TYPE_AREA
209
);
209
- rrddim_add(semaphores, "semaphores", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
210
+ rd_semaphores = rrddim_add(st_semaphores, "semaphores", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
211
}
212
212
- if(unlikely(!arrays)) {
213
- arrays = rrdset_create_localhost(
213
+ if(unlikely(!st_arrays)) {
214
+ st_arrays = rrdset_create_localhost(
215
"system"
216
, "ipc_semaphore_arrays"
217
, NULL
@@ -224,7 +225,7 @@ int do_ipc(int update_every, usec_t dt) {
225
, localhost->rrd_update_every
226
, RRDSET_TYPE_AREA
227
);
227
- rrddim_add(arrays, "arrays", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
228
+ rd_arrays = rrddim_add(st_arrays, "arrays", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
229
}
230
}
231
@@ -236,8 +237,8 @@ int do_ipc(int update_every, usec_t dt) {
237
if(arrays_max) rrdvar_custom_host_variable_set(arrays_max, limits.semmni);
238
if(semaphores_max) rrdvar_custom_host_variable_set(semaphores_max, limits.semmns);
239
239
- arrays->red = limits.semmni;
240
- semaphores->red = limits.semmns;
240
+ st_arrays->red = limits.semmni;
241
+ st_semaphores->red = limits.semmns;
242
243
read_limits_next = 60 / update_every;
244
}
@@ -250,13 +251,13 @@ int do_ipc(int update_every, usec_t dt) {
251
return 0;
252
}
253
253
- if(semaphores->counter_done) rrdset_next(semaphores);
254
- rrddim_set(semaphores, "semaphores", status.semaem);
255
- rrdset_done(semaphores);
254
+ if(st_semaphores->counter_done) rrdset_next(st_semaphores);
255
+ rrddim_set_by_pointer(st_semaphores, rd_semaphores, status.semaem);
256
+ rrdset_done(st_semaphores);
257
257
- if(arrays->counter_done) rrdset_next(arrays);
258
- rrddim_set(arrays, "arrays", status.semusz);
259
- rrdset_done(arrays);
258
+ if(st_arrays->counter_done) rrdset_next(st_arrays);
259
+ rrddim_set_by_pointer(st_arrays, rd_arrays, status.semusz);
260
+ rrdset_done(st_arrays);
261
262
return 0;
263
}
src/proc_net_rpc_nfs.c
+168
-154
@@ -4,127 +4,133 @@ struct nfs_procs {
4
char name[30];
5
unsigned long long value;
6
int present;
7
+ RRDDIM *rd;
8
};
9
10
struct nfs_procs nfs_proc2_values[] = {
10
- { "null", 0ULL, 0 },
11
- { "getattr", 0ULL, 0 },
12
- { "setattr", 0ULL, 0 },
13
- { "root", 0ULL, 0 },
14
- { "lookup", 0ULL, 0 },
15
- { "readlink", 0ULL, 0 },
16
- { "read", 0ULL, 0 },
17
- { "wrcache", 0ULL, 0 },
18
- { "write", 0ULL, 0 },
19
- { "create", 0ULL, 0 },
20
- { "remove", 0ULL, 0 },
21
- { "rename", 0ULL, 0 },
22
- { "link", 0ULL, 0 },
23
- { "symlink", 0ULL, 0 },
24
- { "mkdir", 0ULL, 0 },
25
- { "rmdir", 0ULL, 0 },
26
- { "readdir", 0ULL, 0 },
27
- { "fsstat", 0ULL, 0 },
28
-
29
- /* termination */
30
- { "", 0ULL, 0 }
11
+ { "null" , 0ULL, 0, NULL}
12
+ , {"getattr" , 0ULL, 0, NULL}
13
+ , {"setattr" , 0ULL, 0, NULL}
14
+ , {"root" , 0ULL, 0, NULL}
15
+ , {"lookup" , 0ULL, 0, NULL}
16
+ , {"readlink", 0ULL, 0, NULL}
17
+ , {"read" , 0ULL, 0, NULL}
18
+ , {"wrcache" , 0ULL, 0, NULL}
19
+ , {"write" , 0ULL, 0, NULL}
20
+ , {"create" , 0ULL, 0, NULL}
21
+ , {"remove" , 0ULL, 0, NULL}
22
+ , {"rename" , 0ULL, 0, NULL}
23
+ , {"link" , 0ULL, 0, NULL}
24
+ , {"symlink" , 0ULL, 0, NULL}
25
+ , {"mkdir" , 0ULL, 0, NULL}
26
+ , {"rmdir" , 0ULL, 0, NULL}
27
+ , {"readdir" , 0ULL, 0, NULL}
28
+ , {"fsstat" , 0ULL, 0, NULL}
29
+ ,
30
+
31
+ /* termination */
32
+ { "" , 0ULL, 0, NULL}
33
};
34
35
struct nfs_procs nfs_proc3_values[] = {
34
- { "null", 0ULL, 0 },
35
- { "getattr", 0ULL, 0 },
36
- { "setattr", 0ULL, 0 },
37
- { "lookup", 0ULL, 0 },
38
- { "access", 0ULL, 0 },
39
- { "readlink", 0ULL, 0 },
40
- { "read", 0ULL, 0 },
41
- { "write", 0ULL, 0 },
42
- { "create", 0ULL, 0 },
43
- { "mkdir", 0ULL, 0 },
44
- { "symlink", 0ULL, 0 },
45
- { "mknod", 0ULL, 0 },
46
- { "remove", 0ULL, 0 },
47
- { "rmdir", 0ULL, 0 },
48
- { "rename", 0ULL, 0 },
49
- { "link", 0ULL, 0 },
50
- { "readdir", 0ULL, 0 },
51
- { "readdirplus", 0ULL, 0 },
52
- { "fsstat", 0ULL, 0 },
53
- { "fsinfo", 0ULL, 0 },
54
- { "pathconf", 0ULL, 0 },
55
- { "commit", 0ULL, 0 },
56
-
57
- /* termination */
58
- { "", 0ULL, 0 }
36
+ { "null" , 0ULL, 0, NULL}
37
+ , {"getattr" , 0ULL, 0, NULL}
38
+ , {"setattr" , 0ULL, 0, NULL}
39
+ , {"lookup" , 0ULL, 0, NULL}
40
+ , {"access" , 0ULL, 0, NULL}
41
+ , {"readlink" , 0ULL, 0, NULL}
42
+ , {"read" , 0ULL, 0, NULL}
43
+ , {"write" , 0ULL, 0, NULL}
44
+ , {"create" , 0ULL, 0, NULL}
45
+ , {"mkdir" , 0ULL, 0, NULL}
46
+ , {"symlink" , 0ULL, 0, NULL}
47
+ , {"mknod" , 0ULL, 0, NULL}
48
+ , {"remove" , 0ULL, 0, NULL}
49
+ , {"rmdir" , 0ULL, 0, NULL}
50
+ , {"rename" , 0ULL, 0, NULL}
51
+ , {"link" , 0ULL, 0, NULL}
52
+ , {"readdir" , 0ULL, 0, NULL}
53
+ , {"readdirplus", 0ULL, 0, NULL}
54
+ , {"fsstat" , 0ULL, 0, NULL}
55
+ , {"fsinfo" , 0ULL, 0, NULL}
56
+ , {"pathconf" , 0ULL, 0, NULL}
57
+ , {"commit" , 0ULL, 0, NULL}
58
+ ,
59
+
60
+ /* termination */
61
+ { "" , 0ULL, 0, NULL}
62
};
63
64
struct nfs_procs nfs_proc4_values[] = {
62
- { "null", 0ULL, 0 },
63
- { "read", 0ULL, 0 },
64
- { "write", 0ULL, 0 },
65
- { "commit", 0ULL, 0 },
66
- { "open", 0ULL, 0 },
67
- { "open_conf", 0ULL, 0 },
68
- { "open_noat", 0ULL, 0 },
69
- { "open_dgrd", 0ULL, 0 },
70
- { "close", 0ULL, 0 },
71
- { "setattr", 0ULL, 0 },
72
- { "fsinfo", 0ULL, 0 },
73
- { "renew", 0ULL, 0 },
74
- { "setclntid", 0ULL, 0 },
75
- { "confirm", 0ULL, 0 },
76
- { "lock", 0ULL, 0 },
77
- { "lockt", 0ULL, 0 },
78
- { "locku", 0ULL, 0 },
79
- { "access", 0ULL, 0 },
80
- { "getattr", 0ULL, 0 },
81
- { "lookup", 0ULL, 0 },
82
- { "lookup_root", 0ULL, 0 },
83
- { "remove", 0ULL, 0 },
84
- { "rename", 0ULL, 0 },
85
- { "link", 0ULL, 0 },
86
- { "symlink", 0ULL, 0 },
87
- { "create", 0ULL, 0 },
88
- { "pathconf", 0ULL, 0 },
89
- { "statfs", 0ULL, 0 },
90
- { "readlink", 0ULL, 0 },
91
- { "readdir", 0ULL, 0 },
92
- { "server_caps", 0ULL, 0 },
93
- { "delegreturn", 0ULL, 0 },
94
- { "getacl", 0ULL, 0 },
95
- { "setacl", 0ULL, 0 },
96
- { "fs_locations", 0ULL, 0 },
97
- { "rel_lkowner", 0ULL, 0 },
98
- { "secinfo", 0ULL, 0 },
99
- { "fsid_present", 0ULL, 0 },
100
-
101
- /* nfsv4.1 client ops */
102
- { "exchange_id", 0ULL, 0 },
103
- { "create_session", 0ULL, 0 },
104
- { "destroy_session", 0ULL, 0 },
105
- { "sequence", 0ULL, 0 },
106
- { "get_lease_time", 0ULL, 0 },
107
- { "reclaim_comp", 0ULL, 0 },
108
- { "layoutget", 0ULL, 0 },
109
- { "getdevinfo", 0ULL, 0 },
110
- { "layoutcommit", 0ULL, 0 },
111
- { "layoutreturn", 0ULL, 0 },
112
- { "secinfo_no", 0ULL, 0 },
113
- { "test_stateid", 0ULL, 0 },
114
- { "free_stateid", 0ULL, 0 },
115
- { "getdevicelist", 0ULL, 0 },
116
- { "bind_conn_to_ses", 0ULL, 0 },
117
- { "destroy_clientid", 0ULL, 0 },
118
-
119
- /* nfsv4.2 client ops */
120
- { "seek", 0ULL, 0 },
121
- { "allocate", 0ULL, 0 },
122
- { "deallocate", 0ULL, 0 },
123
- { "layoutstats", 0ULL, 0 },
124
- { "clone", 0ULL, 0 },
125
-
126
- /* termination */
127
- { "", 0ULL, 0 }
65
+ { "null" , 0ULL, 0, NULL}
66
+ , {"read" , 0ULL, 0, NULL}
67
+ , {"write" , 0ULL, 0, NULL}
68
+ , {"commit" , 0ULL, 0, NULL}
69
+ , {"open" , 0ULL, 0, NULL}
70
+ , {"open_conf" , 0ULL, 0, NULL}
71
+ , {"open_noat" , 0ULL, 0, NULL}
72
+ , {"open_dgrd" , 0ULL, 0, NULL}
73
+ , {"close" , 0ULL, 0, NULL}
74
+ , {"setattr" , 0ULL, 0, NULL}
75
+ , {"fsinfo" , 0ULL, 0, NULL}
76
+ , {"renew" , 0ULL, 0, NULL}
77
+ , {"setclntid" , 0ULL, 0, NULL}
78
+ , {"confirm" , 0ULL, 0, NULL}
79
+ , {"lock" , 0ULL, 0, NULL}
80
+ , {"lockt" , 0ULL, 0, NULL}
81
+ , {"locku" , 0ULL, 0, NULL}
82
+ , {"access" , 0ULL, 0, NULL}
83
+ , {"getattr" , 0ULL, 0, NULL}
84
+ , {"lookup" , 0ULL, 0, NULL}
85
+ , {"lookup_root" , 0ULL, 0, NULL}
86
+ , {"remove" , 0ULL, 0, NULL}
87
+ , {"rename" , 0ULL, 0, NULL}
88
+ , {"link" , 0ULL, 0, NULL}
89
+ , {"symlink" , 0ULL, 0, NULL}
90
+ , {"create" , 0ULL, 0, NULL}
91
+ , {"pathconf" , 0ULL, 0, NULL}
92
+ , {"statfs" , 0ULL, 0, NULL}
93
+ , {"readlink" , 0ULL, 0, NULL}
94
+ , {"readdir" , 0ULL, 0, NULL}
95
+ , {"server_caps" , 0ULL, 0, NULL}
96
+ , {"delegreturn" , 0ULL, 0, NULL}
97
+ , {"getacl" , 0ULL, 0, NULL}
98
+ , {"setacl" , 0ULL, 0, NULL}
99
+ , {"fs_locations" , 0ULL, 0, NULL}
100
+ , {"rel_lkowner" , 0ULL, 0, NULL}
101
+ , {"secinfo" , 0ULL, 0, NULL}
102
+ , {"fsid_present" , 0ULL, 0, NULL}
103
+ ,
104
+
105
+ /* nfsv4.1 client ops */
106
+ { "exchange_id" , 0ULL, 0, NULL}
107
+ , {"create_session" , 0ULL, 0, NULL}
108
+ , {"destroy_session" , 0ULL, 0, NULL}
109
+ , {"sequence" , 0ULL, 0, NULL}
110
+ , {"get_lease_time" , 0ULL, 0, NULL}
111
+ , {"reclaim_comp" , 0ULL, 0, NULL}
112
+ , {"layoutget" , 0ULL, 0, NULL}
113
+ , {"getdevinfo" , 0ULL, 0, NULL}
114
+ , {"layoutcommit" , 0ULL, 0, NULL}
115
+ , {"layoutreturn" , 0ULL, 0, NULL}
116
+ , {"secinfo_no" , 0ULL, 0, NULL}
117
+ , {"test_stateid" , 0ULL, 0, NULL}
118
+ , {"free_stateid" , 0ULL, 0, NULL}
119
+ , {"getdevicelist" , 0ULL, 0, NULL}
120
+ , {"bind_conn_to_ses", 0ULL, 0, NULL}
121
+ , {"destroy_clientid", 0ULL, 0, NULL}
122
+ ,
123
+
124
+ /* nfsv4.2 client ops */
125
+ { "seek" , 0ULL, 0, NULL}
126
+ , {"allocate" , 0ULL, 0, NULL}
127
+ , {"deallocate" , 0ULL, 0, NULL}
128
+ , {"layoutstats" , 0ULL, 0, NULL}
129
+ , {"clone" , 0ULL, 0, NULL}
130
+ ,
131
+
132
+ /* termination */
133
+ { "" , 0ULL, 0, NULL}
134
};
135
136
int do_proc_net_rpc_nfs(int update_every, usec_t dt) {
@@ -264,13 +270,14 @@ int do_proc_net_rpc_nfs(int update_every, usec_t dt) {
270
}
271
}
272
267
- RRDSET *st;
268
-
273
// --------------------------------------------------------------------
274
275
if(do_net == 2) {
272
- st = rrdset_find_bytype_localhost("nfs", "net");
273
- if(!st) {
276
+ static RRDSET *st = NULL;
277
+ static RRDDIM *rd_udp = NULL,
278
+ *rd_tcp = NULL;
279
+
280
+ if(unlikely(!st)) {
281
st = rrdset_create_localhost(
282
"nfs"
283
, "net"
@@ -288,25 +295,29 @@ int do_proc_net_rpc_nfs(int update_every, usec_t dt) {
295
296
rrdset_flag_set(st, RRDSET_FLAG_DETAIL);
297
291
- rrddim_add(st, "udp", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
292
- rrddim_add(st, "tcp", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
298
+ rd_udp = rrddim_add(st, "udp", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
299
+ rd_tcp = rrddim_add(st, "tcp", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
300
}
301
else rrdset_next(st);
302
303
// ignore net_count, net_tcp_connections
297
- if(net_count) {};
298
- if(net_tcp_connections) {};
304
+ (void)net_count;
305
+ (void)net_tcp_connections;
306
300
- rrddim_set(st, "udp", net_udp_count);
301
- rrddim_set(st, "tcp", net_tcp_count);
307
+ rrddim_set_by_pointer(st, rd_udp, net_udp_count);
308
+ rrddim_set_by_pointer(st, rd_tcp, net_tcp_count);
309
rrdset_done(st);
310
}
311
312
// --------------------------------------------------------------------
313
314
if(do_rpc == 2) {
308
- st = rrdset_find_bytype_localhost("nfs", "rpc");
309
- if(!st) {
315
+ static RRDSET *st = NULL;
316
+ static RRDDIM *rd_calls = NULL,
317
+ *rd_retransmits = NULL,
318
+ *rd_auth_refresh = NULL;
319
+
320
+ if(unlikely(!st)) {
321
st = rrdset_create_localhost(
322
"nfs"
323
, "rpc"
@@ -323,24 +334,23 @@ int do_proc_net_rpc_nfs(int update_every, usec_t dt) {
334
);
335
rrdset_flag_set(st, RRDSET_FLAG_DETAIL);
336
326
- rrddim_add(st, "calls", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
327
- rrddim_add(st, "retransmits", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
328
- rrddim_add(st, "auth_refresh", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
337
+ rd_calls = rrddim_add(st, "calls", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
338
+ rd_retransmits = rrddim_add(st, "retransmits", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
339
+ rd_auth_refresh = rrddim_add(st, "auth_refresh", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
340
}
341
else rrdset_next(st);
342
332
- rrddim_set(st, "calls", rpc_calls);
333
- rrddim_set(st, "retransmits", rpc_retransmits);
334
- rrddim_set(st, "auth_refresh", rpc_auth_refresh);
343
+ rrddim_set_by_pointer(st, rd_calls, rpc_calls);
344
+ rrddim_set_by_pointer(st, rd_retransmits, rpc_retransmits);
345
+ rrddim_set_by_pointer(st, rd_auth_refresh, rpc_auth_refresh);
346
rrdset_done(st);
347
}
348
349
// --------------------------------------------------------------------
350
351
if(do_proc2 == 2) {
341
- unsigned int i;
342
- st = rrdset_find_bytype_localhost("nfs", "proc2");
343
- if(!st) {
352
+ static RRDSET *st = NULL;
353
+ if(unlikely(!st)) {
354
st = rrdset_create_localhost(
355
"nfs"
356
, "proc2"
@@ -355,14 +365,16 @@ int do_proc_net_rpc_nfs(int update_every, usec_t dt) {
365
, update_every
366
, RRDSET_TYPE_STACKED
367
);
358
-
359
- for(i = 0; nfs_proc2_values[i].present ; i++)
360
- rrddim_add(st, nfs_proc2_values[i].name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
368
}
369
else rrdset_next(st);
370
364
- for(i = 0; nfs_proc2_values[i].present ; i++)
365
- rrddim_set(st, nfs_proc2_values[i].name, nfs_proc2_values[i].value);
371
+ size_t i;
372
+ for(i = 0; nfs_proc2_values[i].present ; i++) {
373
+ if(unlikely(!nfs_proc2_values[i].rd))
374
+ nfs_proc2_values[i].rd = rrddim_add(st, nfs_proc2_values[i].name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
375
+
376
+ rrddim_set_by_pointer(st, nfs_proc2_values[i].rd, nfs_proc2_values[i].value);
377
+ }
378
379
rrdset_done(st);
380
}
@@ -370,9 +382,8 @@ int do_proc_net_rpc_nfs(int update_every, usec_t dt) {
382
// --------------------------------------------------------------------
383
384
if(do_proc3 == 2) {
373
- unsigned int i;
374
- st = rrdset_find_bytype_localhost("nfs", "proc3");
375
- if(!st) {
385
+ static RRDSET *st = NULL;
386
+ if(unlikely(!st)) {
387
st = rrdset_create_localhost(
388
"nfs"
389
, "proc3"
@@ -387,14 +398,16 @@ int do_proc_net_rpc_nfs(int update_every, usec_t dt) {
398
, update_every
399
, RRDSET_TYPE_STACKED
400
);
390
-
391
- for(i = 0; nfs_proc3_values[i].present ; i++)
392
- rrddim_add(st, nfs_proc3_values[i].name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
401
}
402
else rrdset_next(st);
403
396
- for(i = 0; nfs_proc3_values[i].present ; i++)
397
- rrddim_set(st, nfs_proc3_values[i].name, nfs_proc3_values[i].value);
404
+ size_t i;
405
+ for(i = 0; nfs_proc3_values[i].present ; i++) {
406
+ if(unlikely(!nfs_proc3_values[i].rd))
407
+ nfs_proc3_values[i].rd = rrddim_add(st, nfs_proc3_values[i].name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
408
+
409
+ rrddim_set_by_pointer(st, nfs_proc3_values[i].rd, nfs_proc3_values[i].value);
410
+ }
411
412
rrdset_done(st);
413
}
@@ -402,9 +415,8 @@ int do_proc_net_rpc_nfs(int update_every, usec_t dt) {
415
// --------------------------------------------------------------------
416
417
if(do_proc4 == 2) {
405
- unsigned int i;
406
- st = rrdset_find_bytype_localhost("nfs", "proc4");
407
- if(!st) {
418
+ static RRDSET *st = NULL;
419
+ if(unlikely(!st)) {
420
st = rrdset_create_localhost(
421
"nfs"
422
, "proc4"
@@ -419,14 +431,16 @@ int do_proc_net_rpc_nfs(int update_every, usec_t dt) {
431
, update_every
432
, RRDSET_TYPE_STACKED
433
);
422
-
423
- for(i = 0; nfs_proc4_values[i].present ; i++)
424
- rrddim_add(st, nfs_proc4_values[i].name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
434
}
435
else rrdset_next(st);
436
428
- for(i = 0; nfs_proc4_values[i].present ; i++)
429
- rrddim_set(st, nfs_proc4_values[i].name, nfs_proc4_values[i].value);
437
+ size_t i;
438
+ for(i = 0; nfs_proc4_values[i].present ; i++) {
439
+ if(unlikely(!nfs_proc4_values[i].rd))
440
+ nfs_proc4_values[i].rd = rrddim_add(st, nfs_proc4_values[i].name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
441
+
442
+ rrddim_set_by_pointer(st, nfs_proc4_values[i].rd, nfs_proc4_values[i].value);
443
+ }
444
445
rrdset_done(st);
446
}
src/proc_net_rpc_nfsd.c
+439
-375
@@ -4,208 +4,217 @@ struct nfsd_procs {
4
char name[30];
5
unsigned long long value;
6
int present;
7
+ RRDDIM *rd;
8
};
9
10
struct nfsd_procs nfsd_proc2_values[] = {
10
- { "null", 0ULL, 0 },
11
- { "getattr", 0ULL, 0 },
12
- { "setattr", 0ULL, 0 },
13
- { "root", 0ULL, 0 },
14
- { "lookup", 0ULL, 0 },
15
- { "readlink", 0ULL, 0 },
16
- { "read", 0ULL, 0 },
17
- { "wrcache", 0ULL, 0 },
18
- { "write", 0ULL, 0 },
19
- { "create", 0ULL, 0 },
20
- { "remove", 0ULL, 0 },
21
- { "rename", 0ULL, 0 },
22
- { "link", 0ULL, 0 },
23
- { "symlink", 0ULL, 0 },
24
- { "mkdir", 0ULL, 0 },
25
- { "rmdir", 0ULL, 0 },
26
- { "readdir", 0ULL, 0 },
27
- { "fsstat", 0ULL, 0 },
28
-
29
- /* termination */
30
- { "", 0ULL, 0 }
11
+ { "null" , 0ULL, 0, NULL}
12
+ , {"getattr" , 0ULL, 0, NULL}
13
+ , {"setattr" , 0ULL, 0, NULL}
14
+ , {"root" , 0ULL, 0, NULL}
15
+ , {"lookup" , 0ULL, 0, NULL}
16
+ , {"readlink", 0ULL, 0, NULL}
17
+ , {"read" , 0ULL, 0, NULL}
18
+ , {"wrcache" , 0ULL, 0, NULL}
19
+ , {"write" , 0ULL, 0, NULL}
20
+ , {"create" , 0ULL, 0, NULL}
21
+ , {"remove" , 0ULL, 0, NULL}
22
+ , {"rename" , 0ULL, 0, NULL}
23
+ , {"link" , 0ULL, 0, NULL}
24
+ , {"symlink" , 0ULL, 0, NULL}
25
+ , {"mkdir" , 0ULL, 0, NULL}
26
+ , {"rmdir" , 0ULL, 0, NULL}
27
+ , {"readdir" , 0ULL, 0, NULL}
28
+ , {"fsstat" , 0ULL, 0, NULL}
29
+ ,
30
+
31
+ /* termination */
32
+ { "" , 0ULL, 0, NULL}
33
};
34
35
struct nfsd_procs nfsd_proc3_values[] = {
34
- { "null", 0ULL, 0 },
35
- { "getattr", 0ULL, 0 },
36
- { "setattr", 0ULL, 0 },
37
- { "lookup", 0ULL, 0 },
38
- { "access", 0ULL, 0 },
39
- { "readlink", 0ULL, 0 },
40
- { "read", 0ULL, 0 },
41
- { "write", 0ULL, 0 },
42
- { "create", 0ULL, 0 },
43
- { "mkdir", 0ULL, 0 },
44
- { "symlink", 0ULL, 0 },
45
- { "mknod", 0ULL, 0 },
46
- { "remove", 0ULL, 0 },
47
- { "rmdir", 0ULL, 0 },
48
- { "rename", 0ULL, 0 },
49
- { "link", 0ULL, 0 },
50
- { "readdir", 0ULL, 0 },
51
- { "readdirplus", 0ULL, 0 },
52
- { "fsstat", 0ULL, 0 },
53
- { "fsinfo", 0ULL, 0 },
54
- { "pathconf", 0ULL, 0 },
55
- { "commit", 0ULL, 0 },
56
-
57
- /* termination */
58
- { "", 0ULL, 0 }
36
+ { "null" , 0ULL, 0, NULL}
37
+ , {"getattr" , 0ULL, 0, NULL}
38
+ , {"setattr" , 0ULL, 0, NULL}
39
+ , {"lookup" , 0ULL, 0, NULL}
40
+ , {"access" , 0ULL, 0, NULL}
41
+ , {"readlink" , 0ULL, 0, NULL}
42
+ , {"read" , 0ULL, 0, NULL}
43
+ , {"write" , 0ULL, 0, NULL}
44
+ , {"create" , 0ULL, 0, NULL}
45
+ , {"mkdir" , 0ULL, 0, NULL}
46
+ , {"symlink" , 0ULL, 0, NULL}
47
+ , {"mknod" , 0ULL, 0, NULL}
48
+ , {"remove" , 0ULL, 0, NULL}
49
+ , {"rmdir" , 0ULL, 0, NULL}
50
+ , {"rename" , 0ULL, 0, NULL}
51
+ , {"link" , 0ULL, 0, NULL}
52
+ , {"readdir" , 0ULL, 0, NULL}
53
+ , {"readdirplus", 0ULL, 0, NULL}
54
+ , {"fsstat" , 0ULL, 0, NULL}
55
+ , {"fsinfo" , 0ULL, 0, NULL}
56
+ , {"pathconf" , 0ULL, 0, NULL}
57
+ , {"commit" , 0ULL, 0, NULL}
58
+ ,
59
+
60
+ /* termination */
61
+ { "" , 0ULL, 0, NULL}
62
};
63
64
struct nfsd_procs nfsd_proc4_values[] = {
62
- { "null", 0ULL, 0 },
63
- { "read", 0ULL, 0 },
64
- { "write", 0ULL, 0 },
65
- { "commit", 0ULL, 0 },
66
- { "open", 0ULL, 0 },
67
- { "open_conf", 0ULL, 0 },
68
- { "open_noat", 0ULL, 0 },
69
- { "open_dgrd", 0ULL, 0 },
70
- { "close", 0ULL, 0 },
71
- { "setattr", 0ULL, 0 },
72
- { "fsinfo", 0ULL, 0 },
73
- { "renew", 0ULL, 0 },
74
- { "setclntid", 0ULL, 0 },
75
- { "confirm", 0ULL, 0 },
76
- { "lock", 0ULL, 0 },
77
- { "lockt", 0ULL, 0 },
78
- { "locku", 0ULL, 0 },
79
- { "access", 0ULL, 0 },
80
- { "getattr", 0ULL, 0 },
81
- { "lookup", 0ULL, 0 },
82
- { "lookup_root", 0ULL, 0 },
83
- { "remove", 0ULL, 0 },
84
- { "rename", 0ULL, 0 },
85
- { "link", 0ULL, 0 },
86
- { "symlink", 0ULL, 0 },
87
- { "create", 0ULL, 0 },
88
- { "pathconf", 0ULL, 0 },
89
- { "statfs", 0ULL, 0 },
90
- { "readlink", 0ULL, 0 },
91
- { "readdir", 0ULL, 0 },
92
- { "server_caps", 0ULL, 0 },
93
- { "delegreturn", 0ULL, 0 },
94
- { "getacl", 0ULL, 0 },
95
- { "setacl", 0ULL, 0 },
96
- { "fs_locations", 0ULL, 0 },
97
- { "rel_lkowner", 0ULL, 0 },
98
- { "secinfo", 0ULL, 0 },
99
- { "fsid_present", 0ULL, 0 },
100
-
101
- /* nfsv4.1 client ops */
102
- { "exchange_id", 0ULL, 0 },
103
- { "create_session", 0ULL, 0 },
104
- { "destroy_session", 0ULL, 0 },
105
- { "sequence", 0ULL, 0 },
106
- { "get_lease_time", 0ULL, 0 },
107
- { "reclaim_comp", 0ULL, 0 },
108
- { "layoutget", 0ULL, 0 },
109
- { "getdevinfo", 0ULL, 0 },
110
- { "layoutcommit", 0ULL, 0 },
111
- { "layoutreturn", 0ULL, 0 },
112
- { "secinfo_no", 0ULL, 0 },
113
- { "test_stateid", 0ULL, 0 },
114
- { "free_stateid", 0ULL, 0 },
115
- { "getdevicelist", 0ULL, 0 },
116
- { "bind_conn_to_ses", 0ULL, 0 },
117
- { "destroy_clientid", 0ULL, 0 },
118
-
119
- /* nfsv4.2 client ops */
120
- { "seek", 0ULL, 0 },
121
- { "allocate", 0ULL, 0 },
122
- { "deallocate", 0ULL, 0 },
123
- { "layoutstats", 0ULL, 0 },
124
- { "clone", 0ULL, 0 },
125
-
126
- /* termination */
127
- { "", 0ULL, 0 }
65
+ { "null" , 0ULL, 0, NULL}
66
+ , {"read" , 0ULL, 0, NULL}
67
+ , {"write" , 0ULL, 0, NULL}
68
+ , {"commit" , 0ULL, 0, NULL}
69
+ , {"open" , 0ULL, 0, NULL}
70
+ , {"open_conf" , 0ULL, 0, NULL}
71
+ , {"open_noat" , 0ULL, 0, NULL}
72
+ , {"open_dgrd" , 0ULL, 0, NULL}
73
+ , {"close" , 0ULL, 0, NULL}
74
+ , {"setattr" , 0ULL, 0, NULL}
75
+ , {"fsinfo" , 0ULL, 0, NULL}
76
+ , {"renew" , 0ULL, 0, NULL}
77
+ , {"setclntid" , 0ULL, 0, NULL}
78
+ , {"confirm" , 0ULL, 0, NULL}
79
+ , {"lock" , 0ULL, 0, NULL}
80
+ , {"lockt" , 0ULL, 0, NULL}
81
+ , {"locku" , 0ULL, 0, NULL}
82
+ , {"access" , 0ULL, 0, NULL}
83
+ , {"getattr" , 0ULL, 0, NULL}
84
+ , {"lookup" , 0ULL, 0, NULL}
85
+ , {"lookup_root" , 0ULL, 0, NULL}
86
+ , {"remove" , 0ULL, 0, NULL}
87
+ , {"rename" , 0ULL, 0, NULL}
88
+ , {"link" , 0ULL, 0, NULL}
89
+ , {"symlink" , 0ULL, 0, NULL}
90
+ , {"create" , 0ULL, 0, NULL}
91
+ , {"pathconf" , 0ULL, 0, NULL}
92
+ , {"statfs" , 0ULL, 0, NULL}
93
+ , {"readlink" , 0ULL, 0, NULL}
94
+ , {"readdir" , 0ULL, 0, NULL}
95
+ , {"server_caps" , 0ULL, 0, NULL}
96
+ , {"delegreturn" , 0ULL, 0, NULL}
97
+ , {"getacl" , 0ULL, 0, NULL}
98
+ , {"setacl" , 0ULL, 0, NULL}
99
+ , {"fs_locations" , 0ULL, 0, NULL}
100
+ , {"rel_lkowner" , 0ULL, 0, NULL}
101
+ , {"secinfo" , 0ULL, 0, NULL}
102
+ , {"fsid_present" , 0ULL, 0, NULL}
103
+ ,
104
+
105
+ /* nfsv4.1 client ops */
106
+ { "exchange_id" , 0ULL, 0, NULL}
107
+ , {"create_session" , 0ULL, 0, NULL}
108
+ , {"destroy_session" , 0ULL, 0, NULL}
109
+ , {"sequence" , 0ULL, 0, NULL}
110
+ , {"get_lease_time" , 0ULL, 0, NULL}
111
+ , {"reclaim_comp" , 0ULL, 0, NULL}
112
+ , {"layoutget" , 0ULL, 0, NULL}
113
+ , {"getdevinfo" , 0ULL, 0, NULL}
114
+ , {"layoutcommit" , 0ULL, 0, NULL}
115
+ , {"layoutreturn" , 0ULL, 0, NULL}
116
+ , {"secinfo_no" , 0ULL, 0, NULL}
117
+ , {"test_stateid" , 0ULL, 0, NULL}
118
+ , {"free_stateid" , 0ULL, 0, NULL}
119
+ , {"getdevicelist" , 0ULL, 0, NULL}
120
+ , {"bind_conn_to_ses", 0ULL, 0, NULL}
121
+ , {"destroy_clientid", 0ULL, 0, NULL}
122
+ ,
123
+
124
+ /* nfsv4.2 client ops */
125
+ { "seek" , 0ULL, 0, NULL}
126
+ , {"allocate" , 0ULL, 0, NULL}
127
+ , {"deallocate" , 0ULL, 0, NULL}
128
+ , {"layoutstats" , 0ULL, 0, NULL}
129
+ , {"clone" , 0ULL, 0, NULL}
130
+ ,
131
+
132
+ /* termination */
133
+ { "" , 0ULL, 0, NULL}
134
};
135
136
struct nfsd_procs nfsd4_ops_values[] = {
131
- { "unused_op0", 0ULL, 0},
132
- { "unused_op1", 0ULL, 0},
133
- { "future_op2", 0ULL, 0},
134
- { "access", 0ULL, 0},
135
- { "close", 0ULL, 0},
136
- { "commit", 0ULL, 0},
137
- { "create", 0ULL, 0},
138
- { "delegpurge", 0ULL, 0},
139
- { "delegreturn", 0ULL, 0},
140
- { "getattr", 0ULL, 0},
141
- { "getfh", 0ULL, 0},
142
- { "link", 0ULL, 0},
143
- { "lock", 0ULL, 0},
144
- { "lockt", 0ULL, 0},
145
- { "locku", 0ULL, 0},
146
- { "lookup", 0ULL, 0},
147
- { "lookup_root", 0ULL, 0},
148
- { "nverify", 0ULL, 0},
149
- { "open", 0ULL, 0},
150
- { "openattr", 0ULL, 0},
151
- { "open_confirm", 0ULL, 0},
152
- { "open_downgrade", 0ULL, 0},
153
- { "putfh", 0ULL, 0},
154
- { "putpubfh", 0ULL, 0},
155
- { "putrootfh", 0ULL, 0},
156
- { "read", 0ULL, 0},
157
- { "readdir", 0ULL, 0},
158
- { "readlink", 0ULL, 0},
159
- { "remove", 0ULL, 0},
160
- { "rename", 0ULL, 0},
161
- { "renew", 0ULL, 0},
162
- { "restorefh", 0ULL, 0},
163
- { "savefh", 0ULL, 0},
164
- { "secinfo", 0ULL, 0},
165
- { "setattr", 0ULL, 0},
166
- { "setclientid", 0ULL, 0},
167
- { "setclientid_confirm", 0ULL, 0},
168
- { "verify", 0ULL, 0},
169
- { "write", 0ULL, 0},
170
- { "release_lockowner", 0ULL, 0},
171
-
172
- /* nfs41 */
173
- { "backchannel_ctl", 0ULL, 0},
174
- { "bind_conn_to_session", 0ULL, 0},
175
- { "exchange_id", 0ULL, 0},
176
- { "create_session", 0ULL, 0},
177
- { "destroy_session", 0ULL, 0},
178
- { "free_stateid", 0ULL, 0},
179
- { "get_dir_delegation", 0ULL, 0},
180
- { "getdeviceinfo", 0ULL, 0},
181
- { "getdevicelist", 0ULL, 0},
182
- { "layoutcommit", 0ULL, 0},
183
- { "layoutget", 0ULL, 0},
184
- { "layoutreturn", 0ULL, 0},
185
- { "secinfo_no_name", 0ULL, 0},
186
- { "sequence", 0ULL, 0},
187
- { "set_ssv", 0ULL, 0},
188
- { "test_stateid", 0ULL, 0},
189
- { "want_delegation", 0ULL, 0},
190
- { "destroy_clientid", 0ULL, 0},
191
- { "reclaim_complete", 0ULL, 0},
192
-
193
- /* nfs42 */
194
- { "allocate", 0ULL, 0},
195
- { "copy", 0ULL, 0},
196
- { "copy_notify", 0ULL, 0},
197
- { "deallocate", 0ULL, 0},
198
- { "ioadvise", 0ULL, 0},
199
- { "layouterror", 0ULL, 0},
200
- { "layoutstats", 0ULL, 0},
201
- { "offload_cancel", 0ULL, 0},
202
- { "offload_status", 0ULL, 0},
203
- { "read_plus", 0ULL, 0},
204
- { "seek", 0ULL, 0},
205
- { "write_same", 0ULL, 0},
206
-
207
- /* termination */
208
- { "", 0ULL, 0 }
137
+ { "unused_op0" , 0ULL, 0, NULL}
138
+ , {"unused_op1" , 0ULL, 0, NULL}
139
+ , {"future_op2" , 0ULL, 0, NULL}
140
+ , {"access" , 0ULL, 0, NULL}
141
+ , {"close" , 0ULL, 0, NULL}
142
+ , {"commit" , 0ULL, 0, NULL}
143
+ , {"create" , 0ULL, 0, NULL}
144
+ , {"delegpurge" , 0ULL, 0, NULL}
145
+ , {"delegreturn" , 0ULL, 0, NULL}
146
+ , {"getattr" , 0ULL, 0, NULL}
147
+ , {"getfh" , 0ULL, 0, NULL}
148
+ , {"link" , 0ULL, 0, NULL}
149
+ , {"lock" , 0ULL, 0, NULL}
150
+ , {"lockt" , 0ULL, 0, NULL}
151
+ , {"locku" , 0ULL, 0, NULL}
152
+ , {"lookup" , 0ULL, 0, NULL}
153
+ , {"lookup_root" , 0ULL, 0, NULL}
154
+ , {"nverify" , 0ULL, 0, NULL}
155
+ , {"open" , 0ULL, 0, NULL}
156
+ , {"openattr" , 0ULL, 0, NULL}
157
+ , {"open_confirm" , 0ULL, 0, NULL}
158
+ , {"open_downgrade" , 0ULL, 0, NULL}
159
+ , {"putfh" , 0ULL, 0, NULL}
160
+ , {"putpubfh" , 0ULL, 0, NULL}
161
+ , {"putrootfh" , 0ULL, 0, NULL}
162
+ , {"read" , 0ULL, 0, NULL}
163
+ , {"readdir" , 0ULL, 0, NULL}
164
+ , {"readlink" , 0ULL, 0, NULL}
165
+ , {"remove" , 0ULL, 0, NULL}
166
+ , {"rename" , 0ULL, 0, NULL}
167
+ , {"renew" , 0ULL, 0, NULL}
168
+ , {"restorefh" , 0ULL, 0, NULL}
169
+ , {"savefh" , 0ULL, 0, NULL}
170
+ , {"secinfo" , 0ULL, 0, NULL}
171
+ , {"setattr" , 0ULL, 0, NULL}
172
+ , {"setclientid" , 0ULL, 0, NULL}
173
+ , {"setclientid_confirm" , 0ULL, 0, NULL}
174
+ , {"verify" , 0ULL, 0, NULL}
175
+ , {"write" , 0ULL, 0, NULL}
176
+ , {"release_lockowner" , 0ULL, 0, NULL}
177
+ ,
178
+
179
+ /* nfs41 */
180
+ { "backchannel_ctl" , 0ULL, 0, NULL}
181
+ , {"bind_conn_to_session", 0ULL, 0, NULL}
182
+ , {"exchange_id" , 0ULL, 0, NULL}
183
+ , {"create_session" , 0ULL, 0, NULL}
184
+ , {"destroy_session" , 0ULL, 0, NULL}
185
+ , {"free_stateid" , 0ULL, 0, NULL}
186
+ , {"get_dir_delegation" , 0ULL, 0, NULL}
187
+ , {"getdeviceinfo" , 0ULL, 0, NULL}
188
+ , {"getdevicelist" , 0ULL, 0, NULL}
189
+ , {"layoutcommit" , 0ULL, 0, NULL}
190
+ , {"layoutget" , 0ULL, 0, NULL}
191
+ , {"layoutreturn" , 0ULL, 0, NULL}
192
+ , {"secinfo_no_name" , 0ULL, 0, NULL}
193
+ , {"sequence" , 0ULL, 0, NULL}
194
+ , {"set_ssv" , 0ULL, 0, NULL}
195
+ , {"test_stateid" , 0ULL, 0, NULL}
196
+ , {"want_delegation" , 0ULL, 0, NULL}
197
+ , {"destroy_clientid" , 0ULL, 0, NULL}
198
+ , {"reclaim_complete" , 0ULL, 0, NULL}
199
+ ,
200
+
201
+ /* nfs42 */
202
+ { "allocate" , 0ULL, 0, NULL}
203
+ , {"copy" , 0ULL, 0, NULL}
204
+ , {"copy_notify" , 0ULL, 0, NULL}
205
+ , {"deallocate" , 0ULL, 0, NULL}
206
+ , {"ioadvise" , 0ULL, 0, NULL}
207
+ , {"layouterror" , 0ULL, 0, NULL}
208
+ , {"layoutstats" , 0ULL, 0, NULL}
209
+ , {"offload_cancel" , 0ULL, 0, NULL}
210
+ , {"offload_status" , 0ULL, 0, NULL}
211
+ , {"read_plus" , 0ULL, 0, NULL}
212
+ , {"seek" , 0ULL, 0, NULL}
213
+ , {"write_same" , 0ULL, 0, NULL}
214
+ ,
215
+
216
+ /* termination */
217
+ { "" , 0ULL, 0, NULL}
218
};
219
220
@@ -487,13 +496,15 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
496
}
497
}
498
490
- RRDSET *st;
491
-
499
// --------------------------------------------------------------------
500
501
if(do_rc == 2) {
495
- st = rrdset_find_bytype_localhost("nfsd", "readcache");
496
- if(!st) {
502
+ static RRDSET *st = NULL;
503
+ static RRDDIM *rd_hits = NULL,
504
+ *rd_misses = NULL,
505
+ *rd_nocache = NULL;
506
+
507
+ if(unlikely(!st)) {
508
st = rrdset_create_localhost(
509
"nfsd"
510
, "readcache"
@@ -509,23 +520,29 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
520
, RRDSET_TYPE_STACKED
521
);
522
512
- rrddim_add(st, "hits", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
513
- rrddim_add(st, "misses", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
514
- rrddim_add(st, "nocache", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
523
+ rd_hits = rrddim_add(st, "hits", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
524
+ rd_misses = rrddim_add(st, "misses", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
525
+ rd_nocache = rrddim_add(st, "nocache", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
526
}
527
else rrdset_next(st);
528
518
- rrddim_set(st, "hits", rc_hits);
519
- rrddim_set(st, "misses", rc_misses);
520
- rrddim_set(st, "nocache", rc_nocache);
529
+ rrddim_set_by_pointer(st, rd_hits, rc_hits);
530
+ rrddim_set_by_pointer(st, rd_misses, rc_misses);
531
+ rrddim_set_by_pointer(st, rd_nocache, rc_nocache);
532
rrdset_done(st);
533
}
534
535
// --------------------------------------------------------------------
536
537
if(do_fh == 2) {
527
- st = rrdset_find_bytype_localhost("nfsd", "filehandles");
528
- if(!st) {
538
+ static RRDSET *st = NULL;
539
+ static RRDDIM *rd_stale = NULL,
540
+ *rd_total_lookups = NULL,
541
+ *rd_anonymous_lookups = NULL,
542
+ *rd_dir_not_in_dcache = NULL,
543
+ *rd_non_dir_not_in_dcache = NULL;
544
+
545
+ if(unlikely(!st)) {
546
st = rrdset_create_localhost(
547
"nfsd"
548
, "filehandles"
@@ -542,27 +559,30 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
559
);
560
rrdset_flag_set(st, RRDSET_FLAG_DETAIL);
561
545
- rrddim_add(st, "stale", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
546
- rrddim_add(st, "total_lookups", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
547
- rrddim_add(st, "anonymous_lookups", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
548
- rrddim_add(st, "dir_not_in_dcache", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
549
- rrddim_add(st, "non_dir_not_in_dcache", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
562
+ rd_stale = rrddim_add(st, "stale", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
563
+ rd_total_lookups = rrddim_add(st, "total_lookups", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
564
+ rd_anonymous_lookups = rrddim_add(st, "anonymous_lookups", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
565
+ rd_dir_not_in_dcache = rrddim_add(st, "dir_not_in_dcache", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
566
+ rd_non_dir_not_in_dcache = rrddim_add(st, "non_dir_not_in_dcache", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
567
}
568
else rrdset_next(st);
569
553
- rrddim_set(st, "stale", fh_stale);
554
- rrddim_set(st, "total_lookups", fh_total_lookups);
555
- rrddim_set(st, "anonymous_lookups", fh_anonymous_lookups);
556
- rrddim_set(st, "dir_not_in_dcache", fh_dir_not_in_dcache);
557
- rrddim_set(st, "non_dir_not_in_dcache", fh_non_dir_not_in_dcache);
570
+ rrddim_set_by_pointer(st, rd_stale, fh_stale);
571
+ rrddim_set_by_pointer(st, rd_total_lookups, fh_total_lookups);
572
+ rrddim_set_by_pointer(st, rd_anonymous_lookups, fh_anonymous_lookups);
573
+ rrddim_set_by_pointer(st, rd_dir_not_in_dcache, fh_dir_not_in_dcache);
574
+ rrddim_set_by_pointer(st, rd_non_dir_not_in_dcache, fh_non_dir_not_in_dcache);
575
rrdset_done(st);
576
}
577
578
// --------------------------------------------------------------------
579
580
if(do_io == 2) {
564
- st = rrdset_find_bytype_localhost("nfsd", "io");
565
- if(!st) {
581
+ static RRDSET *st = NULL;
582
+ static RRDDIM *rd_read = NULL,
583
+ *rd_write = NULL;
584
+
585
+ if(unlikely(!st)) {
586
st = rrdset_create_localhost(
587
"nfsd"
588
, "io"
@@ -578,115 +598,148 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
598
, RRDSET_TYPE_AREA
599
);
600
581
- rrddim_add(st, "read", NULL, 1, 1000, RRD_ALGORITHM_INCREMENTAL);
582
- rrddim_add(st, "write", NULL, -1, 1000, RRD_ALGORITHM_INCREMENTAL);
601
+ rd_read = rrddim_add(st, "read", NULL, 1, 1000, RRD_ALGORITHM_INCREMENTAL);
602
+ rd_write = rrddim_add(st, "write", NULL, -1, 1000, RRD_ALGORITHM_INCREMENTAL);
603
}
604
else rrdset_next(st);
605
586
- rrddim_set(st, "read", io_read);
587
- rrddim_set(st, "write", io_write);
606
+ rrddim_set_by_pointer(st, rd_read, io_read);
607
+ rrddim_set_by_pointer(st, rd_write, io_write);
608
rrdset_done(st);
609
}
610
611
// --------------------------------------------------------------------
612
613
if(do_th == 2) {
594
- st = rrdset_find_bytype_localhost("nfsd", "threads");
595
- if(!st) {
596
- st = rrdset_create_localhost(
597
- "nfsd"
598
- , "threads"
599
- , NULL
600
- , "threads"
601
- , NULL
602
- , "NFS Server Threads"
603
- , "threads"
604
- , "proc"
605
- , "net/rpc/nfsd"
606
- , 5003
607
- , update_every
608
- , RRDSET_TYPE_LINE
609
- );
614
+ {
615
+ static RRDSET *st = NULL;
616
+ static RRDDIM *rd_threads = NULL;
617
+
618
+ if(unlikely(!st)) {
619
+ st = rrdset_create_localhost(
620
+ "nfsd"
621
+ , "threads"
622
+ , NULL
623
+ , "threads"
624
+ , NULL
625
+ , "NFS Server Threads"
626
+ , "threads"
627
+ , "proc"
628
+ , "net/rpc/nfsd"
629
+ , 5003
630
+ , update_every
631
+ , RRDSET_TYPE_LINE
632
+ );
633
+
634
+ rd_threads = rrddim_add(st, "threads", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
635
+ }
636
+ else rrdset_next(st);
637
611
- rrddim_add(st, "threads", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
638
+ rrddim_set_by_pointer(st, rd_threads, th_threads);
639
+ rrdset_done(st);
640
}
613
- else rrdset_next(st);
614
-
615
- rrddim_set(st, "threads", th_threads);
616
- rrdset_done(st);
641
618
- st = rrdset_find_bytype_localhost("nfsd", "threads_fullcnt");
619
- if(!st) {
620
- st = rrdset_create_localhost(
621
- "nfsd"
622
- , "threads_fullcnt"
623
- , NULL
624
- , "threads"
625
- , NULL
626
- , "NFS Server Threads Full Count"
627
- , "ops/s"
628
- , "proc"
629
- , "net/rpc/nfsd"
630
- , 5004
631
- , update_every
632
- , RRDSET_TYPE_LINE
633
- );
642
+ {
643
+ static RRDSET *st = NULL;
644
+ static RRDDIM *rd_full_count = NULL;
645
+
646
+ if(unlikely(!st)) {
647
+ st = rrdset_create_localhost(
648
+ "nfsd"
649
+ , "threads_fullcnt"
650
+ , NULL
651
+ , "threads"
652
+ , NULL
653
+ , "NFS Server Threads Full Count"
654
+ , "ops/s"
655
+ , "proc"
656
+ , "net/rpc/nfsd"
657
+ , 5004
658
+ , update_every
659
+ , RRDSET_TYPE_LINE
660
+ );
661
+
662
+ rd_full_count = rrddim_add(st, "full_count", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
663
+ }
664
+ else rrdset_next(st);
665
635
- rrddim_add(st, "full_count", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
666
+ rrddim_set_by_pointer(st, rd_full_count, th_fullcnt);
667
+ rrdset_done(st);
668
}
637
- else rrdset_next(st);
669
639
- rrddim_set(st, "full_count", th_fullcnt);
640
- rrdset_done(st);
641
-
642
- st = rrdset_find_bytype_localhost("nfsd", "threads_histogram");
643
- if(!st) {
644
- st = rrdset_create_localhost(
645
- "nfsd"
646
- , "threads_histogram"
647
- , NULL
648
- , "threads"
649
- , NULL
650
- , "NFS Server Threads Usage Histogram"
651
- , "percentage"
652
- , "proc"
653
- , "net/rpc/nfsd"
654
- , 5005
655
- , update_every
656
- , RRDSET_TYPE_LINE
657
- );
658
-
659
- rrddim_add(st, "0%-10%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
660
- rrddim_add(st, "10%-20%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
661
- rrddim_add(st, "20%-30%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
662
- rrddim_add(st, "30%-40%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
663
- rrddim_add(st, "40%-50%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
664
- rrddim_add(st, "50%-60%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
665
- rrddim_add(st, "60%-70%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
666
- rrddim_add(st, "70%-80%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
667
- rrddim_add(st, "80%-90%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
668
- rrddim_add(st, "90%-100%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
670
+ {
671
+ static RRDSET *st = NULL;
672
+ static RRDDIM *rd_th_hist10 = NULL,
673
+ *rd_th_hist20 = NULL,
674
+ *rd_th_hist30 = NULL,
675
+ *rd_th_hist40 = NULL,
676
+ *rd_th_hist50 = NULL,
677
+ *rd_th_hist60 = NULL,
678
+ *rd_th_hist70 = NULL,
679
+ *rd_th_hist80 = NULL,
680
+ *rd_th_hist90 = NULL,
681
+ *rd_th_hist100 = NULL;
682
+
683
+ if(unlikely(!st)) {
684
+ st = rrdset_create_localhost(
685
+ "nfsd"
686
+ , "threads_histogram"
687
+ , NULL
688
+ , "threads"
689
+ , NULL
690
+ , "NFS Server Threads Usage Histogram"
691
+ , "percentage"
692
+ , "proc"
693
+ , "net/rpc/nfsd"
694
+ , 5005
695
+ , update_every
696
+ , RRDSET_TYPE_LINE
697
+ );
698
+
699
+ rd_th_hist10 = rrddim_add(st, "0%-10%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
700
+ rd_th_hist20 = rrddim_add(st, "10%-20%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
701
+ rd_th_hist30 = rrddim_add(st, "20%-30%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
702
+ rd_th_hist40 = rrddim_add(st, "30%-40%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
703
+ rd_th_hist50 = rrddim_add(st, "40%-50%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
704
+ rd_th_hist60 = rrddim_add(st, "50%-60%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
705
+ rd_th_hist70 = rrddim_add(st, "60%-70%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
706
+ rd_th_hist80 = rrddim_add(st, "70%-80%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
707
+ rd_th_hist90 = rrddim_add(st, "80%-90%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
708
+ rd_th_hist100 = rrddim_add(st, "90%-100%", NULL, 1, 1000, RRD_ALGORITHM_ABSOLUTE);
709
+ }
710
+ else rrdset_next(st);
711
+
712
+ rrddim_set_by_pointer(st, rd_th_hist10, th_hist10);
713
+ rrddim_set_by_pointer(st, rd_th_hist20, th_hist20);
714
+ rrddim_set_by_pointer(st, rd_th_hist30, th_hist30);
715
+ rrddim_set_by_pointer(st, rd_th_hist40, th_hist40);
716
+ rrddim_set_by_pointer(st, rd_th_hist50, th_hist50);
717
+ rrddim_set_by_pointer(st, rd_th_hist60, th_hist60);
718
+ rrddim_set_by_pointer(st, rd_th_hist70, th_hist70);
719
+ rrddim_set_by_pointer(st, rd_th_hist80, th_hist80);
720
+ rrddim_set_by_pointer(st, rd_th_hist90, th_hist90);
721
+ rrddim_set_by_pointer(st, rd_th_hist100, th_hist100);
722
+ rrdset_done(st);
723
}
670
- else rrdset_next(st);
671
-
672
- rrddim_set(st, "0%-10%", th_hist10);
673
- rrddim_set(st, "10%-20%", th_hist20);
674
- rrddim_set(st, "20%-30%", th_hist30);
675
- rrddim_set(st, "30%-40%", th_hist40);
676
- rrddim_set(st, "40%-50%", th_hist50);
677
- rrddim_set(st, "50%-60%", th_hist60);
678
- rrddim_set(st, "60%-70%", th_hist70);
679
- rrddim_set(st, "70%-80%", th_hist80);
680
- rrddim_set(st, "80%-90%", th_hist90);
681
- rrddim_set(st, "90%-100%", th_hist100);
682
- rrdset_done(st);
724
}
725
726
// --------------------------------------------------------------------
727
728
if(do_ra == 2) {
688
- st = rrdset_find_bytype_localhost("nfsd", "readahead");
689
- if(!st) {
729
+ static RRDSET *st = NULL;
730
+ static RRDDIM *rd_ra_hist10 = NULL,
731
+ *rd_ra_hist20 = NULL,
732
+ *rd_ra_hist30 = NULL,
733
+ *rd_ra_hist40 = NULL,
734
+ *rd_ra_hist50 = NULL,
735
+ *rd_ra_hist60 = NULL,
736
+ *rd_ra_hist70 = NULL,
737
+ *rd_ra_hist80 = NULL,
738
+ *rd_ra_hist90 = NULL,
739
+ *rd_ra_hist100 = NULL,
740
+ *rd_ra_none = NULL;
741
+
742
+ if(unlikely(!st)) {
743
st = rrdset_create_localhost(
744
"nfsd"
745
, "readahead"
@@ -702,42 +755,45 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
755
, RRDSET_TYPE_STACKED
756
);
757
705
- rrddim_add(st, "10%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
706
- rrddim_add(st, "20%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
707
- rrddim_add(st, "30%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
708
- rrddim_add(st, "40%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
709
- rrddim_add(st, "50%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
710
- rrddim_add(st, "60%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
711
- rrddim_add(st, "70%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
712
- rrddim_add(st, "80%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
713
- rrddim_add(st, "90%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
714
- rrddim_add(st, "100%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
715
- rrddim_add(st, "misses", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
758
+ rd_ra_hist10 = rrddim_add(st, "10%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
759
+ rd_ra_hist20 = rrddim_add(st, "20%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
760
+ rd_ra_hist30 = rrddim_add(st, "30%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
761
+ rd_ra_hist40 = rrddim_add(st, "40%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
762
+ rd_ra_hist50 = rrddim_add(st, "50%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
763
+ rd_ra_hist60 = rrddim_add(st, "60%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
764
+ rd_ra_hist70 = rrddim_add(st, "70%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
765
+ rd_ra_hist80 = rrddim_add(st, "80%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
766
+ rd_ra_hist90 = rrddim_add(st, "90%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
767
+ rd_ra_hist100 = rrddim_add(st, "100%", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
768
+ rd_ra_none = rrddim_add(st, "misses", NULL, 1, 1, RRD_ALGORITHM_PCENT_OVER_DIFF_TOTAL);
769
}
770
else rrdset_next(st);
771
772
// ignore ra_size
720
- if(ra_size) {};
721
-
722
- rrddim_set(st, "10%", ra_hist10);
723
- rrddim_set(st, "20%", ra_hist20);
724
- rrddim_set(st, "30%", ra_hist30);
725
- rrddim_set(st, "40%", ra_hist40);
726
- rrddim_set(st, "50%", ra_hist50);
727
- rrddim_set(st, "60%", ra_hist60);
728
- rrddim_set(st, "70%", ra_hist70);
729
- rrddim_set(st, "80%", ra_hist80);
730
- rrddim_set(st, "90%", ra_hist90);
731
- rrddim_set(st, "100%", ra_hist100);
732
- rrddim_set(st, "misses", ra_none);
773
+ (void)ra_size;
774
+
775
+ rrddim_set_by_pointer(st, rd_ra_hist10, ra_hist10);
776
+ rrddim_set_by_pointer(st, rd_ra_hist20, ra_hist20);
777
+ rrddim_set_by_pointer(st, rd_ra_hist30, ra_hist30);
778
+ rrddim_set_by_pointer(st, rd_ra_hist40, ra_hist40);
779
+ rrddim_set_by_pointer(st, rd_ra_hist50, ra_hist50);
780
+ rrddim_set_by_pointer(st, rd_ra_hist60, ra_hist60);
781
+ rrddim_set_by_pointer(st, rd_ra_hist70, ra_hist70);
782
+ rrddim_set_by_pointer(st, rd_ra_hist80, ra_hist80);
783
+ rrddim_set_by_pointer(st, rd_ra_hist90, ra_hist90);
784
+ rrddim_set_by_pointer(st, rd_ra_hist100,ra_hist100);
785
+ rrddim_set_by_pointer(st, rd_ra_none, ra_none);
786
rrdset_done(st);
787
}
788
789
// --------------------------------------------------------------------
790
791
if(do_net == 2) {
739
- st = rrdset_find_bytype_localhost("nfsd", "net");
740
- if(!st) {
792
+ static RRDSET *st = NULL;
793
+ static RRDDIM *rd_udp = NULL,
794
+ *rd_tcp = NULL;
795
+
796
+ if(unlikely(!st)) {
797
st = rrdset_create_localhost(
798
"nfsd"
799
, "net"
@@ -754,25 +810,29 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
810
);
811
rrdset_flag_set(st, RRDSET_FLAG_DETAIL);
812
757
- rrddim_add(st, "udp", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
758
- rrddim_add(st, "tcp", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
813
+ rd_udp = rrddim_add(st, "udp", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
814
+ rd_tcp = rrddim_add(st, "tcp", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
815
}
816
else rrdset_next(st);
817
818
// ignore net_count, net_tcp_connections
763
- if(net_count) {};
764
- if(net_tcp_connections) {};
819
+ (void)net_count;
820
+ (void)net_tcp_connections;
821
766
- rrddim_set(st, "udp", net_udp_count);
767
- rrddim_set(st, "tcp", net_tcp_count);
822
+ rrddim_set_by_pointer(st, rd_udp, net_udp_count);
823
+ rrddim_set_by_pointer(st, rd_tcp, net_tcp_count);
824
rrdset_done(st);
825
}
826
827
// --------------------------------------------------------------------
828
829
if(do_rpc == 2) {
774
- st = rrdset_find_bytype_localhost("nfsd", "rpc");
775
- if(!st) {
830
+ static RRDSET *st = NULL;
831
+ static RRDDIM *rd_calls = NULL,
832
+ *rd_bad_format = NULL,
833
+ *rd_bad_auth = NULL;
834
+
835
+ if(unlikely(!st)) {
836
st = rrdset_create_localhost(
837
"nfsd"
838
, "rpc"
@@ -789,27 +849,26 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
849
);
850
rrdset_flag_set(st, RRDSET_FLAG_DETAIL);
851
792
- rrddim_add(st, "calls", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
793
- rrddim_add(st, "bad_format", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
794
- rrddim_add(st, "bad_auth", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
852
+ rd_calls = rrddim_add(st, "calls", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
853
+ rd_bad_format = rrddim_add(st, "bad_format", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
854
+ rd_bad_auth = rrddim_add(st, "bad_auth", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
855
}
856
else rrdset_next(st);
857
858
// ignore rpc_bad_client
799
- if(rpc_bad_client) {};
859
+ (void)rpc_bad_client;
860
801
- rrddim_set(st, "calls", rpc_calls);
802
- rrddim_set(st, "bad_format", rpc_bad_format);
803
- rrddim_set(st, "bad_auth", rpc_bad_auth);
861
+ rrddim_set_by_pointer(st, rd_calls, rpc_calls);
862
+ rrddim_set_by_pointer(st, rd_bad_format, rpc_bad_format);
863
+ rrddim_set_by_pointer(st, rd_bad_auth, rpc_bad_auth);
864
rrdset_done(st);
865
}
866
867
// --------------------------------------------------------------------
868
869
if(do_proc2 == 2) {
810
- unsigned int i;
811
- st = rrdset_find_bytype_localhost("nfsd", "proc2");
812
- if(!st) {
870
+ static RRDSET *st = NULL;
871
+ if(unlikely(!st)) {
872
st = rrdset_create_localhost(
873
"nfsd"
874
, "proc2"
@@ -824,14 +883,16 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
883
, update_every
884
, RRDSET_TYPE_STACKED
885
);
827
-
828
- for(i = 0; nfsd_proc2_values[i].present ; i++)
829
- rrddim_add(st, nfsd_proc2_values[i].name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
886
}
887
else rrdset_next(st);
888
833
- for(i = 0; nfsd_proc2_values[i].present ; i++)
834
- rrddim_set(st, nfsd_proc2_values[i].name, nfsd_proc2_values[i].value);
889
+ size_t i;
890
+ for(i = 0; nfsd_proc2_values[i].present ; i++) {
891
+ if(unlikely(!nfsd_proc2_values[i].rd))
892
+ nfsd_proc2_values[i].rd = rrddim_add(st, nfsd_proc2_values[i].name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
893
+
894
+ rrddim_set_by_pointer(st, nfsd_proc2_values[i].rd, nfsd_proc2_values[i].value);
895
+ }
896
897
rrdset_done(st);
898
}
@@ -839,9 +900,8 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
900
// --------------------------------------------------------------------
901
902
if(do_proc3 == 2) {
842
- unsigned int i;
843
- st = rrdset_find_bytype_localhost("nfsd", "proc3");
844
- if(!st) {
903
+ static RRDSET *st = NULL;
904
+ if(unlikely(!st)) {
905
st = rrdset_create_localhost(
906
"nfsd"
907
, "proc3"
@@ -856,14 +916,16 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
916
, update_every
917
, RRDSET_TYPE_STACKED
918
);
859
-
860
- for(i = 0; nfsd_proc3_values[i].present ; i++)
861
- rrddim_add(st, nfsd_proc3_values[i].name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
919
}
920
else rrdset_next(st);
921
865
- for(i = 0; nfsd_proc3_values[i].present ; i++)
866
- rrddim_set(st, nfsd_proc3_values[i].name, nfsd_proc3_values[i].value);
922
+ size_t i;
923
+ for(i = 0; nfsd_proc3_values[i].present ; i++) {
924
+ if(unlikely(!nfsd_proc3_values[i].rd))
925
+ nfsd_proc3_values[i].rd = rrddim_add(st, nfsd_proc3_values[i].name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
926
+
927
+ rrddim_set_by_pointer(st, nfsd_proc3_values[i].rd, nfsd_proc3_values[i].value);
928
+ }
929
930
rrdset_done(st);
931
}
@@ -871,9 +933,8 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
933
// --------------------------------------------------------------------
934
935
if(do_proc4 == 2) {
874
- unsigned int i;
875
- st = rrdset_find_bytype_localhost("nfsd", "proc4");
876
- if(!st) {
936
+ static RRDSET *st = NULL;
937
+ if(unlikely(!st)) {
938
st = rrdset_create_localhost(
939
"nfsd"
940
, "proc4"
@@ -888,14 +949,16 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
949
, update_every
950
, RRDSET_TYPE_STACKED
951
);
891
-
892
- for(i = 0; nfsd_proc4_values[i].present ; i++)
893
- rrddim_add(st, nfsd_proc4_values[i].name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
952
}
953
else rrdset_next(st);
954
897
- for(i = 0; nfsd_proc4_values[i].present ; i++)
898
- rrddim_set(st, nfsd_proc4_values[i].name, nfsd_proc4_values[i].value);
955
+ size_t i;
956
+ for(i = 0; nfsd_proc4_values[i].present ; i++) {
957
+ if(unlikely(!nfsd_proc4_values[i].rd))
958
+ nfsd_proc4_values[i].rd = rrddim_add(st, nfsd_proc4_values[i].name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
959
+
960
+ rrddim_set_by_pointer(st, nfsd_proc4_values[i].rd, nfsd_proc4_values[i].value);
961
+ }
962
963
rrdset_done(st);
964
}
@@ -903,9 +966,8 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
966
// --------------------------------------------------------------------
967
968
if(do_proc4ops == 2) {
906
- unsigned int i;
907
- st = rrdset_find_bytype_localhost("nfsd", "proc4ops");
908
- if(!st) {
969
+ static RRDSET *st = NULL;
970
+ if(unlikely(!st)) {
971
st = rrdset_create_localhost(
972
"nfsd"
973
, "proc4ops"
@@ -920,14 +982,16 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
982
, update_every
983
, RRDSET_TYPE_STACKED
984
);
923
-
924
- for(i = 0; nfsd4_ops_values[i].present ; i++)
925
- rrddim_add(st, nfsd4_ops_values[i].name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
985
}
986
else rrdset_next(st);
987
929
- for(i = 0; nfsd4_ops_values[i].present ; i++)
930
- rrddim_set(st, nfsd4_ops_values[i].name, nfsd4_ops_values[i].value);
988
+ size_t i;
989
+ for(i = 0; nfsd4_ops_values[i].present ; i++) {
990
+ if(unlikely(!nfsd4_ops_values[i].rd))
991
+ nfsd4_ops_values[i].rd = rrddim_add(st, nfsd4_ops_values[i].name, NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
992
+
993
+ rrddim_set_by_pointer(st, nfsd4_ops_values[i].rd, nfsd4_ops_values[i].value);
994
+ }
995
996
rrdset_done(st);
997
}
src/proc_net_stat_conntrack.c
+59
-34
@@ -129,6 +129,8 @@ int do_proc_net_stat_conntrack(int update_every, usec_t dt) {
129
130
if(do_sockets) {
131
static RRDSET *st = NULL;
132
+ static RRDDIM *rd_connections = NULL;
133
+
134
if(unlikely(!st)) {
135
st = rrdset_create_localhost(
136
RRD_TYPE_NET_STAT_NETFILTER
@@ -145,11 +147,11 @@ int do_proc_net_stat_conntrack(int update_every, usec_t dt) {
147
, RRDSET_TYPE_LINE
148
);
149
148
- rrddim_add(st, "connections", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
150
+ rd_connections = rrddim_add(st, "connections", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
151
}
152
else rrdset_next(st);
153
152
- rrddim_set(st, "connections", aentries);
154
+ rrddim_set_by_pointer(st, rd_connections, aentries);
155
rrdset_done(st);
156
}
157
@@ -157,6 +159,11 @@ int do_proc_net_stat_conntrack(int update_every, usec_t dt) {
159
160
if(do_new) {
161
static RRDSET *st = NULL;
162
+ static RRDDIM
163
+ *rd_new = NULL,
164
+ *rd_ignore = NULL,
165
+ *rd_invalid = NULL;
166
+
167
if(unlikely(!st)) {
168
st = rrdset_create_localhost(
169
RRD_TYPE_NET_STAT_NETFILTER
@@ -173,15 +180,15 @@ int do_proc_net_stat_conntrack(int update_every, usec_t dt) {
180
, RRDSET_TYPE_LINE
181
);
182
176
- rrddim_add(st, "new", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
177
- rrddim_add(st, "ignore", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
178
- rrddim_add(st, "invalid", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
183
+ rd_new = rrddim_add(st, "new", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
184
+ rd_ignore = rrddim_add(st, "ignore", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
185
+ rd_invalid = rrddim_add(st, "invalid", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
186
}
187
else rrdset_next(st);
188
182
- rrddim_set(st, "new", anew);
183
- rrddim_set(st, "ignore", aignore);
184
- rrddim_set(st, "invalid", ainvalid);
189
+ rrddim_set_by_pointer(st, rd_new, anew);
190
+ rrddim_set_by_pointer(st, rd_ignore, aignore);
191
+ rrddim_set_by_pointer(st, rd_invalid, ainvalid);
192
rrdset_done(st);
193
}
194
@@ -189,6 +196,11 @@ int do_proc_net_stat_conntrack(int update_every, usec_t dt) {
196
197
if(do_changes) {
198
static RRDSET *st = NULL;
199
+ static RRDDIM
200
+ *rd_inserted = NULL,
201
+ *rd_deleted = NULL,
202
+ *rd_delete_list = NULL;
203
+
204
if(unlikely(!st)) {
205
st = rrdset_create_localhost(
206
RRD_TYPE_NET_STAT_NETFILTER
@@ -206,15 +218,15 @@ int do_proc_net_stat_conntrack(int update_every, usec_t dt) {
218
);
219
rrdset_flag_set(st, RRDSET_FLAG_DETAIL);
220
209
- rrddim_add(st, "inserted", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
210
- rrddim_add(st, "deleted", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
211
- rrddim_add(st, "delete_list", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
221
+ rd_inserted = rrddim_add(st, "inserted", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
222
+ rd_deleted = rrddim_add(st, "deleted", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
223
+ rd_delete_list = rrddim_add(st, "delete_list", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
224
}
225
else rrdset_next(st);
226
215
- rrddim_set(st, "inserted", ainsert);
216
- rrddim_set(st, "deleted", adelete);
217
- rrddim_set(st, "delete_list", adelete_list);
227
+ rrddim_set_by_pointer(st, rd_inserted, ainsert);
228
+ rrddim_set_by_pointer(st, rd_deleted, adelete);
229
+ rrddim_set_by_pointer(st, rd_delete_list, adelete_list);
230
rrdset_done(st);
231
}
232
@@ -222,6 +234,10 @@ int do_proc_net_stat_conntrack(int update_every, usec_t dt) {
234
235
if(do_expect) {
236
static RRDSET *st = NULL;
237
+ static RRDDIM *rd_created = NULL,
238
+ *rd_deleted = NULL,
239
+ *rd_new = NULL;
240
+
241
if(unlikely(!st)) {
242
st = rrdset_create_localhost(
243
RRD_TYPE_NET_STAT_NETFILTER
@@ -239,15 +255,15 @@ int do_proc_net_stat_conntrack(int update_every, usec_t dt) {
255
);
256
rrdset_flag_set(st, RRDSET_FLAG_DETAIL);
257
242
- rrddim_add(st, "created", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
243
- rrddim_add(st, "deleted", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
244
- rrddim_add(st, "new", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
258
+ rd_created = rrddim_add(st, "created", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
259
+ rd_deleted = rrddim_add(st, "deleted", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
260
+ rd_new = rrddim_add(st, "new", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
261
}
262
else rrdset_next(st);
263
248
- rrddim_set(st, "created", aexpect_create);
249
- rrddim_set(st, "deleted", aexpect_delete);
250
- rrddim_set(st, "new", aexpect_new);
264
+ rrddim_set_by_pointer(st, rd_created, aexpect_create);
265
+ rrddim_set_by_pointer(st, rd_deleted, aexpect_delete);
266
+ rrddim_set_by_pointer(st, rd_new, aexpect_new);
267
rrdset_done(st);
268
}
269
@@ -255,6 +271,10 @@ int do_proc_net_stat_conntrack(int update_every, usec_t dt) {
271
272
if(do_search) {
273
static RRDSET *st = NULL;
274
+ static RRDDIM *rd_searched = NULL,
275
+ *rd_restarted = NULL,
276
+ *rd_found = NULL;
277
+
278
if(unlikely(!st)) {
279
st = rrdset_create_localhost(
280
RRD_TYPE_NET_STAT_NETFILTER
@@ -272,15 +292,15 @@ int do_proc_net_stat_conntrack(int update_every, usec_t dt) {
292
);
293
rrdset_flag_set(st, RRDSET_FLAG_DETAIL);
294
275
- rrddim_add(st, "searched", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
276
- rrddim_add(st, "restarted", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
277
- rrddim_add(st, "found", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
295
+ rd_searched = rrddim_add(st, "searched", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
296
+ rd_restarted = rrddim_add(st, "restarted", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
297
+ rd_found = rrddim_add(st, "found", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
298
}
299
else rrdset_next(st);
300
281
- rrddim_set(st, "searched", asearched);
282
- rrddim_set(st, "restarted", asearch_restart);
283
- rrddim_set(st, "found", afound);
301
+ rrddim_set_by_pointer(st, rd_searched, asearched);
302
+ rrddim_set_by_pointer(st, rd_restarted, asearch_restart);
303
+ rrddim_set_by_pointer(st, rd_found, afound);
304
rrdset_done(st);
305
}
306
@@ -288,6 +308,11 @@ int do_proc_net_stat_conntrack(int update_every, usec_t dt) {
308
309
if(do_errors) {
310
static RRDSET *st = NULL;
311
+ static RRDDIM *rd_icmp_error = NULL,
312
+ *rd_insert_failed = NULL,
313
+ *rd_drop = NULL,
314
+ *rd_early_drop = NULL;
315
+
316
if(unlikely(!st)) {
317
st = rrdset_create_localhost(
318
RRD_TYPE_NET_STAT_NETFILTER
@@ -305,17 +330,17 @@ int do_proc_net_stat_conntrack(int update_every, usec_t dt) {
330
);
331
rrdset_flag_set(st, RRDSET_FLAG_DETAIL);
332
308
- rrddim_add(st, "icmp_error", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
309
- rrddim_add(st, "insert_failed", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
310
- rrddim_add(st, "drop", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
311
- rrddim_add(st, "early_drop", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
333
+ rd_icmp_error = rrddim_add(st, "icmp_error", NULL, 1, 1, RRD_ALGORITHM_INCREMENTAL);
334
+ rd_insert_failed = rrddim_add(st, "insert_failed", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
335
+ rd_drop = rrddim_add(st, "drop", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
336
+ rd_early_drop = rrddim_add(st, "early_drop", NULL, -1, 1, RRD_ALGORITHM_INCREMENTAL);
337
}
338
else rrdset_next(st);
339
315
- rrddim_set(st, "icmp_error", aicmp_error);
316
- rrddim_set(st, "insert_failed", ainsert_failed);
317
- rrddim_set(st, "drop", adrop);
318
- rrddim_set(st, "early_drop", aearly_drop);
340
+ rrddim_set_by_pointer(st, rd_icmp_error, aicmp_error);
341
+ rrddim_set_by_pointer(st, rd_insert_failed, ainsert_failed);
342
+ rrddim_set_by_pointer(st, rd_drop, adrop);
343
+ rrddim_set_by_pointer(st, rd_early_drop, aearly_drop);
344
rrdset_done(st);
345
}
346