#include "collectd.h"
-#include "common.h"
#include "plugin.h"
+#include "utils/common/common.h"
#if HAVE_LIBTASKSTATS
+#include "utils/taskstats/taskstats.h"
#include "utils_complain.h"
-#include "utils_taskstats.h"
#endif
/* Include header files for the mach system, if they exist.. */
typedef struct procstat_entry_s {
unsigned long id;
- unsigned long age;
+ unsigned char age;
derive_t vmem_minflt_counter;
derive_t vmem_majflt_counter;
entry->cpu_system_counter);
#if HAVE_LIBTASKSTATS
- ps_update_delay(ps, pse, entry);
+ if (entry->has_delay)
+ ps_update_delay(ps, pse, entry);
#endif
}
}
pse_prev = NULL;
pse = ps->instances;
while (pse != NULL) {
- if (pse->age > 10) {
+ if (pse->age > 0) {
DEBUG("Removing this procstat entry cause it's too old: "
"id = %lu; name = %s;",
pse->id, ps->name);
pse = pse_prev->next;
}
} else {
- pse->age++;
+ pse->age = 1;
pse_prev = pse;
pse = pse->next;
}
gauge_t const delay_factor = 1000000000.0;
struct {
- char *type_instance;
+ const char *type_instance;
gauge_t rate_ns;
} delay_metrics[] = {
{"delay-cpu", ps->delay_cpu},
sstrncpy(vl.type, "delay_rate", sizeof(vl.type));
sstrncpy(vl.type_instance, delay_metrics[i].type_instance,
sizeof(vl.type_instance));
- vl.values[0].gauge = delay_metrics[i].rate_ns * delay_factor;
+ vl.values[0].gauge = delay_metrics[i].rate_ns / delay_factor;
vl.values_len = 1;
plugin_dispatch_values(&vl);
}
tpid = ent->d_name;
- if (snprintf(filename, sizeof(filename), "/proc/%li/task/%s/status", ps->id,
- tpid) >= sizeof(filename)) {
+ int r = snprintf(filename, sizeof(filename), "/proc/%li/task/%s/status",
+ ps->id, tpid);
+ if ((size_t)r >= sizeof(filename)) {
DEBUG("Filename too long: `%s'", filename);
continue;
}
return NULL;
}
- info.pr_psargs[sizeof(info.pr_psargs) - 1] = 0;
sstrncpy(buffer, info.pr_psargs, buffer_size);
return buffer;