[Disksim-users] running a trace without timestamps

Lei Tian leitian.hust at gmail.com
Mon Sep 19 12:30:33 EDT 2011


In general, Once Disksim is starting to handle the current request, it will prepare the next request in the trace. [see the getnextevent() function in disksim.c]

Therefore, you may try this way:

Assuming the fixed queue length is N, no matter what time the timestamps of the first N requests in the real trace are, you could change the timestamps of them with a very slight ascending order(e.g., 0.000001ms difference) in io_using_next_external_event(). In doing so, DiskSim will enqueue them into its IOdriver request queue and start to process them one by one. Once the threshold N is reached, the No. N+1 request must be given a very large timestamp (e.g., 1000000ms) to make sure this request won't be enqueued and scheduled by Disksim if any one of the last N requests is not done. When one request of the last N requests is completed, you can find the No.N+1 request [its event type is NULL_EVENT] and dequeue it from the intq queue, change its timestamp as simtime + 0.000001ms, and then enqueue it in the intq queue again. In doing so, the length of the request queue of yours is always N, and DiskSim will do the rest for you.

Just for your reference. Good Luck!

Lei

On Sep 19, 2011, at 8:55 AM, Andy Twigg wrote:

> Does anyone know an easy way to run a given trace of operations (R/W,
> offset, len) without having explicit timestamps? i.e. the requests
> enter a queue of a fixed size and the device serves the queued
> requests as quickly as possible.
> 
> I'm inclined to modify synthgen to read a trace, but I'm hoping
> there's an easier way..
> 
> Thanks,
> Andy
> _______________________________________________
> 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