[Orca-dev] Couple of minor updates - make sure I'm notsmokin'something

Dmitry Berezin dberezin at surfside.rutgers.edu
Tue May 25 08:58:40 PDT 2004


Sean,

> For me, I would like to know what the wait and run queue statistics are.
>   Currently, these stats are computed but not collected in the text
> files.  I don't like how it only shows service time, appears to ignore
> resident time, and doesn't collect/compute response time - or maybe it
> does, I need to look at the code some more.

I think all of the data that you are looking for is already available
through GLOBAL_disk[] array, defined as "p_iostat GLOBAL_disk[];"

class p_iostat {

  int number$;
  string name$;
  int disk_count;

  double reads;
  double writes;
  double kreads;
  double kwrites;
  double avg_wait;      /* wait queue length */
  double avg_run;       /* active queue length */
  double avg_wait_time; /* wait time in ms as in sar */
  double avg_serv_time; /* active service time in ms as in sar */
  double service;       /* response time (avwait+avserv) as in iostat svc_t
*/
  double wait_percent;
  double run_percent;   /* a.k.a. utilization */

  disk_info_t info;

> This of course brings up the recent RAW disk code topic which is the
> code I've been modifying.

  IMHO there are two approaches that can be taken at this point - 
1. Remove RAWDISK code, make some minor changes to the use of GLOBAL_disk[]
array, and rewrite tape data collection, so that it does not depend on
RAWDISK code (I already have some ideas about how to actually code this).
2. Modify RAWDISK code to be the _only_ way of collecting disk and tape
statistics and clean it up (fix name matching part, make the array dynamic,
etc.)

I don't know how far you have gone in *exploring* the internals of disk data
collection, so here are some results of my "digging" through it (hope it
will save you some time and will help determine the strategy for this topic
- everybody is welcome to comment)

GLOBAL_disk[] is the array of static "p_iostat"s that is being populated and
updated in live_rules.se module. It depends on diskinfo.se to provide device
name mappings and on ks_disks structure to be populated by SE with IO
information for all *disk* devices. SE considers "sd" devices to be *disks*,
but it is possible to add other, say "st", devices to the list of *disks*
and then SE will retrieve IO data for them as well.

RAWDISK code iterates through all kernel data directly, looking for
information of type KSTAT_TYPE_IO. It also depends on diskinfo.se for its
device name mapping.

Since live_rules.se module is already being used for other reasons,
GLOBAL_disk[] information is already available. Of course, the same
information can be obtained directly from one instance of p_iostat class, by
"looping" through its data. Also, if I understand it correctly, the reasons
for creating RAWDISK code are not essential any longer.

  -Dmitry.






More information about the Orca-dev mailing list