X-Git-Url: https://git.octo.it/?a=blobdiff_plain;ds=sidebyside;f=src%2Fdisk.c;h=4a78f1bdbfb060ad1c57109dbe6acaf8c9c4dd2a;hb=56c7b21899e44b57b5031a21ca3652b30f4fc1aa;hp=0a90899215b8f6b827ccb147a9b648f2861474f9;hpb=07be522384e753b7921213a0dc96a50336c79a66;p=collectd.git diff --git a/src/disk.c b/src/disk.c index 0a908992..4a78f1bd 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 = ((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; counter_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;