Jim Susinno 2003-2004 Hyaline Drive v0.1.1 (formerly diskview, but that name is taken) This code is designed for Randall Burns of JHU. Originally developed as part of the 3dtech software suite by Jim Susinno, broken off into individuality Dec 05 2003. commandbox and framecounter are ripped off from the 3dtech gui component collection, Jim Susinno 2000-2002. This utility relies on the Disksim disk modeling package by Greg Ganger. Disksim provides a sophisticated disk modeling system complete with non-linear regression, physical disk modeling, and more. Hyaline Drive is designed to take a specific kind of output from disksim, currently hacked into the main event loop in disksim.c . A simple block of code is added to output a line of ASCII text to stdout(or file) every time a disk read event occurs. disksim.c:~800 ( in void disksim_simulate_event (int num) ): if(curr->type==100){ printf("%d: %d-%d\n",(int)simtime,irqev->blkno,irqev->blkno+irqev->bcount); This code outputs the timestamp of the currently processed event, along with the starting and ending block numbers of the request. IO types are defined in $(DISKSIM-3.0)/src/disksim_iosim.h . When IO start and finish events are processed, their parameters are written out to a file that is then loaded in by Hyaline Drive. -------------- Instructions: -------------- 1) Hack disksim, adding the output lines to disksim_simulate_event 2) Run a disksim simulation, and capture output to a file. # ./disksim ... > outfile.txt 3) Manually(for now) create a disk parameter file (*.disk) according to specifications below. 4) Run Hyaline drive on the disk params and request file (./diskview disk.disk outfile.txt) The executable takes 2 arguments: argv[1]: the first is the disk model (according to specs below) argv[2]: the second is the list of requests in time (specs also below) ------------------------ Compilation from source: ------------------------ Hyaline Drive has been written in ANSI C and depends on the glut and OpenGL libraries. The Windows version has been built on top of Cygwin, for convenient porting. In Cygwin: $ cd diskview $ make $ ./src/diskview disk1.disk requests.txt --------------------------- File Format Specifications: --------------------------- .disk file format(ASCII): # comment lines begin with '#' and are ignored zones[int] platters[int] rpm[int] zone0-tracks[int] zone0-sectors/track[int] zone0-transferrate[float] zone1-tracks[int] zone1-sectors/track[int] zone1-transferrate[float] ... # One line per zone, expects as manyu as indicated above zoneN-tracks[int] zoneN-sectors/track[int] zoneN-transferrate[float] request file format(ASCII): timestamp(millis)[int]: start_sector[int]-end_sector[int] --------------- Changelog/Notes --------------- v0.1.1: Apr 6 2004 Fixed the removal of past requests from the queue. Now, requests are heated and serviced instantaneously AT their timestamp. They are removed when they have fully cooled and are in the past. DEPRECATED: the timestep functions and their moving of the disk head. if they are kept around, itll be only to provide a semi-reasonable value for head location. Disksim will take care of all the request timing - we may need to record request finished events as well. Added adjustable platter spread - and = keys. Neat feature to add: highlight one particular surface, either dim or dont draw the rest. - toggleable. Spare tracks: something to keep track of Slips too?? New strategy: Dont keep track of every block on the disk... Keep a list of requests and draw them as they are serviced. Remove them once the are old enough, from the front forwards. Add heat to request struct. Better to move the sin/cos math out of the draw loop... store the actual locations of the requests with the requests themselves? costs some space but will undoubtedly improve drawing time... display lists might do so even more - later. -------------------------------------- disksim files to watch: disksim.c - line 722 void disksim_simulate_event (int num) put the print here disksim_global.h - event type disksim_iosim.h - #defines --------------------------------------