Annotation of driverkit/notes/DiskStats, revision 1.1.1.1

1.1       root        1:                        Disk Statistics notes
                      2:                        
                      3: int    dk_ndrive = DK_NDRIVE;
                      4: int    dk_busy;
                      5: long   dk_time[DK_NDRIVE];
                      6: long   dk_seek[DK_NDRIVE];
                      7: long   dk_xfer[DK_NDRIVE];
                      8: long   dk_wds[DK_NDRIVE];
                      9: float  dk_mspw[DK_NDRIVE];             // never Used!!!!!!
                     10: long   dk_bps[DK_NDRIVE];
                     11: 
                     12: SCSI Disk Driver
                     13: 
                     14:        dk_bps[dk] set once, in sdsetbratio. Calculated from values in 
                     15:                label (dlp->nsect, dlp->dl_secsize, dlp->rpm)
                     16:        sdstart:
                     17:                dk_busy |= 1 << device;
                     18:                dk_xfer[device]++;
                     19:                dk_seek[device]++;
                     20:                dk_wds[device] += bp->b_bcount >> 6;
                     21:                
                     22:        sdintr:
                     23:                dk_busy &=~ (1 << device);
                     24:                
                     25: OD driver
                     26: 
                     27:        od_read_label:
                     28:                dk_bps[dk] = l->dl_secsize * l->dl_nsect *
                     29:                                l->dl_rpm / 60;
                     30: 
                     31:        od_go:
                     32:                dk_busy |= 1 << dk;
                     33:                dk_xfer[dk]++;
                     34:                dk_wds[dk] += bp->b_bcount >> 6;
                     35:        
                     36:        od_done:
                     37:                dk_busy &= ~(1 << dk);
                     38:                
                     39:        state machine starting seek:
                     40:                dk_seek[dk]++;
                     41: 
                     42: In gatherstats(), every hardclock (hz times per second?)
                     43: 
                     44:        for (s = 0; s < DK_NDRIVE; s++)
                     45:                if (dk_busy & (1 << s))
                     46:                        dk_time[s]++;
                     47: 
                     48: In mach table() syscall:
                     49: 
                     50:        ti.io_dkbusy = dk_busy;
                     51:        ti.io_ndrive = dk_ndrive;       // don't know any better
                     52:        
                     53: In bsd machine_table() syscall:
                     54: 
                     55:        ti.io_dkbusy = dk_busy;
                     56:        ti.io_ndrive = 0;
                     57:        for (i = 0; bus_dinit[i].bd_driver; i++)
                     58:                if (bus_dinit[i].bd_dk >= 0)
                     59:                        ti.io_ndrive++;
                     60: 
                     61: Proposed IODiskDevice counters (all unsigned int's)
                     62:        readOps         
                     63:        bytesRead
                     64:        timeReading
                     65:        writeOps
                     66:        timeWriting
                     67:        bytesWritten
                     68:        
                     69: methods
                     70:        - (void)startRead;
                     71:        - (void)endRead : (int)bytesTransferred;
                     72:        - (void)startWrite;
                     73:        - (void)endWrite : (int)bytesTransferred;
                     74: 
                     75: ..also, in kernel, current dk_XXX variables will be supported for a while.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.