[Disksim-users] System Level Simulation

Peter Macko pmacko at eecs.harvard.edu
Sun Dec 11 22:57:07 EST 2011


Hi,

Yes, this makes sense. The problem with the syssim_driver.c example is that all requests are processed synchronously, and there is only one outstanding request at the time.

You can interleave calls to disksim_interface_request_arrive() and disksim_interface_internal_event() in such way so that there are multiple outstanding requests at any time. Just make sure that the timestamps in your calls to these two functions are monotonically increasing. Going back to the syssim_driver example, if you want to run a second I/O request at time t while the first one is still running, wait until you get (now <= t) && (t < next_event) in the "while(next_event >= 0)" loop and then make the call to disksim_interface_request_arrive() using t as a timestamp. (If the first request finishes before the time t, start it as usual.)

I hope this makes sense...

-Peter


On Dec 11, 2011, at 6:00 PM, kolla purushotham wrote:

> Peter & Anjo,
> 
> Thanks for the reply guys. This is exactly what i am doing (suing syssim_driver.c). The example gives a way of creating some random requests, instead of that I have created the request from a trace file (the same trace file which i used on the "storage level disksim simulation"). I am using the same parameters for both the simulations, but getting different results.
> 
> I didn't understand the complete post by Anjo. However, his clue on the way system level simulation is going on makes me think that the example in the syssim_driver.c is modeled more or less like a closed system (a request is added using the  disksim_interface_request_arrive() and then is allowed to process completely using  disksim_interface_internal_event() without adding any new requests to the queue).
> 
> And I think this is what is explained here https://sos.ece.cmu.edu/pipermail/disksim-users/2007-September/000214.html
> 
> Please let me know if this makes any sense and in the mean time i will try to change the syssim_driver and see if i can make any progress. I once again thank you guys for your time. 
> 
> Message: 2
> Date: Sat, 10 Dec 2011 01:17:54 -0500
> From: Peter Macko <pmacko at eecs.harvard.edu>
> Subject: Re: [Disksim-users] Using Disksim
> To: Ricardo Rey <ricardoreyyy at gmail.com>
> Cc: disksim-users at ece.cmu.edu
> Message-ID: <AA2BEA77-1A51-40DD-8F2F-78F73BE88880 at eecs.harvard.edu>
> Content-Type: text/plain; charset=iso-8859-1
> 
> Hi,
> 
> There is a very simple, yet complete, example that is directly distributed as a part of the DiskSim source code - it's src/syssim_driver.c. It shows you how you can run DiskSim from your C code and pass to it your own requests one I/O request at the time.
> 
> In short, you need to specify a .parv file (such as any one of those in the valid/ directory) and an output file when you initialize DiskSim using disksim_interface_initialize(), and then you can submit your own I/O requests using disksim_interface_request_arrive() as shown in the example. The only catch is that you would need to make additional calls to disksim_interface_internal_event(), but that's all shown in the example.
> 
> To run the example, just compile DiskSim as usual, and then you can run something like "src/syssim valid/hp_c2490a.parv output.txt 10000" from the disksim/ directory.
> 
> I hope this helps.
> 
> Best,
> 
> -Peter
> 
> 
> 
> 
> Message: 3
> Date: Sat, 10 Dec 2011 13:05:44 +0100
> From: vahldiek at mpi-sws.org
> Subject: Re: [Disksim-users] System Level Simulation
> To: "kolla purushotham" <kollapurushotham at gmail.com>
> Cc: freesuraj at gmail.com, disksim-users at ece.cmu.edu
> Message-ID:
>        <5ce977e4a056681b9ce9b215761c59ac.squirrel at mail.mpi-sws.org>
> Content-Type: text/plain;charset=iso-8859-15
> 
> Hi,
> 
> I have seen the behavior before and studied the execution of the syssim.
> you will see differences at the level of the disksim_diskctlr. These
> differences come from an issue within the current syssim implementation in
> which the following happens:
> 1) a request is inserted into disksim
> 2) the request is handled
> 3) the method to report completion is called
> 
> Until now everything seems fine, if the next request would immediately
> start after the request completion method is called. Unfortunately this is
> not the case, the syssim stays within the loop processing disksim events.
> /* Process events until this I/O is completed */
> while(next_event >= 0) {
>  now = next_event;
>  next_event = -1;
>  disksim_interface_internal_event(disksim, now, 0);
> }
> 
> Why is this the case? The request is fully processed so there shouldn't be
> any events within the system, right?
> Disksim adds an event automatically after every request to continue
> reading after the request is over. This is done at the disksim_diskctlr
> level and continues until the segment storing the request is full.
> 
> For me this meant a difference in completion time and next starting time
> of around 0.5ms.
> 
> To address the issue I think I added && completion == 0 to the while loop.
> This should stop the loop when the request is completed. All other events
> will not be taken into account then. You may run into trouble, if you
> insert multiple requests starting nearly at the same time.
> 
> I hope this helps...
> 
> Regards,
> Anjo
> 
> > Hi,
> >
> > I am doing a simulation using disksim as a blackbox (using Disksim in
> > system level simulation as suggested in page 44 of the manual). Here is
> > the
> > situation:
> >
> > I am using the same trace and .parv files to do an interface simulation
> > and
> > an internal simulation. Both of them are giving different results. When I
> > observed the output event files I found that the event sequence is a lot
> > different in both the scenarios and I have no idea why it is happening so.
> > My doubt is can this happen, given that I am using the same input?
> >
> > Any help will be greatly appreciated.
> >
> > --
> > Regards,
> > Purushotham
> > _______________________________________________
> > Disksim-users mailing list
> > Disksim-users at ece.cmu.edu
> > https://sos.ece.cmu.edu/mailman/listinfo/disksim-users
> >
> 
> 
> 
> -- 
> Regards,
> Purushotham

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.andrew.cmu.edu/pipermail/disksim-users/attachments/20111211/4b47ef7f/attachment.html>


More information about the Disksim-users mailing list