X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fload.c;h=e0c09a3b8cafc78c225ee939cd92d7b8b4522ba5;hb=99eb08be924850cf76e3dece205d5cbf9c7d74c7;hp=72c7756a34b27d325b82fcc084e3afdb77f02dc8;hpb=abfe65ffb5239060c0c9558d916bbeddee0bc86c;p=collectd.git diff --git a/src/load.c b/src/load.c index 72c7756a..e0c09a3b 100644 --- a/src/load.c +++ b/src/load.c @@ -1,6 +1,7 @@ /** * collectd - src/load.c - * Copyright (C) 2005-2007 Florian octo Forster + * Copyright (C) 2005-2008 Florian octo Forster + * Copyright (C) 2009 Manuel Sanmartin * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -17,8 +18,12 @@ * * Authors: * Florian octo Forster + * Manuel Sanmartin **/ +#define _DEFAULT_SOURCE +#define _BSD_SOURCE + #include "collectd.h" #include "common.h" #include "plugin.h" @@ -39,6 +44,12 @@ #endif #endif /* defined(HAVE_GETLOADAVG) */ +#ifdef HAVE_PERFSTAT +# include /* AIX 5 */ +# include +# include +#endif /* HAVE_PERFSTAT */ + static void load_submit (gauge_t snum, gauge_t mnum, gauge_t lnum) { value_t values[3]; @@ -50,7 +61,6 @@ static void load_submit (gauge_t snum, gauge_t mnum, gauge_t lnum) vl.values = values; vl.values_len = STATIC_ARRAY_SIZE (values); - vl.time = time (NULL); sstrncpy (vl.host, hostname_g, sizeof (vl.host)); sstrncpy (vl.plugin, "load", sizeof (vl.plugin)); sstrncpy (vl.type, "load", sizeof (vl.type)); @@ -80,7 +90,7 @@ static int load_read (void) char *fields[8]; int numfields; - + if ((loadavg = fopen ("/proc/loadavg", "r")) == NULL) { char errbuf[1024]; @@ -131,6 +141,25 @@ static int load_read (void) load_submit (snum, mnum, lnum); /* #endif HAVE_LIBSTATGRAB */ +#elif HAVE_PERFSTAT + gauge_t snum, mnum, lnum; + perfstat_cpu_total_t cputotal; + + if (perfstat_cpu_total(NULL, &cputotal, sizeof(perfstat_cpu_total_t), 1) < 0) + { + char errbuf[1024]; + WARNING ("load: perfstat_cpu : %s", + sstrerror (errno, errbuf, sizeof (errbuf))); + return (-1); + } + + snum = (float)cputotal.loadavg[0]/(float)(1<