From ykwok2 at miners.utep.edu Sun Feb 26 23:16:49 2012 From: ykwok2 at miners.utep.edu (Yipkei Kwok) Date: Sun, 26 Feb 2012 21:16:49 -0700 Subject: [Disksim-users] Requests stripped at I/O driver for RAID-0 Message-ID: Hi, On real hardware, requests are supposed to be stripped in the RAID controller for a RAID-0 configuration. However, it is not the case in DiskSim 4.0. When a request arrives the I/O driver, iodriver_request() calls logorg_maprequest() to divide the request into stripes. Then, iodriver_request() calls handle_new_request() to schedule each stripe to the corresponding I/O-driver queue. The number of I/O driver queues equals the number of disks and each stripe is sent to the queue corresponding to the disk that is going to service the stripe. 1. Is it a problem with my parameter file? I copied below the parameters of the I/O driver, controller, topology, and logical organization below. I am attaching the entire parameter file in this email but I am not sure if the mailing list server allows attachments. 2. If it is not because of a mistake in my parameter file, is there any reason when DiskSim is designed this way? Please help. Thank you. disksim_iodriver DRIVER0 { type = 1, Constant access time = 0.0, Scheduler = disksim_ioqueue { Scheduling policy = 1, Cylinder mapping strategy = 1, Write initiation delay = 0.0, Read initiation delay = 0.0, Sequential stream scheme = 0, Maximum concat size = 0, Overlapping request scheme = 0, Sequential stream diff maximum = 0, Scheduling timeout scheme = 0, Timeout time/weight = 30, Timeout scheduling = 3, Scheduling priority scheme = 0, Priority scheduling = 3 }, # end of Scheduler Use queueing in subsystem = 1 } # end of DRV0 spec disksim_ctlr CTLR0 { type = 3, Scale for delays = 0.0, Bulk sector transfer time = 0.0, Maximum queue length = 2147483646, Print stats = 1, Scheduler = disksim_ioqueue { Scheduling policy = 1, Cylinder mapping strategy = 0, Write initiation delay = 0.0, Read initiation delay = 0.0, Sequential stream scheme = 0, Maximum concat size = 0, Overlapping request scheme = 0, Sequential stream diff maximum = 0, Scheduling timeout scheme = 0, Timeout time/weight = 6, Timeout scheduling = 4, Scheduling priority scheme = 0, Priority scheduling = 4 }, # end of ioqueue spec Cache = disksim_cachemem { Cache size = 0, SLRU segments = [ 1.0 ], Line size = 64, Bit granularity = 1, Lock granularity = 64, Shared read locks = 1, Max request size = 512, Replacement policy = 2, Allocation policy = 0, Write scheme = 3, Flush policy = 0, Flush period = 0.0, Flush idle delay = -1.0, Flush max line cluster = 8, Read prefetch type = 0, Write prefetch type = 0, Line-by-line fetches = 0, Max gather = 7 }, # end of cachemem spec Max per-disk pending count = 16 } # end of CTLR0 spec # system topology topology disksim_iodriver driver0 [ disksim_bus bus0 [ disksim_ctlr ctlr0 [ disksim_bus bus1 [ disksim_disk disk0 [], disksim_disk disk1 [] ] # end of bus1 ] # end of ctlr0 ] # end of bus0 ] # end of system topology disksim_logorg org0 { Addressing mode = Array, Distribution scheme = Striped, Redundancy scheme = Noredun, devices = [ disk0 .. disk1 ], Stripe unit = 1, Synch writes for safety = 0, Number of copies = 2, Copy choice on read = 6, RMW vs. reconstruct = 0.5, Parity stripe unit = 64, Parity rotation type = 1, Time stamp interval = 0.000000, Time stamp start time = 60000.000000, Time stamp stop time = 10000000000.000000, Time stamp file name = stamps } # end of logorg org0 spec -------------- next part -------------- A non-text attachment was scrubbed... Name: 20120226.parv Type: application/octet-stream Size: 9050 bytes Desc: not available URL: From ganger at ece.cmu.edu Sun Feb 26 23:46:39 2012 From: ganger at ece.cmu.edu (Greg Ganger) Date: Sun, 26 Feb 2012 23:46:39 -0500 (EST) Subject: [Disksim-users] Requests stripped at I/O driver for RAID-0 In-Reply-To: References: Message-ID: You understand it correctly. You can thinking of it like a striping device driver (as provided in most OSs), or you can also think of the driver and the controller together as the controller (with 0 for the appropriate delays, the behavior would be the same). As for why there aren't logical organizations in the controllers... was on the to-do list, but never at the top of it. Best luck, Greg On Sun, 26 Feb 2012, Yipkei Kwok wrote: > Hi, > > On real hardware, requests are supposed to be stripped in the RAID > controller for a RAID-0 configuration. However, it is not the case in > DiskSim 4.0. When a request arrives the I/O driver, iodriver_request() > calls logorg_maprequest() to divide the request into stripes. Then, > iodriver_request() calls handle_new_request() to schedule each stripe > to the corresponding I/O-driver queue. The number of I/O driver queues > equals the number of disks and each stripe is sent to the queue > corresponding to the disk that is going to service the stripe. > > 1. Is it a problem with my parameter file? I copied below the > parameters of the I/O driver, controller, topology, and logical > organization below. I am attaching the entire parameter file in this > email but I am not sure if the mailing list server allows attachments. > > 2. If it is not because of a mistake in my parameter file, is there > any reason when DiskSim is designed this way? > > Please help. Thank you. > > > > > disksim_iodriver DRIVER0 { > type = 1, > Constant access time = 0.0, > Scheduler = disksim_ioqueue { > Scheduling policy = 1, > Cylinder mapping strategy = 1, > Write initiation delay = 0.0, > Read initiation delay = 0.0, > Sequential stream scheme = 0, > Maximum concat size = 0, > Overlapping request scheme = 0, > Sequential stream diff maximum = 0, > Scheduling timeout scheme = 0, > Timeout time/weight = 30, > Timeout scheduling = 3, > Scheduling priority scheme = 0, > Priority scheduling = 3 > }, # end of Scheduler > Use queueing in subsystem = 1 > } # end of DRV0 spec > > disksim_ctlr CTLR0 { > type = 3, > Scale for delays = 0.0, > Bulk sector transfer time = 0.0, > Maximum queue length = 2147483646, > Print stats = 1, > Scheduler = disksim_ioqueue { > Scheduling policy = 1, > Cylinder mapping strategy = 0, > Write initiation delay = 0.0, > Read initiation delay = 0.0, > Sequential stream scheme = 0, > Maximum concat size = 0, > Overlapping request scheme = 0, > Sequential stream diff maximum = 0, > Scheduling timeout scheme = 0, > Timeout time/weight = 6, > Timeout scheduling = 4, > Scheduling priority scheme = 0, > Priority scheduling = 4 > }, # end of ioqueue spec > Cache = disksim_cachemem { > Cache size = 0, > SLRU segments = [ 1.0 ], > Line size = 64, > Bit granularity = 1, > Lock granularity = 64, > Shared read locks = 1, > Max request size = 512, > Replacement policy = 2, > Allocation policy = 0, > Write scheme = 3, > Flush policy = 0, > Flush period = 0.0, > Flush idle delay = -1.0, > Flush max line cluster = 8, > Read prefetch type = 0, > Write prefetch type = 0, > Line-by-line fetches = 0, > Max gather = 7 > }, # end of cachemem spec > Max per-disk pending count = 16 > } # end of CTLR0 spec > > # system topology > topology disksim_iodriver driver0 [ > disksim_bus bus0 [ > disksim_ctlr ctlr0 [ > disksim_bus bus1 [ > disksim_disk disk0 [], > disksim_disk disk1 [] > ] # end of bus1 > ] # end of ctlr0 > ] # end of bus0 > ] # end of system topology > > disksim_logorg org0 { > Addressing mode = Array, > Distribution scheme = Striped, > Redundancy scheme = Noredun, > devices = [ disk0 .. disk1 ], > Stripe unit = 1, > Synch writes for safety = 0, > Number of copies = 2, > Copy choice on read = 6, > RMW vs. reconstruct = 0.5, > Parity stripe unit = 64, > Parity rotation type = 1, > Time stamp interval = 0.000000, > Time stamp start time = 60000.000000, > Time stamp stop time = 10000000000.000000, > Time stamp file name = stamps > } # end of logorg org0 spec >