X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fvmem.c;h=98c4c2a0592f7c75bcfaf61330ee6f24e95f0ea7;hb=c76419c0cf983f1ecd3d36aa236cc4e3f9cff733;hp=c3ccbe624c9d794a00fb4e1a9495fb05e9c870c8;hpb=9817e7298bd6c364fa17347327af54adf048bd21;p=collectd.git diff --git a/src/vmem.c b/src/vmem.c index c3ccbe62..98c4c2a0 100644 --- a/src/vmem.c +++ b/src/vmem.c @@ -25,6 +25,7 @@ **/ #include "collectd.h" + #include "common.h" #include "plugin.h" @@ -50,7 +51,6 @@ static void submit (const char *plugin_instance, const char *type, vl.values = values; vl.values_len = values_len; - sstrncpy (vl.host, hostname_g, sizeof (vl.host)); sstrncpy (vl.plugin, "vmem", sizeof (vl.plugin)); if (plugin_instance != NULL) sstrncpy (vl.plugin_instance, plugin_instance, sizeof (vl.plugin_instance)); @@ -64,12 +64,13 @@ static void submit (const char *plugin_instance, const char *type, static void submit_two (const char *plugin_instance, const char *type, const char *type_instance, derive_t c0, derive_t c1) { - value_t values[2]; - - values[0].derive = c0; - values[1].derive = c1; + value_t values[] = { + { .derive = c0 }, + { .derive = c1 }, + }; - submit (plugin_instance, type, type_instance, values, 2); + submit (plugin_instance, type, type_instance, + values, STATIC_ARRAY_SIZE (values)); } /* void submit_one */ static void submit_one (const char *plugin_instance, const char *type, @@ -147,7 +148,7 @@ static int vmem_read (void) if (fields[1] == endptr) continue; - /* + /* * Number of pages * * The total number of {inst} pages, e. g dirty pages. @@ -155,11 +156,19 @@ static int vmem_read (void) if (strncmp ("nr_", key, strlen ("nr_")) == 0) { char *inst = key + strlen ("nr_"); - value_t value = { .gauge = gauge }; - submit_one (NULL, "vmpage_number", inst, value); + if (strcmp(inst, "dirtied") == 0 || strcmp(inst, "written") == 0) + { + value_t value = { .derive = counter }; + submit_one (NULL, "vmpage_action", inst, value); + } + else + { + value_t value = { .gauge = gauge }; + submit_one (NULL, "vmpage_number", inst, value); + } } - /* + /* * Page in and page outs. For memory and swap. */ else if (strcmp ("pgpgin", key) == 0) @@ -219,6 +228,19 @@ static int vmem_read (void) value_t value = { .derive = counter }; submit_one (inst, "vmpage_action", "refill", value); } + else if (strncmp ("pgsteal_kswapd_", key, strlen ("pgsteal_kswapd_")) == 0) + { + char *inst = key + strlen ("pgsteal_kswapd_"); + value_t value = { .derive = counter }; + submit_one (inst, "vmpage_action", "steal_kswapd", value); + } + else if (strncmp ("pgsteal_direct_", key, strlen ("pgsteal_direct_")) == 0) + { + char *inst = key + strlen ("pgsteal_direct_"); + value_t value = { .derive = counter }; + submit_one (inst, "vmpage_action", "steal_direct", value); + } + /* For backwards compatibility (somewhen before 4.2.3) */ else if (strncmp ("pgsteal_", key, strlen ("pgsteal_")) == 0) { char *inst = key + strlen ("pgsteal_");