[Disksim-users] I/O driver q-time differences between splitted requests in RAID0
Yipkei Kwok
ykwok2 at miners.utep.edu
Fri Feb 1 17:28:58 EST 2008
Hi,
In DiskSim, under RAID 0, each request is divided in to 2 when it
reaches the I/O driver. I believe that they should have to same I/O
driver queue time. However, I found that they are actually different in
my experiment. Can anyone explain the reason?
I am collecting per-request I/O driver queue time with the following
simplified configuration.
I/O driver
- FCFS
- only the base subqueue is used
- allow queueing in subsystem
CTLR
- FCFS
- queue length = 8
- cache disabled
topology
- RAID 0
- 2 disks
DISK
- IBM18es
- queue length = 16
- FCFS
- prefetching disabled
- cache disabled
The simple trace w./ 50 requests that I used (in ascii format).
1 0 4 4 1
2 0 8 4 1
3 0 12 4 1
4 0 16 4 1
5 0 20 4 1
6 0 24 4 1
7 0 28 4 1
8 0 32 4 1
9 0 36 4 1
10 0 40 4 1
11 0 44 4 1
12 0 48 4 1
13 0 52 4 1
14 0 56 4 1
15 0 60 4 1
16 0 64 4 1
17 0 68 4 1
18 0 72 4 1
19 0 76 4 1
20 0 80 4 1
21 0 84 4 1
22 0 88 4 1
23 0 92 4 1
24 0 96 4 1
25 0 100 4 1
26 0 104 4 1
27 0 108 4 1
28 0 112 4 1
29 0 116 4 1
30 0 120 4 1
31 0 124 4 1
32 0 128 4 1
33 0 132 4 1
34 0 136 4 1
35 0 140 4 1
36 0 144 4 1
37 0 148 4 1
38 0 152 4 1
39 0 156 4 1
40 0 160 4 1
41 0 164 4 1
42 0 168 4 1
43 0 172 4 1
44 0 176 4 1
45 0 180 4 1
46 0 184 4 1
47 0 188 4 1
48 0 192 4 1
49 0 196 4 1
50 0 200 4 1
This is how I captured the per-request I/O driver queue time
In ioqueue_get_next_request_from_subqueue(), I added a parameter to
identify is this function is serving an I/O driver, controller or a
simple disk. If it is serving an I/O driver, I record the queue time
which is passed as a parameter to stat_update() on line 2632 of
disksim_ioqueue.c
Here is how it looks like.
while (ret) {
stat_update(&queue->qtimestats, (temp->starttime - ret->time));
if(dev_type == IODRIVER) {
printf("ioqueue_get_next_request_from_subqueue, iodrv
qtime= %lf\n", (te
mp->starttime - ret->time));
}
ret = ret->next;
}
Here are parts of the result.
ioqueue_get_next_request_from_subqueue, iodrv qtime= 0.000000
ioqueue_get_next_request_from_subqueue, iodrv qtime= 0.000000
ioqueue_get_next_request_from_subqueue, iodrv qtime= 0.000000
ioqueue_get_next_request_from_subqueue, iodrv qtime= 0.000000
ioqueue_get_next_request_from_subqueue, iodrv qtime= 0.000000
ioqueue_get_next_request_from_subqueue, iodrv qtime= 0.000000
ioqueue_get_next_request_from_subqueue, iodrv qtime= 0.000000
ioqueue_get_next_request_from_subqueue, iodrv qtime= 0.000000
ioqueue_get_next_request_from_subqueue, iodrv qtime= 0.000000
ioqueue_get_next_request_from_subqueue, iodrv qtime= 9.635181
ioqueue_get_next_request_from_subqueue, iodrv qtime= 10.736181
ioqueue_get_next_request_from_subqueue, iodrv qtime= 26.344682
ioqueue_get_next_request_from_subqueue, iodrv qtime= 25.445682
ioqueue_get_next_request_from_subqueue, iodrv qtime= 41.054183
ioqueue_get_next_request_from_subqueue, iodrv qtime= 42.155183
Overall I/O System Total Requests handled: 3
System logorg #0 disk Total Requests handled: 6
IOdriver Total Requests handled: 6
IOdriver #0 device #0 Total Requests handled: 3
IOdriver #0 device #1 Total Requests handled: 3
Disk Total Requests handled: 6
Disk #0 Total Requests handled: 3
Disk #1 Total Requests handled: 3
Controller #0 devices Total Requests handled: 6
Controller #0 device #0 Total Requests handled: 3
Controller #0 device #1 Total Requests handled: 3
Since 3 requests are handled by the overall I/O system and FCFS is used,
the queue time of these 3 requests appear to be
request 1 (9.635181 & 10.736181)
request 2 (26.344682 & 25.445682)
request 3 (41.054183 & 42.155183)
Why is there an ~1ms difference between the divided requests of each
request?
Thank you very much!
Regards,
Yipkei
--
********************************************
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