Date: Tue, 18 Sep 2012 14:15:20 +0300 From: Mikolaj Golub <trociny@FreeBSD.org> To: freebsd-hackers@freebsd.org Subject: Changing `iostat -Ix' output Message-ID: <20120918111519.GB66984@gmail.com>
next in thread | raw e-mail | index | archive | help
Hi, I don't like very much what `iostat -Ix' outputs and would like to change this. A typical output: % iostat -Ix extended device statistics device r/i w/i kr/i kw/i qlen svc_t %b ada0 5599136.0 3953193.0 39982760.0 86819866.5 0 15.1 16 cd0 552.0 0.0 4.3 0.0 0 0.0 0 pass0 333.0 0.0 166.5 0.0 0 0.0 0 pass1 2.0 0.0 1.0 0.0 0 0.0 0 Parameters like r/i, kr/i (total io operations/kbytes) are very useful. They allow to use `iostat -Ix' to collect IO statistics running it periodically (from cron or some monitoring tool) and calculate average amount of operations or bytes per second at the specified period subtracting the current value from the previous one and dividing by time period. But you can't do the same with % busy, which is very useful IO characteristics. Average % busy at the specified period could be calculated storing total busy time for the device at time t1, total busy time at t2 and then subtracting the last value from the first (to get busy time at this period) and dividing by the time period. Currently iostat(8) does not provide 'total busy time' statistics. I use sysutils/devstat for this but it would be nice if iostat(8) itself provide such functionality. I propose for `iostat -Ix` to output total busy time instead of % busy, and also total duration of transactions instead of average duration (to be able to calculate average duration for the period between two iostat runs). http://people.freebsd.org/~trociny/iostat.total_busy_time.1.patch Average duration and % busy are still available via `iostat -x`. Here is an output example % ./iostat -Ix; sleep 60; ./iostat -Ix extended device statistics device r/i w/i kr/i kw/i qlen tdur sb ada0 5599785.0 3961913.0 39985960.5 86902385.5 0 144055.5 35966.5 cd0 554.0 0.0 4.3 0.0 0 0.0 9.5 pass0 336.0 0.0 168.0 0.0 0 0.0 17.5 pass1 2.0 0.0 1.0 0.0 0 0.0 0.0 extended device statistics device r/i w/i kr/i kw/i qlen tdur sb ada0 5599922.0 3963177.0 40002608.0 86958230.5 0 144074.4 35970.5 cd0 554.0 0.0 4.3 0.0 0 0.0 9.5 pass0 336.0 0.0 168.0 0.0 0 0.0 17.5 pass1 2.0 0.0 1.0 0.0 0 0.0 0.0 So, for ada0, % busy for that period was 100 * (35970.5 - 35966.5) / 60 = 6. And service time (assuming that only read and write operations were serviced) was 1000 * (144074.4 - 144055.5) / (5599922 - 5599785 + 3963177 - 3961913) = 13.4 msec. What do you think about this? -- Mikolaj Golub
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120918111519.GB66984>