[Disksim-users] A bug about "iosim Block"

ll2 at rice.edu ll2 at rice.edu
Wed Aug 8 17:03:28 EDT 2007


Hi, Ajay :

Thanks a lot for your reply and suggestion !

There are two files in "modules" directory to handle the "iosim Block",
modules/disksim_iosim_param.c, and modules/disksim_iomap_param.c.
Both of them do not initialize the "ioscale", they only initialize the
io mappings variables, such as tracedev, simdev, locScale, et..

I print "ioscale" in functions "iosim_load_map" and "disksim_iomap_loadparams"
in file "disksim_iosim.c", the value is still "1.0", not the value I input in
.parv file.

Maybe I miss something, but during runtime, the value is always "1.0". I assume
that DiskSim miss to load this value.

Thanks,

Lanyue Lu



Quoting Ajay Gulati <gulati at rice.edu>:

> Hi Lanyue,
> Not sure if you already looked at this. The following function in
> disksim_iosim.c should read the parameter.
>
> try printing in this function after the "#include ...." line to see if
> correct value is loaded.
>
>
>     424 static int iosim_load_map(struct lp_block *b, int n) {
>     425   int c;
>     426   int i = 0;
>     427   char *s = 0;
>     428
>     429
>     430 #include "modules/disksim_iomap_param.c"
>     431
>     432
> Most of the setting of parameters is done via code in modules
> sub-directory and may not be visible in src/ by using "grep". So I
> would suggest giving it a try.
> You can look at modules/disksim_iomap_param.c to see if the parameter
> is loaded correctly.
>
> -Ajay
>
> On 8/8/07, ll2 at rice.edu <ll2 at rice.edu> wrote:
> >
> > Hello everyone :
> >
> > DiskSim has a "iosim Block" in .parv file to support I/O trace time scale
> and
> > I/O mappings, et.
> >
> > Users can set "I/O trace time scale" value in "iosim block" to replay the
> trace
> > in different speed, resulting different request rate. However, I found that
> the
> > value I set is not used by DiskSim. Then I dig into the source code.
> >
> > I found in disksim_iosim.c :
> >
> > void iosim_initialize_iosim_info ()
> > {
> >    disksim->iosim_info = DISKSIM_malloc (sizeof(iosim_info_t));
> >    bzero ((char *)disksim->iosim_info, sizeof(iosim_info_t));
> >
> >    /* initializations that get remapped into iosim_info */
> >    ioscale = 1.0;    /**************LOOK HERE************/
> >    last_request_arrive = 0.0;
> >    constintarrtime = 0.0;
> > }
> >
> >
> > It means that "ioscale" is set to 1.0 by DiskSim, resulting the same speed
> as
> > the original trace, ignoring the value set by user in .parv file. And this
> value
> > is not changed in other places. I tried to change the value of "ioscale" in
> the
> > source code, then it works. For example, ioscale = 2, will make the arrival
> > time two times.
> >
> > I found DiskSim did not read the parameter file to fill this "ioscale". So,
> no
> > matter what you set for I/O trace time scale, it just use the "1.0"  in the
> > runtime.
> >
> > Does anyone else find this problem? I appreciate your suggestion and
> comments .
> >
> > Regards,
> >
> > Lanyue Lu
> >
> >
> >
> >
> > _______________________________________________
> > Disksim-users mailing list
> > Disksim-users at ece.cmu.edu
> > https://sos.ece.cmu.edu/mailman/listinfo/disksim-users
> >
>
>





More information about the Disksim-users mailing list