From ykwok2 at miners.utep.edu Fri Feb 1 17:28:58 2008 From: ykwok2 at miners.utep.edu (Yipkei Kwok) Date: Fri, 01 Feb 2008 15:28:58 -0700 Subject: [Disksim-users] I/O driver q-time differences between splitted requests in RAID0 Message-ID: <47A39D2A.5000701@miners.utep.edu> 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 ******************************************** From ykwok2 at miners.utep.edu Tue Feb 5 17:24:09 2008 From: ykwok2 at miners.utep.edu (Yipkei Kwok) Date: Tue, 05 Feb 2008 15:24:09 -0700 Subject: [Disksim-users] Disk Transfer Time questions Message-ID: <47A8E209.3060005@miners.utep.edu> Hi, Question: 1) Transfer time is longer than expected. Why? Configuration - I/O driver (FCFS) - CTLR (FCFS) - Disk (IBM 18es, prefetching/cache disabled, FCFS) Read transfer time: BUS (between CTLR and disk): .0512ms Bulk sector transfer time: CTLR: 0.0ms disk: .101ms Request size: 4 blocks With 1 disk, the "Disk Transfer time average" is 25.05ms. Question 1) Transfer time is longer than expected. Why? Below is quote from the user manual. "This specifies the time for the disk to transfer a single 512-byte block over the bus. Recall that this value is compared with the corresponding bus and controller block transfer values to determine the actual transfer time (i.e., the maximum of the three values)." Disk has the max transfer time (.101ms) per block. but, .101ms * 4 = .404 ms << 25.05ms, where 4 is the request size. Does the transfer time include any other factor which makes the result that big? 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 ******************************************** From disksim-users at ece.cmu.edu Thu Feb 28 19:13:22 2008 From: disksim-users at ece.cmu.edu (disksim-users at ece.cmu.edu) Date: Thu, 28 Feb 2008 19:13:22 -0500 (EST) Subject: [Disksim-users] Save Up to 70% Message-ID: <20080229141331.5467.qmail@ppp-124-121-187-221.revip2.asianet.co.th> An HTML attachment was scrubbed... URL: