X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fdisk.c;h=31c3ec2eba01fb008b33d47f17deac86825f47ab;hb=080df5f215fcc480a3ca1f4841491c1997632764;hp=2a5b713beeff3dc84ab25f7a2c91e8f85c6acf34;hpb=05b7b7e327b01a33da39f5550694294fd0d29849;p=collectd.git diff --git a/src/disk.c b/src/disk.c index 2a5b713b..31c3ec2e 100644 --- a/src/disk.c +++ b/src/disk.c @@ -57,52 +57,6 @@ # define DISK_HAVE_READ 0 #endif -/* 2^34 = 17179869184 = ~17.2GByte/s */ -static data_source_t octets_dsrc[2] = -{ - {"read", DS_TYPE_COUNTER, 0, 17179869183.0}, - {"write", DS_TYPE_COUNTER, 0, 17179869183.0} -}; - -static data_set_t octets_ds = -{ - "disk_octets", 2, octets_dsrc -}; - -static data_source_t operations_dsrc[2] = -{ - {"read", DS_TYPE_COUNTER, 0, 4294967295.0}, - {"write", DS_TYPE_COUNTER, 0, 4294967295.0} -}; - -static data_set_t operations_ds = -{ - "disk_ops", 2, operations_dsrc -}; - -static data_source_t merged_dsrc[2] = -{ - {"read", DS_TYPE_COUNTER, 0, 4294967295.0}, - {"write", DS_TYPE_COUNTER, 0, 4294967295.0} -}; - -static data_set_t merged_ds = -{ - "disk_merged", 2, merged_dsrc -}; - -/* max is 1000000us per second. */ -static data_source_t time_dsrc[2] = -{ - {"read", DS_TYPE_COUNTER, 0, 1000000.0}, - {"write", DS_TYPE_COUNTER, 0, 1000000.0} -}; - -static data_set_t time_ds = -{ - "disk_time", 2, time_dsrc -}; - #if DISK_HAVE_READ #if HAVE_IOKIT_IOKITLIB_H static mach_port_t io_master_port = MACH_PORT_NULL; @@ -559,6 +513,23 @@ static int disk_read (void) /* #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 +# define KIO_WOCTETS writes +# define KIO_ROPS nreads +# define KIO_WOPS nwrites +# define KIO_RTIME rtime +# define KIO_WTIME wtime +# elif HAVE_KSTAT_IO_T_NWRITTEN && HAVE_KSTAT_IO_T_WRITES && HAVE_KSTAT_IO_T_WTIME +# define KIO_ROCTETS nread +# define KIO_WOCTETS nwritten +# define KIO_ROPS reads +# define KIO_WOPS writes +# define KIO_RTIME rtime +# define KIO_WTIME wtime +# else +# error "kstat_io_t does not have the required members" +# endif static kstat_io_t kio; int i; @@ -572,15 +543,20 @@ static int disk_read (void) if (strncmp (ksp[i]->ks_class, "disk", 4) == 0) { - disk_submit (ksp[i]->ks_name, "disk_octets", kio.reads, kio.writes); - disk_submit (ksp[i]->ks_name, "disk_ops", kio.nreads, kio.nwrites); + disk_submit (ksp[i]->ks_name, "disk_octets", + kio.KIO_ROCTETS, kio.KIO_WOCTETS); + disk_submit (ksp[i]->ks_name, "disk_ops", + kio.KIO_ROPS, kio.KIO_WOPS); /* FIXME: Convert this to microseconds if necessary */ - disk_submit (ksp[i]->ks_name, "disk_time", kio.rtime, kio.wtime); + disk_submit (ksp[i]->ks_name, "disk_time", + kio.KIO_RTIME, kio.KIO_WTIME); } else if (strncmp (ksp[i]->ks_class, "partition", 9) == 0) { - disk_submit (ksp[i]->ks_name, "disk_octets", kio.reads, kio.writes); - disk_submit (ksp[i]->ks_name, "disk_ops", kio.nreads, kio.nwrites); + disk_submit (ksp[i]->ks_name, "disk_octets", + kio.KIO_ROCTETS, kio.KIO_WOCTETS); + disk_submit (ksp[i]->ks_name, "disk_ops", + kio.KIO_ROPS, kio.KIO_WOPS); } } #endif /* defined(HAVE_LIBKSTAT) */ @@ -591,13 +567,8 @@ static int disk_read (void) void module_register (void) { - plugin_register_data_set (&octets_ds); - plugin_register_data_set (&operations_ds); - plugin_register_data_set (&merged_ds); - plugin_register_data_set (&time_ds); - #if DISK_HAVE_READ plugin_register_init ("disk", disk_init); plugin_register_read ("disk", disk_read); #endif /* DISK_HAVE_READ */ -} +} /* void module_register */