multiple issues with devstat_*(9)
Kenneth D. Merry
ken at freebsd.org
Mon Apr 11 16:07:41 UTC 2011
On Sun, Apr 10, 2011 at 23:19:31 +0300, Alexander Motin wrote:
> Alexander Best wrote:
> > On Thu Apr 7 11, Alexander Motin wrote:
> >> Alexander Best wrote:
> >>> On Fri Apr 1 11, John Baldwin wrote:
> >>>> On Thursday, March 31, 2011 6:33:39 pm Alexander Best wrote:
> >>>>> i think there are multiple issues with devstat. i found the following in
> >>>>> devicestat.h:
> >> ...
> >>
> >>>>> funny thing is i found the following in scsi_pass.c:
> >>>>>
> >>>>> softc->device_stats = devstat_new_entry("pass",
> >>>>> periph->unit_number, 0,
> >>>>> DEVSTAT_NO_BLOCKSIZE
> >>>>> | (no_tags ? DEVSTAT_NO_ORDERED_TAGS : 0),
> >>>>> softc->pd_type |
> >>>>> DEVSTAT_TYPE_IF_SCSI |
> >>>>> DEVSTAT_TYPE_PASS,
> >>>>> DEVSTAT_PRIORITY_PASS);
> >>>>>
> >>>>> ...so pass* *should* show up under iostat -t scsi.
> >> As I can see, this is a bug (or feature) of the libdevstat /
> >> devstat_selectdevs(). If you specify any -t, then pass devices will be
> >> reported only if you request "pass" specifically.
> >>
> >>>> Hmm, pass devices for adaX should not be SCSI though, they should be ide I
> >>>> think.
> >>> i think the situation with ATA_CAM should be discussed further. still besides
> >>> this issue there are many more with devstat(3).
> >>>
> >>> i'll try to track all the "devstat_new_entry()" occurrences and see if some
> >>> issues can be fixed. maybe only the proper DEVSTAT_* args were forgotten.
> >> Assuming that SCSI and IDE in -t option means transport type, and
> >> assuming that we count everything except ATA and SATA as SCSI, I've made
> >> following patch, that should fix issues from the CAM side:
> >> http://people.freebsd.org/~mav/cam.devstat.patch
> >
> > with your patch i get the following output:
> >
> > otaku% iostat -t ide
> > tty ada0 ada1 cpu
> > tin tout KB/t tps MB/s KB/t tps MB/s us ni sy in id
> > 6 144 14.21 6 0.09 20.46 40 0.81 2 0 3 0 95
> > otaku% iostat -t scsi
> > tty cd0 cpu
> > tin tout KB/t tps MB/s us ni sy in id
> > 6 146 2.32 0 0.00 2 0 3 0 95
> > otaku% iostat -t pass
> > tty pass0 pass1 pass2 cpu
> > tin tout KB/t tps MB/s KB/t tps MB/s KB/t tps MB/s us ni sy in id
> > 6 147 0.36 0 0.00 0.36 0 0.00 0.00 0 0.00 2 0 3 0 95
> > otaku% iostat -t da
> > tty ada0 ada1 cpu
> > tin tout KB/t tps MB/s KB/t tps MB/s us ni sy in id
> > 6 147 14.21 6 0.08 20.46 37 0.75 1 0 3 0 95
> > otaku% iostat -t cd
> > tty cd0 cpu
> > tin tout KB/t tps MB/s us ni sy in id
> > 7 147 2.32 0 0.00 1 0 3 0 95
> > otaku% iostat -t other
> > tty cpu
> > tin tout us ni sy in id
> > 7 149 1 0 3 0 95
> > otaku% iostat -n 100
> > tty ada0 ada1 cd0 pass0 pass1 pass2 cpu
> > tin tout KB/t tps MB/s KB/t tps MB/s KB/t tps MB/s KB/t tps MB/s KB/t tps MB/s KB/t tps MB/s us ni sy in id
> > 6 135 14.21 5 0.07 20.44 32 0.64 2.32 0 0.00 0.36 0 0.00 0.36 0 0.00 0.00 0 0.00 1 0 3 0 96
> >
> > the the remaining issues imho are:
> >
> > 1) ada* and cd* are SATA/ATA devices. so i think they should show up together
> > either under ide *or* scsi. i don't have any *real* scsi devices.
>
> I've just retested the patch and haven't reproduced your problem:
> %iostat -d
> da0 ada0 da1 cd0
> KB/t tps MB/s KB/t tps MB/s KB/t tps MB/s KB/t tps MB/s
> 0.01 0 0.00 3.27 1 0.00 2.65 1 0.00 0.00 0 0.00
> %iostat -d -t ide
> da0 ada0 cd0
> KB/t tps MB/s KB/t tps MB/s KB/t tps MB/s
> 0.01 0 0.00 3.27 1 0.00 0.00 0 0.00
> %iostat -d -t scsi
> da1
> KB/t tps MB/s
> 2.65 1 0.00
> %iostat -d -t pass
> pass0 pass1 pass2 pass3
> KB/t tps MB/s KB/t tps MB/s KB/t tps MB/s KB/t tps MB/s
> 0.00 0 0.00 0.00 0 0.00 0.00 0 0.00 0.00 0 0.00
> %iostat -d -t ide,pass
> pass0 pass1 pass2
> KB/t tps MB/s KB/t tps MB/s KB/t tps MB/s
> 0.00 0 0.00 0.00 0 0.00 0.00 0 0.00
> %iostat -d -t scsi,pass
> pass3
> KB/t tps MB/s
> 0.00 0 0.00
>
> da0 is an PATA ATAPI ZIP, da1 - USB floppy, ada0 - SATA HDD, cd0 - PATA
> ATAPI CD-ROM.
>
> Just an idea, aren't you are using legacy ata(4) + atapicam for your
> cd0? atapicam lies that it's buses are SPI (SCSI).
>
> > 2) the pass* devices still don't show up under ide/scsi/other. that's ok, but
> > then the src comments and manual pages need to be changed accordingly.
>
> As I have told - it is a bug/feature of libdevstat. It should not be
> difficult to fix, if it is really a bug.
That was intentional, if I can remember what I intended in 1997/1998.
The reason was that since there is one passthrough device created for every
device that CAM manages, you don't want to show pass(4) devices when the
user says 'iostat -t scsi'. Otherwise he might get all pass(4) devices,
depending on the order of devices in the system.
But, if it's pass(4) devices you want, you can ask for them specifically,
or for all SCSI/IDE pass(4) devices, as mav did above.
Ken
--
Kenneth Merry
ken at FreeBSD.ORG
More information about the freebsd-scsi
mailing list