[Disksim-users] System Level Simulation

kolla purushotham kollapurushotham at gmail.com
Sun Dec 11 18:00:31 EST 2011


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/40cc77f4/attachment.html>


More information about the Disksim-users mailing list