diff --git a/src/collectd.c b/src/collectd.c index 6b77d599..f17c19eb 100644 --- a/src/collectd.c +++ b/src/collectd.c @@ -294,7 +294,7 @@ static int do_init (void) #endif #if HAVE_LIBSTATGRAB - if (sg_init ()) + if (sg_init (0)) { ERROR ("sg_init: %s", sg_str_error (sg_get_error ())); return (-1); diff --git a/src/disk.c b/src/disk.c index 4a78f1bd..5f972aa5 100644 --- a/src/disk.c +++ b/src/disk.c @@ -77,34 +77,6 @@ static mach_port_t io_master_port = MACH_PORT_NULL; /* #endif HAVE_IOKIT_IOKITLIB_H */ -#elif KERNEL_LINUX -typedef struct diskstats -{ - char *name; - - /* This overflows in roughly 1361 years */ - unsigned int poll_count; - - counter_t read_sectors; - counter_t write_sectors; - - counter_t read_bytes; - counter_t write_bytes; - - counter_t read_ops; - counter_t write_ops; - counter_t read_time; - counter_t write_time; - - counter_t avg_read_time; - counter_t avg_write_time; - - struct diskstats *next; -} diskstats_t; - -static diskstats_t *disklist; -/* #endif KERNEL_LINUX */ - #elif HAVE_LIBKSTAT #define MAX_NUMDISK 256 extern kstat_ctl_t *kc; @@ -182,10 +154,6 @@ static int disk_init (void) } /* #endif HAVE_IOKIT_IOKITLIB_H */ -#elif KERNEL_LINUX - /* do nothing */ -/* #endif KERNEL_LINUX */ - #elif HAVE_LIBKSTAT kstat_t *ksp_chain; @@ -235,16 +203,6 @@ static void disk_submit (const char *plugin_instance, plugin_dispatch_values (&vl); } /* void disk_submit */ -#if KERNEL_LINUX -static counter_t disk_calc_time_incr (counter_t delta_time, counter_t delta_ops) -{ - double avg_time = ((double) delta_time) / ((double) delta_ops); - double avg_time_incr = ((double) interval_g) * avg_time; - - return ((counter_t) (avg_time_incr + .5)); -} -#endif - #if HAVE_IOKIT_IOKITLIB_H static signed long long dict_get_value (CFDictionaryRef dict, const char *key) { @@ -428,218 +386,6 @@ static int disk_read (void) IOObjectRelease (disk_list); /* #endif HAVE_IOKIT_IOKITLIB_H */ -#elif KERNEL_LINUX - FILE *fh; - char buffer[1024]; - - char *fields[32]; - int numfields; - int fieldshift = 0; - - int minor = 0; - - counter_t read_sectors = 0; - counter_t write_sectors = 0; - - counter_t read_ops = 0; - counter_t read_merged = 0; - counter_t read_time = 0; - counter_t write_ops = 0; - counter_t write_merged = 0; - counter_t write_time = 0; - int is_disk = 0; - - diskstats_t *ds, *pre_ds; - - if ((fh = fopen ("/proc/diskstats", "r")) == NULL) - { - fh = fopen ("/proc/partitions", "r"); - if (fh == NULL) - { - ERROR ("disk plugin: fopen (/proc/{diskstats,partitions}) failed."); - return (-1); - } - - /* Kernel is 2.4.* */ - fieldshift = 1; - } - - while (fgets (buffer, sizeof (buffer), fh) != NULL) - { - char *disk_name; - - numfields = strsplit (buffer, fields, 32); - - if ((numfields != (14 + fieldshift)) && (numfields != 7)) - continue; - - minor = atoll (fields[1]); - - disk_name = fields[2 + fieldshift]; - - for (ds = disklist, pre_ds = disklist; ds != NULL; pre_ds = ds, ds = ds->next) - if (strcmp (disk_name, ds->name) == 0) - break; - - if (ds == NULL) - { - if ((ds = (diskstats_t *) calloc (1, sizeof (diskstats_t))) == NULL) - continue; - - if ((ds->name = strdup (disk_name)) == NULL) - { - free (ds); - continue; - } - - if (pre_ds == NULL) - disklist = ds; - else - pre_ds->next = ds; - } - - is_disk = 0; - if (numfields == 7) - { - /* Kernel 2.6, Partition */ - read_ops = atoll (fields[3]); - read_sectors = atoll (fields[4]); - write_ops = atoll (fields[5]); - write_sectors = atoll (fields[6]); - } - else if (numfields == (14 + fieldshift)) - { - read_ops = atoll (fields[3 + fieldshift]); - write_ops = atoll (fields[7 + fieldshift]); - - read_sectors = atoll (fields[5 + fieldshift]); - write_sectors = atoll (fields[9 + fieldshift]); - - if ((fieldshift == 0) || (minor == 0)) - { - is_disk = 1; - read_merged = atoll (fields[4 + fieldshift]); - read_time = atoll (fields[6 + fieldshift]); - write_merged = atoll (fields[8 + fieldshift]); - write_time = atoll (fields[10+ fieldshift]); - } - } - else - { - DEBUG ("numfields = %i; => unknown file format.", numfields); - continue; - } - - { - counter_t diff_read_sectors; - counter_t diff_write_sectors; - - /* If the counter wraps around, it's only 32 bits.. */ - if (read_sectors < ds->read_sectors) - diff_read_sectors = 1 + read_sectors - + (UINT_MAX - ds->read_sectors); - else - diff_read_sectors = read_sectors - ds->read_sectors; - if (write_sectors < ds->write_sectors) - diff_write_sectors = 1 + write_sectors - + (UINT_MAX - ds->write_sectors); - else - diff_write_sectors = write_sectors - ds->write_sectors; - - ds->read_bytes += 512 * diff_read_sectors; - ds->write_bytes += 512 * diff_write_sectors; - ds->read_sectors = read_sectors; - ds->write_sectors = write_sectors; - } - - /* Calculate the average time an io-op needs to complete */ - if (is_disk) - { - counter_t diff_read_ops; - counter_t diff_write_ops; - counter_t diff_read_time; - counter_t diff_write_time; - - if (read_ops < ds->read_ops) - diff_read_ops = 1 + read_ops - + (UINT_MAX - ds->read_ops); - else - diff_read_ops = read_ops - ds->read_ops; - DEBUG ("disk plugin: disk_name = %s; read_ops = %llu; " - "ds->read_ops = %llu; diff_read_ops = %llu;", - disk_name, - read_ops, ds->read_ops, diff_read_ops); - - if (write_ops < ds->write_ops) - diff_write_ops = 1 + write_ops - + (UINT_MAX - ds->write_ops); - else - diff_write_ops = write_ops - ds->write_ops; - - if (read_time < ds->read_time) - diff_read_time = 1 + read_time - + (UINT_MAX - ds->read_time); - else - diff_read_time = read_time - ds->read_time; - - if (write_time < ds->write_time) - diff_write_time = 1 + write_time - + (UINT_MAX - ds->write_time); - else - diff_write_time = write_time - ds->write_time; - - if (diff_read_ops != 0) - ds->avg_read_time += disk_calc_time_incr ( - diff_read_time, diff_read_ops); - if (diff_write_ops != 0) - ds->avg_write_time += disk_calc_time_incr ( - diff_write_time, diff_write_ops); - - ds->read_ops = read_ops; - ds->read_time = read_time; - ds->write_ops = write_ops; - ds->write_time = write_time; - } /* if (is_disk) */ - - /* Don't write to the RRDs if we've just started.. */ - ds->poll_count++; - if (ds->poll_count <= 2) - { - DEBUG ("disk plugin: (ds->poll_count = %i) <= " - "(min_poll_count = 2); => Not writing.", - ds->poll_count); - continue; - } - - if ((read_ops == 0) && (write_ops == 0)) - { - DEBUG ("disk plugin: ((read_ops == 0) && " - "(write_ops == 0)); => Not writing."); - continue; - } - - if ((ds->read_bytes != 0) || (ds->write_bytes != 0)) - disk_submit (disk_name, "disk_octets", - ds->read_bytes, ds->write_bytes); - - if ((ds->read_ops != 0) || (ds->write_ops != 0)) - disk_submit (disk_name, "disk_ops", - read_ops, write_ops); - - if ((ds->avg_read_time != 0) || (ds->avg_write_time != 0)) - disk_submit (disk_name, "disk_time", - ds->avg_read_time, ds->avg_write_time); - - if (is_disk) - { - disk_submit (disk_name, "disk_merged", - read_merged, write_merged); - } /* if (is_disk) */ - } /* while (fgets (buffer, sizeof (buffer), fh) != NULL) */ - - fclose (fh); -/* #endif defined(KERNEL_LINUX) */ - #elif HAVE_LIBKSTAT # if HAVE_KSTAT_IO_T_WRITES && HAVE_KSTAT_IO_T_NWRITES && HAVE_KSTAT_IO_T_WTIME # define KIO_ROCTETS reads