/**
* collectd - src/cpu.c
- * Copyright (C) 2005-2009 Florian octo Forster
+ * Copyright (C) 2005-2010 Florian octo Forster
* Copyright (C) 2008 Oleg King
* Copyright (C) 2009 Simon Kuhnle
* Copyright (C) 2009 Manuel Sanmartin
DEBUG ("host_processors returned %i %s", (int) cpu_list_len, cpu_list_len == 1 ? "processor" : "processors");
INFO ("cpu plugin: Found %i processor%s.", (int) cpu_list_len, cpu_list_len == 1 ? "" : "s");
- cpu_temp_retry_max = 86400 / CDTIME_T_TO_TIME_T (interval_g);
+ cpu_temp_retry_max = 86400 / CDTIME_T_TO_TIME_T (plugin_get_interval ());
/* #endif PROCESSOR_CPU_LOAD_INFO */
#elif defined(HAVE_LIBKSTAT)
return (0);
} /* int init */
-static void submit (int cpu_num, const char *type_instance, counter_t value)
+static void submit (int cpu_num, const char *type_instance, derive_t value)
{
value_t values[1];
value_list_t vl = VALUE_LIST_INIT;
- values[0].counter = value;
+ values[0].derive = value;
vl.values = values;
vl.values_len = 1;
kern_return_t status;
#if PROCESSOR_CPU_LOAD_INFO
+ derive_t cpu_active;
processor_cpu_load_info_data_t cpu_info;
mach_msg_type_number_t cpu_info_len;
#endif
continue;
}
- submit (cpu, "user", (counter_t) cpu_info.cpu_ticks[CPU_STATE_USER]);
- submit (cpu, "nice", (counter_t) cpu_info.cpu_ticks[CPU_STATE_NICE]);
- submit (cpu, "system", (counter_t) cpu_info.cpu_ticks[CPU_STATE_SYSTEM]);
- submit (cpu, "idle", (counter_t) cpu_info.cpu_ticks[CPU_STATE_IDLE]);
+ submit (cpu, "user", (derive_t) cpu_info.cpu_ticks[CPU_STATE_USER]);
+ submit (cpu, "nice", (derive_t) cpu_info.cpu_ticks[CPU_STATE_NICE]);
+ submit (cpu, "system", (derive_t) cpu_info.cpu_ticks[CPU_STATE_SYSTEM]);
+ submit (cpu, "idle", (derive_t) cpu_info.cpu_ticks[CPU_STATE_IDLE]);
+ cpu_active = (derive_t) (cpu_info.cpu_ticks[CPU_STATE_USER] +
+ cpu_info.cpu_ticks[CPU_STATE_NICE] +
+ cpu_info.cpu_ticks[CPU_STATE_SYSTEM]);
+ submit (cpu, "active", cpu_active);
+
#endif /* PROCESSOR_CPU_LOAD_INFO */
#if PROCESSOR_TEMPERATURE
/*
cpu_temp_retry_counter = 0;
cpu_temp_retry_step = 1;
-
- DEBUG ("cpu_temp = %i", (int) cpu_temp);
#endif /* PROCESSOR_TEMPERATURE */
}
/* #endif PROCESSOR_CPU_LOAD_INFO */
#elif defined(KERNEL_LINUX)
int cpu;
- counter_t user, nice, syst, idle;
- counter_t wait, intr, sitr; /* sitr == soft interrupt */
+ derive_t cpu_active;
+ derive_t user, nice, syst, idle;
+ derive_t wait, intr, sitr; /* sitr == soft interrupt */
FILE *fh;
char buf[1024];
submit (cpu, "nice", nice);
submit (cpu, "system", syst);
submit (cpu, "idle", idle);
+ cpu_active = user + nice + syst;
if (numfields >= 8)
{
submit (cpu, "wait", wait);
submit (cpu, "interrupt", intr);
submit (cpu, "softirq", sitr);
+
+ cpu_active += wait + intr + sitr;
if (numfields >= 9)
+ cpu_active += (derive_t) atoll (fields[8]);
submit (cpu, "steal", atoll (fields[8]));
}
+ submit (cpu, "active", cpu_active);
}
fclose (fh);
#elif defined(HAVE_LIBKSTAT)
int cpu;
- counter_t user, syst, idle, wait;
+ derive_t user, syst, idle, wait;
static cpu_stat_t cs;
if (kc == NULL)
if (kstat_read (kc, ksp[cpu], &cs) == -1)
continue; /* error message? */
- idle = (counter_t) cs.cpu_sysinfo.cpu[CPU_IDLE];
- user = (counter_t) cs.cpu_sysinfo.cpu[CPU_USER];
- syst = (counter_t) cs.cpu_sysinfo.cpu[CPU_KERNEL];
- wait = (counter_t) cs.cpu_sysinfo.cpu[CPU_WAIT];
+ idle = (derive_t) cs.cpu_sysinfo.cpu[CPU_IDLE];
+ user = (derive_t) cs.cpu_sysinfo.cpu[CPU_USER];
+ syst = (derive_t) cs.cpu_sysinfo.cpu[CPU_KERNEL];
+ wait = (derive_t) cs.cpu_sysinfo.cpu[CPU_WAIT];
submit (ksp[cpu]->ks_instance, "user", user);
submit (ksp[cpu]->ks_instance, "system", syst);
submit (ksp[cpu]->ks_instance, "idle", idle);
submit (ksp[cpu]->ks_instance, "wait", wait);
+ submit (ksp[cpu]->ks_instance, "active", user + syst + wait);
}
/* #endif defined(HAVE_LIBKSTAT) */
submit (i, "system", cpuinfo[i][CP_SYS]);
submit (i, "idle", cpuinfo[i][CP_IDLE]);
submit (i, "interrupt", cpuinfo[i][CP_INTR]);
+ submit (i, "active", cpuinfo[i][CP_USER] +
+ cpuinfo[i][CP_NICE] +
+ cpuinfo[i][CP_SYS] +
+ cpuinfo[i][CP_INTR]);
}
/* #endif CAN_USE_SYSCTL */
#elif defined(HAVE_SYSCTLBYNAME) && defined(HAVE_SYSCTL_KERN_CP_TIMES)
submit (i, "system", cpuinfo[i][CP_SYS]);
submit (i, "idle", cpuinfo[i][CP_IDLE]);
submit (i, "interrupt", cpuinfo[i][CP_INTR]);
+ submit (i, "active", cpuinfo[i][CP_USER] +
+ cpuinfo[i][CP_NICE] +
+ cpuinfo[i][CP_SYS] +
+ cpuinfo[i][CP_INTR]);
}
/* #endif HAVE_SYSCTL_KERN_CP_TIMES */
#elif defined(HAVE_SYSCTLBYNAME)
submit (0, "system", cpuinfo[CP_SYS]);
submit (0, "idle", cpuinfo[CP_IDLE]);
submit (0, "interrupt", cpuinfo[CP_INTR]);
+ submit (0, "active", cpuinfo[CP_USER] +
+ cpuinfo[CP_NICE] +
+ cpuinfo[CP_SYS] +
+ cpuinfo[CP_INTR]);
/* #endif HAVE_SYSCTLBYNAME */
#elif defined(HAVE_LIBSTATGRAB)
return (-1);
}
- submit (0, "idle", (counter_t) cs->idle);
- submit (0, "nice", (counter_t) cs->nice);
- submit (0, "swap", (counter_t) cs->swap);
- submit (0, "system", (counter_t) cs->kernel);
- submit (0, "user", (counter_t) cs->user);
- submit (0, "wait", (counter_t) cs->iowait);
+ submit (0, "idle", (derive_t) cs->idle);
+ submit (0, "nice", (derive_t) cs->nice);
+ submit (0, "swap", (derive_t) cs->swap);
+ submit (0, "system", (derive_t) cs->kernel);
+ submit (0, "user", (derive_t) cs->user);
+ submit (0, "wait", (derive_t) cs->iowait);
+ submit (0, "active", (derive_t) cs->nice +
+ cs->swap +
+ cs->kernel +
+ cs->user +
+ cs->iowait +
+ cs->nice);
/* #endif HAVE_LIBSTATGRAB */
#elif defined(HAVE_PERFSTAT)
for (i = 0; i < cpus; i++)
{
- submit (i, "idle", (counter_t) perfcpu[i].idle);
- submit (i, "system", (counter_t) perfcpu[i].sys);
- submit (i, "user", (counter_t) perfcpu[i].user);
- submit (i, "wait", (counter_t) perfcpu[i].wait);
+ submit (i, "idle", (derive_t) perfcpu[i].idle);
+ submit (i, "system", (derive_t) perfcpu[i].sys);
+ submit (i, "user", (derive_t) perfcpu[i].user);
+ submit (i, "wait", (derive_t) perfcpu[i].wait);
+ submit (i, "active", (derive_t) perfcpu[i].sys +
+ perfcpu[i].user +
+ perfcpu[i].wait);
}
#endif /* HAVE_PERFSTAT */