Bug 117664

Summary: iostat can't display IO current vlaue in first line
Product: Base System Reporter: chifeng
Component: amd64Assignee: freebsd-amd64 (Nobody) <amd64>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Unspecified   
Hardware: Any   
OS: Any   

Description chifeng 2007-10-30 07:30:02 UTC
When I write a shell script plugin for munin, I hope get a current value of IO statistics. But iostat can't do it, it first statistics that are printed are avaraged over the system uptime. If I use "iostat -c 2 | tail -1 " command, this will wait 2s at least. 
so I think for iostat first line, 1) iostat should be display current value, 2) have a parameter to display current value at least. 

# iostat -c 5
      tty             ad2             cpu
 tin tout  KB/t tps  MB/s  us ni sy in id
   0    2 16.48   1  0.01   0  0  0  0 100
   0  130 63.63 782 48.60   0  0 14  1 85
   0  104 62.68 594 36.38   2  0 24  0 73
   0   77 62.75 663 40.63   0  0 16  0 83
   0   67 24.65 1568 37.76   0  0 18  1 80
# iostat
      tty             ad2             cpu
 tin tout  KB/t tps  MB/s  us ni sy in id
   0    2 17.52   1  0.01   0  0  0  0 100

Fix: 

:-( I don't know how to fix it.
How-To-Repeat: iostat command.
Comment 1 Peter Jeremy 2007-10-31 06:15:45 UTC
On Tue, Oct 30, 2007 at 07:22:39AM +0000, chifeng wrote:
>When I write a shell script plugin for munin, I hope get a current value of IO statistics. But iostat can't do it, it first statistics that are printed are avaraged over the system uptime. If I use "iostat -c 2 | tail -1 " command, this will wait 2s at least. 
>so I think for iostat first line, 1) iostat should be display current value, 2) have a parameter to display current value at least. 


This is generic, rather than amd64-specific.

I believe you misunderstand iostat.  There is no "current value" as
you desire.  There are a variety of system counters that get updated
when various events occur and iostat reports the change in those
counters over the specified interval.  The only way to determine the
system activity, averaged over two seconds, is to sample the counters,
wait two seconds, sample the counters again and reports the differences.

I suggest you start a thread on (eg) freebsd-questions explaining what
you are trying to achieve and someone there may be able to assist.

In the meantime, you might like to investigate the sysutils/bsdsar port.

-- 
Peter
Comment 2 John Baldwin freebsd_committer freebsd_triage 2007-10-31 17:53:35 UTC
On Tuesday 30 October 2007 03:22:39 am chifeng wrote:
> 
> >Number:         117664
> >Category:       amd64
> >Synopsis:       iostat can't display IO current vlaue in first line
> >Confidential:   no
> >Severity:       non-critical
> >Priority:       low
> >Responsible:    freebsd-amd64
> >State:          open
> >Quarter:        
> >Keywords:       
> >Date-Required:
> >Class:          change-request
> >Submitter-Id:   current-users
> >Arrival-Date:   Tue Oct 30 07:30:02 UTC 2007
> >Closed-Date:
> >Last-Modified:
> >Originator:     chifeng
> >Release:        FreeBSD6.2-Release-p8
> >Organization:
> Platform Computing
> >Environment:
> FreeBSD cnxabuild.asia.corp.platform.com 6.2-RELEASE-p8 FreeBSD 
6.2-RELEASE-p8 #0: Tue Oct 16 12:32:14 CST 2007     
root@xabuild.asia.corp.platform.com:/usr/obj/usr/src/sys/PLATFORM  amd64
> >Description:
> When I write a shell script plugin for munin, I hope get a current value of 
IO statistics. But iostat can't do it, it first statistics that are printed 
are avaraged over the system uptime. If I use "iostat -c 2 | tail -1 " 
command, this will wait 2s at least. 
> so I think for iostat first line, 1) iostat should be display current value, 
2) have a parameter to display current value at least. 

There isn't a 'current value' for iostat to dump.  The kernel just keeps 
running counts and iostat simulates a current value by saving the values each 
time and computing a delta for each line after the first.  However, for the 
first line there is no saved value so it cannot compute a delta.  Probably 
you need to write your own plugin that saves the previous values and computes 
deltas when queried similar to how iostat behaves.

-- 
John Baldwin
Comment 3 John Baldwin freebsd_committer freebsd_triage 2007-11-02 20:04:23 UTC
State Changed
From-To: open->closed

As detailed in followup, this is just a property of the counters and the way 
iostat works.