<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi,<div><br></div><div>I am using the Cachemem module in the DiskSim 4.0 currently. The simulations run very well and obtain some reasonable results under most traces. However, for some traces, with a larger cache size, the "IOdriver Response time average" will also increase. It looks counter-intuitive. In my test, I used the simpledisk module as the storage device, and configured a cachemem module at the controller layer, atop the simpledisk. The traces I used is the MSR Cambridge traces, which can be downloaded from the URL: <a href="http://iotta.snia.org/traces/list/Subtrace?parent=MSR+Cambridge+Traces">http://iotta.snia.org/traces/list/Subtrace?parent=MSR+Cambridge+Traces</a>. To support the MSR traces, I modified the original DiskSim-4.0 source code to support this type of traces, and made requests' addresses and lengths aligned to 4KB. Because the traces are very IO-intensive, I changed the MAX_QUEUE_LENGTH value from 10000 to 100000 in the disksim_logorg.c. When I ran the simulation with the different cache sizes (2MB, 4MB, 8MB, 16MB, 32MB, 64MB, 128MB) under the src2_2.csv trace, the results as follows:</div><div><div>2MB_simpledisk_src2_2.outv:IOdriver Response time average: 32.755975</div><div>4MB_simpledisk_src2_2.outv:IOdriver Response time average: 30.813907</div><div>8MB_simpledisk_src2_2.outv:IOdriver Response time average: 31.827948</div><div>16MB_simpledisk_src2_2.outv:IOdriver Response time average: 38.167345</div><div>32MB_simpledisk_src2_2.outv:IOdriver Response time average: 60.471973</div><div>64MB_simpledisk_src2_2.outv:IOdriver Response time average: 100.896662</div></div><div>128MB_simpledisk_src2_2.outv:IOdriver Response time average: 157.491571</div><div><br></div><div>I am wondering whether there is something wrong with my configuration file or anything else. Any help or clue is highly appreciated. </div><div><br></div><div>Thanks,</div><div><br></div><div>BTW, the detailed configuration file I used is as follows:</div><div><br></div><div><div><div><div>disksim_global Global { </div><div>Init Seed = 42,</div><div>Real Seed = 42,</div><div># Statistic warm-up period = 1000 I/Os,</div><div>Stat definition file = statdefs</div><div><br></div><div>}</div><div><br></div><div>disksim_stats Stats {</div><div>iodriver stats = disksim_iodriver_stats {</div><div>Print driver size stats = 1,</div><div>Print driver locality stats = 1,</div><div>Print driver blocking stats = 1,</div><div>Print driver interference stats = 1,</div><div>Print driver queue stats = 1,</div><div>Print driver crit stats = 1,</div><div>Print driver idle stats = 1,</div><div>Print driver intarr stats = 1,</div><div>Print driver streak stats = 1,</div><div>Print driver stamp stats = 1,</div><div>Print driver per-device stats = 1 },</div><div>bus stats = disksim_bus_stats {</div><div>Print bus idle stats = 1,</div><div>Print bus arbwait stats = 1 },</div><div>ctlr stats = disksim_ctlr_stats {</div><div>Print controller cache stats = 1,</div><div>Print controller size stats = 1,</div><div>Print controller locality stats = 1,</div><div>Print controller blocking stats = 1,</div><div>Print controller interference stats = 1,</div><div>Print controller queue stats = 1,</div><div>Print controller crit stats = 1,</div><div>Print controller idle stats = 1,</div><div>Print controller intarr stats = 1,</div><div>Print controller streak stats = 1,</div><div>Print controller stamp stats = 1,</div><div>Print controller per-device stats = 1 },</div><div>device stats = disksim_device_stats {</div><div>Print device queue stats = 1,</div><div>Print device crit stats = 1,</div><div>Print device idle stats = 1,</div><div>Print device intarr stats = 1,</div><div>Print device size stats = 1,</div><div>Print device seek stats = 1,</div><div>Print device latency stats = 1,</div><div>Print device xfer stats = 1,</div><div>Print device acctime stats = 1,</div><div>Print device interfere stats = 1,</div><div>Print device buffer stats = 1 },</div><div>process flow stats = disksim_pf_stats {</div><div>Print per-process stats = 1,</div><div>Print per-CPU stats = 1,</div><div>Print all interrupt stats = 1,</div><div>Print sleep stats = 1</div><div>}</div><div>} # end of stats block</div><div><br></div><div><br></div><div>disksim_iodriver DRIVER0 {</div><div>type = 1,</div><div>Constant access time = 0.0,</div><div> Scheduler = disksim_ioqueue {</div><div> Scheduling policy = 1,</div><div> Cylinder mapping strategy = 0,</div><div> Write initiation delay = 0.0,</div><div> Read initiation delay = 0.0,</div><div> Sequential stream scheme = 0,</div><div> Maximum concat size = 0,</div><div> Overlapping request scheme = 0,</div><div> Sequential stream diff maximum = 0,</div><div> Scheduling timeout scheme = 0,</div><div> Timeout time/weight = 0,</div><div> Timeout scheduling = 0,</div><div> Scheduling priority scheme = 0,</div><div> Priority scheduling = 0</div><div> }, # end of Scheduler</div><div> Use queueing in subsystem = 1</div><div>} # end of DRV0 spec</div><div><br></div><div>disksim_bus BUS0 {</div><div>type = 2,</div><div>Arbitration type = 1,</div><div>Arbitration time = 0.001,</div><div>Read block transfer time = 0.0016276,</div><div>Write block transfer time = 0.0016276,</div><div>Print stats = 0</div><div>} # end of BUS0 spec</div><div><br></div><div>disksim_bus BUS1 {</div><div>type = 1,</div><div>Arbitration type = 1,</div><div>Arbitration time = 0.0,</div><div>Read block transfer time = 0.0,</div><div>Write block transfer time = 0.0,</div><div>Print stats = 1</div><div>} # end of BUS1 spec</div><div><br></div><div>disksim_ctlr CTLR0 {</div><div>type = 3,</div><div>Scale for delays = 0.0,</div><div>Bulk sector transfer time = 0.0,</div><div>Maximum queue length = 0,</div><div>Print stats = 1,</div><div>Scheduler = disksim_ioqueue {</div><div> Scheduling policy = 1,</div><div> Cylinder mapping strategy = 0,</div><div> Write initiation delay = 0.0,</div><div> Read initiation delay = 0.0,</div><div> Sequential stream scheme = 0,</div><div> Maximum concat size = 0,</div><div> Overlapping request scheme = 0,</div><div> Sequential stream diff maximum = 0,</div><div> Scheduling timeout scheme = 0,</div><div> Timeout time/weight = 0,</div><div> Timeout scheduling = 0,</div><div> Scheduling priority scheme = 0,</div><div> Priority scheduling = 0</div><div>}, # end of ioqueue spec </div><div>Cache = disksim_cachemem { </div><div> Cache size = 65536,</div><div> SLRU segments = [ 1.0 ],</div><div> Line size = 8,</div><div> Bit granularity = 1,</div><div> Lock granularity = 8,</div><div> Shared read locks = 0,</div><div> Max request size = 0,</div><div> Replacement policy = 2,</div><div> Allocation policy = 0,</div><div> Write scheme = 3,</div><div> Flush policy = 0,</div><div> Flush period = 0.0,</div><div> Flush idle delay = -1.0,</div><div> Flush max line cluster = 32,</div><div> Read prefetch type = 0,</div><div> Write prefetch type = 0,</div><div> Line-by-line fetches = 0,</div><div> Max gather = 31</div><div>}, # end of cachemem spec </div><div>Max per-disk pending count = 1</div><div>} # end of CTLR0 spec</div><div><br></div><div><br></div><div><br></div><div>disksim_simpledisk SD0 {</div><div> Block count = 67108864,</div><div> Access time = 1.0,</div><div> Command overhead = 0.0,</div><div> Bus transaction latency = 0.0,</div><div> Bulk sector transfer time = 0.0,</div><div> Never disconnect = 0,</div><div> Print stats = 1,</div><div> Max queue length = 1,</div><div> Scheduler = disksim_ioqueue {</div><div> Scheduling policy = 1,</div><div> Cylinder mapping strategy = 0,</div><div> Write initiation delay = 0.0,</div><div> Read initiation delay = 0.0,</div><div> Sequential stream scheme = 0,</div><div> Maximum concat size = 0,</div><div> Overlapping request scheme = 0,</div><div> Sequential stream diff maximum = 0,</div><div> Scheduling timeout scheme = 0,</div><div> Timeout time/weight = 0,</div><div> Timeout scheduling = 0,</div><div> Scheduling priority scheme = 0,</div><div> Priority scheduling = 0</div><div> }</div><div>} # end of SD0 spec</div><div><br></div><div><br></div><div># HP_C3323A</div><div>#source hp_c3323a.diskspecs</div><div><br></div><div># component instantiation</div><div>instantiate [ statfoo ] as Stats</div><div>instantiate [ bus0 ] as BUS0</div><div>instantiate [ bus1 ] as BUS1</div><div>instantiate [ driver0 ] as DRIVER0</div><div>instantiate [ ctlr0 ] as CTLR0</div><div>instantiate [ disk0 ] as SD0</div><div><br></div><div># system topology</div><div>topology disksim_iodriver driver0 [</div><div> disksim_bus bus0 [ </div><div> disksim_ctlr ctlr0 [ </div><div> disksim_bus bus1 [ </div><div> disksim_simpledisk disk0 []</div><div> # end of bus1</div><div> ]</div><div> # end of ctlr0</div><div> ]</div><div> # end of bus0</div><div> ]</div><div> # end of system topology</div><div>]</div><div><br></div><div># no syncsets</div><div><br></div><div>disksim_logorg org0 {</div><div> Addressing mode = Parts,</div><div> Distribution scheme = Asis,</div><div> Redundancy scheme = Noredun,</div><div> devices = [ disk0 ],</div><div> Stripe unit = 67108864,</div><div> Synch writes for safety = 0,</div><div> Number of copies = 2,</div><div> Copy choice on read = 6,</div><div> RMW vs. reconstruct = 0.5,</div><div> Parity stripe unit = 64,</div><div> Parity rotation type = 1,</div><div> Time stamp interval = 0.000000,</div><div> Time stamp start time = 60000.000000,</div><div> Time stamp stop time = 10000000000.000000,</div><div> Time stamp file name = stamps</div><div>} # end of logorg org0 spec</div><div><br></div><div>disksim_pf Proc {</div><div> Number of processors = 1,</div><div> Process-Flow Time Scale = 1.0</div><div>} # end of process flow spec</div><div><br></div><div>disksim_synthio Synthio {</div><div> Number of I/O requests to generate = 100000,</div><div> Maximum time of trace generated = 5000.0,</div><div> System call/return with each request = 0,</div><div> Think time from call to request = 0.0,</div><div> Think time from request to return = 0.0,</div><div>Generators = [</div><div>disksim_synthgen { # generator 0 </div><div> Storage capacity per device = 67108864,</div><div> devices = [ disk0 ], </div><div> Blocking factor = 8,</div><div> Probability of sequential access = 0.2,</div><div> Probability of local access = 1.0,</div><div> Probability of read access = 0.66,</div><div> Probability of time-critical request = 0.0,</div><div> Probability of time-limited request = 0.0,</div><div> Time-limited think times = [ normal, 0.0, 0.0 ],</div><div> General inter-arrival times = [ exponential, 0.0, 5.0 ],</div><div> Sequential inter-arrival times = [ exponential, 0.0, 5.0 ],</div><div> Local inter-arrival times = [ exponential, 0.0, 5.0 ],</div><div> Local distances = [ normal, 0.0, 40000.0 ],</div><div> Sizes = [ exponential, 0.0, 4.0 ]</div><div>} # end of generator 0 </div><div>] # end of generator list </div><div>} # end of synthetic workload spec</div><div><br></div><div>Lei</div></div></div><div><br></div></div></body></html>