X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fdisk.c;h=7411c22588abd4e409f25027d784bd83b62af62a;hb=73b6265b03bc2dcff8c5d96f909b390dffb12a01;hp=697d850f662be2dde164a83397a0d0885a0c5887;hpb=7947c0d3d8e4cae18dc55108465eb6fa3b88b5f0;p=collectd.git diff --git a/src/disk.c b/src/disk.c index 697d850f..7411c225 100644 --- a/src/disk.c +++ b/src/disk.c @@ -235,6 +235,16 @@ 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 = CDTIME_T_TO_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) { @@ -426,7 +436,6 @@ static int disk_read (void) int numfields; int fieldshift = 0; - int major = 0; int minor = 0; derive_t read_sectors = 0; @@ -464,7 +473,6 @@ static int disk_read (void) if ((numfields != (14 + fieldshift)) && (numfields != 7)) continue; - major = atoll (fields[0]); minor = atoll (fields[1]); disk_name = fields[2 + fieldshift]; @@ -581,13 +589,11 @@ static int disk_read (void) diff_write_time = write_time - ds->write_time; if (diff_read_ops != 0) - ds->avg_read_time += (diff_read_time - + (diff_read_ops / 2)) - / diff_read_ops; + ds->avg_read_time += disk_calc_time_incr ( + diff_read_time, diff_read_ops); if (diff_write_ops != 0) - ds->avg_write_time += (diff_write_time - + (diff_write_ops / 2)) - / diff_write_ops; + ds->avg_write_time += disk_calc_time_incr ( + diff_write_time, diff_write_ops); ds->read_ops = read_ops; ds->read_time = read_time;