Hi,

> On 20/07/2010 18:41, Johnson Earls wrote:
> > Hello,
> >
> > I am hoping that someone on this list can enlighten
> me about the DTrace i/o provider.  I am apparently
> not understanding where the i/o provider actually
> sits in the stack.
> >
> > My understanding, from reading
> http://wikis.sun.com/display/DTrace/io+Provider, is
> that (discounting NFS for this purpose) the i/o
> provider probes fire when I/O is going to a specific
> disk device - in other words, below the filesystem
> layer.
> >
> > I am using both the iopattern dtrace script and my
> own dtrace script modified from the iopattern script
> to gather read and write bandwidth statistics on a
> fibre channel SAN disk device.  I do this through the
> io:genunix::start and io:genunix::done probe,
> filtering on args[1]->dev_statname for the disk
> device name and accumulating the bandwidth statistics
> from args[0]->b_count.
> >
> > However, I am seeing occasional reports of i/o
> bandwidth anywhere from 40 to 100 GB per second, on a
> 4Gbps fiber channel device.  I am obviously not
> understanding how the io provider is working.
> >
> > My questions:
> >
> > Do io:genunix::start and io:genunix::done fire
> *only* for physical device access, or will they fire
> when the request is being served by a Solaris cache?
> >
> > If they fire on requests that are served by a
> cache, is there any way to determine this in order to
> filter those results out?
> >
> > If they fire only on physical device access, what
> can explain the buffer counts being reported at many
> times higher than what the physical device is capable
> of?
> >
> >
> Check documentation for args[0]->b_flags, for
> example:
> 
> io:::start
> {
> printf("%s\n", args[0]->b_flags&B_PHYS ?
>  "physical":logical");
> 
> _______________________________________________
> dtrace-discuss mailing list
> dtrace-discuss@opensolaris.org
> 
The B_PHYS flag is set for accessing the "raw" device (i.e., /dev/rdsk/...).  
Access to the block device,
regular files, directories will not have B_PHYS set, but still are accessing 
the disk.
The io:genunix:bdev_strategy:start and io:genunix:biodone:done probes fire when 
the
buffer is being handed to the disk driver, and when the I/O has completed.  In 
other words,
they are not triggering on cache access but physical device access.  As to why 
you are seeing
impossible values, I would have to see your script.

max
-- 
This message posted from opensolaris.org
_______________________________________________
dtrace-discuss mailing list
dtrace-discuss@opensolaris.org

Reply via email to