minor nfsd optimizations
Costa Tsaousis (ktsaou) committed
Dec 17, 2017 at 21:00 UTC
00d81c4ba0372b33692f4c6b94ec1176457f0a5b
1 file changed
+26
-24
src/proc_net_rpc_nfsd.c
+26
-24
@@ -224,30 +224,32 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
224
static int do_rc = -1, do_fh = -1, do_io = -1, do_th = -1, do_ra = -1, do_net = -1, do_rpc = -1, do_proc2 = -1, do_proc3 = -1, do_proc4 = -1, do_proc4ops = -1;
225
static int ra_warning = 0, th_warning = 0, proc2_warning = 0, proc3_warning = 0, proc4_warning = 0, proc4ops_warning = 0;
226
227
- if(!ff) {
227
+ if(unlikely(!ff)) {
228
char filename[FILENAME_MAX + 1];
229
snprintfz(filename, FILENAME_MAX, "%s%s", netdata_configured_host_prefix, "/proc/net/rpc/nfsd");
230
ff = procfile_open(config_get("plugin:proc:/proc/net/rpc/nfsd", "filename to monitor", filename), " \t", PROCFILE_FLAG_DEFAULT);
231
+ if(unlikely(!ff)) return 1;
232
}
232
- if(!ff) return 1;
233
234
ff = procfile_readall(ff);
235
- if(!ff) return 0; // we return 0, so that we will retry to open it next time
236
-
237
- if(do_rc == -1) do_rc = config_get_boolean("plugin:proc:/proc/net/rpc/nfsd", "read cache", 1);
238
- if(do_fh == -1) do_fh = config_get_boolean("plugin:proc:/proc/net/rpc/nfsd", "file handles", 1);
239
- if(do_io == -1) do_io = config_get_boolean("plugin:proc:/proc/net/rpc/nfsd", "I/O", 1);
240
- if(do_th == -1) do_th = config_get_boolean("plugin:proc:/proc/net/rpc/nfsd", "threads", 1);
241
- if(do_ra == -1) do_ra = config_get_boolean("plugin:proc:/proc/net/rpc/nfsd", "read ahead", 1);
242
- if(do_net == -1) do_net = config_get_boolean("plugin:proc:/proc/net/rpc/nfsd", "network", 1);
243
- if(do_rpc == -1) do_rpc = config_get_boolean("plugin:proc:/proc/net/rpc/nfsd", "rpc", 1);
244
- if(do_proc2 == -1) do_proc2 = config_get_boolean("plugin:proc:/proc/net/rpc/nfsd", "NFS v2 procedures", 1);
245
- if(do_proc3 == -1) do_proc3 = config_get_boolean("plugin:proc:/proc/net/rpc/nfsd", "NFS v3 procedures", 1);
246
- if(do_proc4 == -1) do_proc4 = config_get_boolean("plugin:proc:/proc/net/rpc/nfsd", "NFS v4 procedures", 1);
247
- if(do_proc4ops == -1) do_proc4ops = config_get_boolean("plugin:proc:/proc/net/rpc/nfsd", "NFS v4 operations", 1);
235
+ if(unlikely(!ff)) return 0; // we return 0, so that we will retry to open it next time
236
+
237
+ if(unlikely(do_rc == -1)) {
238
+ do_rc = config_get_boolean("plugin:proc:/proc/net/rpc/nfsd", "read cache", 1);
239
+ do_fh = config_get_boolean("plugin:proc:/proc/net/rpc/nfsd", "file handles", 1);
240
+ do_io = config_get_boolean("plugin:proc:/proc/net/rpc/nfsd", "I/O", 1);
241
+ do_th = config_get_boolean("plugin:proc:/proc/net/rpc/nfsd", "threads", 1);
242
+ do_ra = config_get_boolean("plugin:proc:/proc/net/rpc/nfsd", "read ahead", 1);
243
+ do_net = config_get_boolean("plugin:proc:/proc/net/rpc/nfsd", "network", 1);
244
+ do_rpc = config_get_boolean("plugin:proc:/proc/net/rpc/nfsd", "rpc", 1);
245
+ do_proc2 = config_get_boolean("plugin:proc:/proc/net/rpc/nfsd", "NFS v2 procedures", 1);
246
+ do_proc3 = config_get_boolean("plugin:proc:/proc/net/rpc/nfsd", "NFS v3 procedures", 1);
247
+ do_proc4 = config_get_boolean("plugin:proc:/proc/net/rpc/nfsd", "NFS v4 procedures", 1);
248
+ do_proc4ops = config_get_boolean("plugin:proc:/proc/net/rpc/nfsd", "NFS v4 operations", 1);
249
+ }
250
251
// if they are enabled, reset them to 1
250
- // later we do them =2 to avoid doing strcmp() for all lines
252
+ // later we do them = 2 to avoid doing strcmp() for all lines
253
if(do_rc) do_rc = 1;
254
if(do_fh) do_fh = 1;
255
if(do_io) do_io = 1;
@@ -273,12 +275,12 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
275
276
for(l = 0; l < lines ;l++) {
277
size_t words = procfile_linewords(ff, l);
276
- if(!words) continue;
278
+ if(unlikely(!words)) continue;
279
280
type = procfile_lineword(ff, l, 0);
281
282
if(do_rc == 1 && strcmp(type, "rc") == 0) {
281
- if(words < 4) {
283
+ if(unlikely(words < 4)) {
284
error("%s line of /proc/net/rpc/nfsd has %zu words, expected %d", type, words, 4);
285
continue;
286
}
@@ -292,7 +294,7 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
294
else do_rc = 2;
295
}
296
else if(do_fh == 1 && strcmp(type, "fh") == 0) {
295
- if(words < 6) {
297
+ if(unlikely(words < 6)) {
298
error("%s line of /proc/net/rpc/nfsd has %zu words, expected %d", type, words, 6);
299
continue;
300
}
@@ -308,7 +310,7 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
310
else do_fh = 2;
311
}
312
else if(do_io == 1 && strcmp(type, "io") == 0) {
311
- if(words < 3) {
313
+ if(unlikely(words < 3)) {
314
error("%s line of /proc/net/rpc/nfsd has %zu words, expected %d", type, words, 3);
315
continue;
316
}
@@ -321,7 +323,7 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
323
else do_io = 2;
324
}
325
else if(do_th == 1 && strcmp(type, "th") == 0) {
324
- if(words < 13) {
326
+ if(unlikely(words < 13)) {
327
error("%s line of /proc/net/rpc/nfsd has %zu words, expected %d", type, words, 13);
328
continue;
329
}
@@ -352,7 +354,7 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
354
else do_th = 2;
355
}
356
else if(do_ra == 1 && strcmp(type, "ra") == 0) {
355
- if(words < 13) {
357
+ if(unlikely(words < 13)) {
358
error("%s line of /proc/net/rpc/nfsd has %zu words, expected %d", type, words, 13);
359
continue;
360
}
@@ -381,7 +383,7 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
383
else do_ra = 2;
384
}
385
else if(do_net == 1 && strcmp(type, "net") == 0) {
384
- if(words < 5) {
386
+ if(unlikely(words < 5)) {
387
error("%s line of /proc/net/rpc/nfsd has %zu words, expected %d", type, words, 5);
388
continue;
389
}
@@ -396,7 +398,7 @@ int do_proc_net_rpc_nfsd(int update_every, usec_t dt) {
398
else do_net = 2;
399
}
400
else if(do_rpc == 1 && strcmp(type, "rpc") == 0) {
399
- if(words < 6) {
401
+ if(unlikely(words < 6)) {
402
error("%s line of /proc/net/rpc/nfsd has %zu words, expected %d", type, words, 6);
403
continue;
404
}