I would like to know how the value of disk "busy" is calculated? I want to use values from iostat in the monitoring (zabbix). iostat shows averages by default and the last column is "busy %", but the first output contains averages from the system boot til now. # iostat -x -t da extended device statistics device r/s w/s kr/s kw/s qlen svc_t %b ada0 2.5 13.8 49.0 287.9 0 45.7 2 ada1 2.6 13.8 51.7 287.9 0 39.6 2 I don't want to use "iostat -x -t da -w 20" to get averages of the last 20 seconds because it means monitoring needs to wait 20 seconds on each run. I can use absolute values from iostat. This output is without any delay and the monitoring SW can calculate averages between two runs. But the last column is no busy %, it is sb/i. # iostat -I -x -t da extended device statistics device r/i w/i kr/i kw/i qlen tsvc_t/i sb/i ada0 7403218.0 40825749.0 144647824.0 849655694.0 0 2204904.2 73121.8 ada1 7537423.0 40825749.0 152643874.5 849655694.0 0 1914301.0 69996.5 So the question is - If I want to plot "busy %" in the graph - how the "busy" value in the first example is calculated? Is it possible to calculate it from the numbers that I have from "iostat -I -x" and the know time interval between two runs? Miroslav Lachman
Dear Miroslav, looking at the manpage for iostat I see: %b % of time the device had one or more outstanding transactions tsvc_t/i total duration of transactions per time period, in seconds sb/i total time the device had one or more outstanding transac- tions per time period, in seconds So calculating the percentage using sb/i should be fairly easy. Best regards, Holger Am 20.06.2018 um 16:55 schrieb Miroslav Lachman <000.fbsd at quip.cz<mailto:000.fbsd at quip.cz>>: I would like to know how the value of disk "busy" is calculated? I want to use values from iostat in the monitoring (zabbix). iostat shows averages by default and the last column is "busy %", but the first output contains averages from the system boot til now. # iostat -x -t da extended device statistics device r/s w/s kr/s kw/s qlen svc_t %b ada0 2.5 13.8 49.0 287.9 0 45.7 2 ada1 2.6 13.8 51.7 287.9 0 39.6 2 I don't want to use "iostat -x -t da -w 20" to get averages of the last 20 seconds because it means monitoring needs to wait 20 seconds on each run. I can use absolute values from iostat. This output is without any delay and the monitoring SW can calculate averages between two runs. But the last column is no busy %, it is sb/i. # iostat -I -x -t da extended device statistics device r/i w/i kr/i kw/i qlen tsvc_t/i sb/i ada0 7403218.0 40825749.0 144647824.0 849655694.0 0 2204904.2 73121.8 ada1 7537423.0 40825749.0 152643874.5 849655694.0 0 1914301.0 69996.5 So the question is - If I want to plot "busy %" in the graph - how the "busy" value in the first example is calculated? Is it possible to calculate it from the numbers that I have from "iostat -I -x" and the know time interval between two runs? Miroslav Lachman
On Wed, Jun 20, 2018 at 8:55 AM, Miroslav Lachman <000.fbsd at quip.cz> wrote:> I would like to know how the value of disk "busy" is calculated? > > I want to use values from iostat in the monitoring (zabbix). > iostat shows averages by default and the last column is "busy %", but the > first output contains averages from the system boot til now. >%busy comes from the devstat layer. It's defined as the percent of the time over the polling interval in which at least one transaction was awaiting completion by the lower layers. It's an imperfect measure of how busy the drives are (in ye-olden days, before tagged queuing and NCQ, it was OK because you had THE transaction pending and it was a good measure of how utilized things were. Now with concurrent I/O in flash devices, it's only an imperfect approximation). Warner