[Disksim-users] some questions about using disksim4.0

Yipkei Kwok ykwok2 at miners.utep.edu
Sun Mar 4 10:05:47 EST 2012


dcjy, I would highly recommend you to try out Anjo's suggestion re:
using the "Detailed execution trace" option to obtain per-request
response time. My solution requires (pretty) extensive modifications
of the source code. I do regret that I did not learn about that
option.

Thank you very much, Anjo.

For Question 3, as I said, it is because Disksim terminates a
simulation under some conditions. In my situation, Disksim terminates
a simulation when the trace runs out of requests. I did the following
to force Disksim to not to terminate till all requests are serviced.
In getnextevent(), I commented out the line disksim->stop_sim = TRUE
(line 641, as shown below).

However, it works for my simulated configurations and I am not sure it
will work for yours (I hope so). Good luck!

 622 INLINE static event * getnextevent ()
 623 {
 624    event *curr = getfromintq();
 625    event *temp;
 626
 627    if (curr) {
 628         disksim->last_event_time = simtime;
 629
 630         #ifdef DISKSIM_DEBUG
 631         printf("DISKSIM_DEBUG: getnextevent(), last_event_time= %lf\n",
 632                 disksim->last_event_time);
 633         #endif
 634
 635       simtime = curr->time;
 636
 637       if (curr->type == NULL_EVENT) {
 638         if ((disksim->iotrace) && io_using_external_event(curr)) {
 639           if ((temp =
io_get_next_external_event(disksim->iotracefile)) ==      NULL) {
 640         #ifndef RUN_UNTIL_REQUESTS_EXHAUSTED
 641             disksim->stop_sim = TRUE;
 642         #endif
 643                 disksim->trace_exhausted = 1;
 644
 645                 #ifdef DISKSIM_DEBUG
 646                 printf("DISKSIM_DEBUG: getnextevent(), trace out
of request     s, disksim->trace_exhausted= 1\n");
 647                 #endif
 648
 649                 printf("");
 650           }


On Sun, Mar 4, 2012 at 6:43 AM, Anjo Vahldiek <vahldiek at mpi-sws.org> wrote:
> Hi,
>
> I can only help you with the first issue. Please have a look at the .parv
> file you are using.
>
> disksim_global Global {
>  Init Seed = 42,
>  Real Seed = 42,
>  Stat definition file = statdefs
>  Detailed execution trace = exectrace
> }
>
> The last option generates the information you want to know about how long
> every request took on a per request basis. It writes it into the file you
> provide as an argument.
>
> It does not include whether or not an access was cached, but you can tell
> from the time it took to process the request. If a request has 0 response
> time it is very likely that it was cached.
>
> Anjo
>
>
> On 03/04/2012 02:31 PM, 代成俊 wrote:
>>
>>
>>
>>
>> Thanks for your reply and wonderful explanation.
>>
>>>> 1,What should I do to get the response time and hitting situation of per
>>>> request?
>>>
>>> I obtained the response time by modifying the source code. When a
>>> request is serviced, disk_acctimestats() is called. I got the response
>>> time by subtracting the current timestamp (i.e. disksim->simtime) by
>>> the arrival time of the request. You may need to modify Disksim to
>>> carry the arrival time from the I/O driver down to the disk
>>>
>>> "hitting situation"? Do you mean the cache hit/miss?
>>
>> I have tried it as your said steps, but failed. disk_acctimestats() is
>> only
>> called 88733 times(100000 Requests total), and it only have access time,
>> where could I get the current timestamp? what does the meaning of "You
>> may need to modify Disksim to carry the arrival time from the I/O
>> driver down to the disk"? The arrival time should be the time arrival
>> disk?
>>
>> Overall I/O System Total Requests handled:    99997
>> Overall I/O System Requests per second:       65.231783
>> Overall I/O System Completely idle time:      534035.035583       0.348371
>> Overall I/O System Response time average:     33.897219
>> Overall I/O System Response time std.dev.:    34.852530
>> Overall I/O System Response time maximum:    335.193345
>>
>> This is part of output result of my experiment,In my opinion, the
>> "Response time" here shoud be a time range from request arriving
>> subsystem to Service completion, is is right? How can I get this
>> response time for per request?
>>
>> Could you sent me a copy of the disksim version(or source files)
>> which had been modified exactly to output the respnse time
>> for per request? Thank you very much.
>>
>> Yes, I mean cache hit/miss.
>>
>>
>>>> 3,The ascii.trace in the valid folder has 100000 requests, but when I
>>>> run disksim ascii.parv stdout ascii ascii.trace 0,
>>>> there was only 99993 requests were handled(I have modified the system
>>>> topology and iomap),Why lost seven request?
>>>
>>> as I remember from Disksim 3.0, when the trace runs out,
>>> disksim->stop_sim is set to TRUE to stop the simulation, which is
>>> before all requests are serviced. I believe that's the reason.
>>
>> I see, but what was the reason for the trace runs out? How can I avoid
>> this?
>>
>> Best wishs.
>>
>> ChengJun Dai.
>> 2012-3-4
>>
>>
>>> On Sat, Mar 3, 2012 at 7:43 PM, 代成俊<dcjy at mail.ustc.edu.cn>  wrote:
>>>>
>>>> Dear Sir(Miss):
>>>>     I am using disksim(V4.0). My work is to use disksim to simulate one
>>>> disk(SEAGATE_ST32171W) subsystem.
>>>> The system topology is just like this:
>>>>
>>>> # system topology
>>>> topology disksim_iodriver driver0 [
>>>>   disksim_bus bus0 [
>>>>      disksim_ctlr ctlr0 [
>>>>         disksim_bus bus1 [
>>>>            disksim_disk disk0 []
>>>>         ] # end of bus1
>>>>      ] # end of ctlr0
>>>>   ] # end of bus0
>>>> ] # end of system topology
>>>>
>>>> My input is a a series of requests(Request arrival time,Device
>>>> number,Block number,Request size,Request flags)
>>>> in a ascii file. The output I want to get is the response time per
>>>> request and the situation of per request
>>>> hit cache, but the disksim only output the statistic information of all
>>>> requests. so I want to consult some questions
>>>>
>>>> 1,What should I do to get the response time and hitting situation of per
>>>> request?
>>>>
>>>> 2,The default input format is a simple ASCII stream (or file),which is
>>>> the unit of "Request arrival time" and
>>>> "Request size",Seconds milliseconds or microseconds? KB or block?
>>>>
>>>> 3,The ascii.trace in the valid folder has 100000 requests, but when I
>>>> run disksim ascii.parv stdout ascii ascii.trace 0,
>>>> there was only 99993 requests were handled(I have modified the system
>>>> topology and iomap),Why lost seven request?
>>>>
>>>> Sorry for the my poor english,thank you.
>>>>
>>>> Best wishs.
>>>>
>>>> ChengJun Dai.
>>>> 2012-3-4
>>>> _______________________________________________
>>>> Disksim-users mailing list
>>>> Disksim-users at ece.cmu.edu
>>>> https://sos.ece.cmu.edu/mailman/listinfo/disksim-users
>>>>
>>>
>>>
>>> --
>>> ********************************************
>>> Yipkei Kwok
>>> Ph.D. Student
>>> Research Assistant
>>> HiPerSys Lab
>>> Department of Computer Science
>>> The University of Texas at El Paso
>>> Phone: 915 747 6433 (O)
>>> E-mail: ykwok2 at miners dot utep dot edu
>>> ********************************************
>>>
>> _______________________________________________
>> Disksim-users mailing list
>> Disksim-users at ece.cmu.edu
>> https://sos.ece.cmu.edu/mailman/listinfo/disksim-users
>
> _______________________________________________
> Disksim-users mailing list
> Disksim-users at ece.cmu.edu
> https://sos.ece.cmu.edu/mailman/listinfo/disksim-users



-- 
********************************************
Yipkei Kwok
Ph.D. Student
Research Assistant
HiPerSys Lab
Department of Computer Science
The University of Texas at El Paso
Phone: 915 747 6433 (O)
E-mail: ykwok2 at miners dot utep dot edu
********************************************




More information about the Disksim-users mailing list