[Disksim-users] A problem in using the Cachemem module
Lei Tian
leitian.hust at gmail.com
Thu Oct 21 15:31:27 EDT 2010
Hi,
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: http://iotta.snia.org/traces/list/Subtrace?parent=MSR+Cambridge+Traces. 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:
2MB_simpledisk_src2_2.outv:IOdriver Response time average: 32.755975
4MB_simpledisk_src2_2.outv:IOdriver Response time average: 30.813907
8MB_simpledisk_src2_2.outv:IOdriver Response time average: 31.827948
16MB_simpledisk_src2_2.outv:IOdriver Response time average: 38.167345
32MB_simpledisk_src2_2.outv:IOdriver Response time average: 60.471973
64MB_simpledisk_src2_2.outv:IOdriver Response time average: 100.896662
128MB_simpledisk_src2_2.outv:IOdriver Response time average: 157.491571
I am wondering whether there is something wrong with my configuration file or anything else. Any help or clue is highly appreciated.
Thanks,
BTW, the detailed configuration file I used is as follows:
disksim_global Global {
Init Seed = 42,
Real Seed = 42,
# Statistic warm-up period = 1000 I/Os,
Stat definition file = statdefs
}
disksim_stats Stats {
iodriver stats = disksim_iodriver_stats {
Print driver size stats = 1,
Print driver locality stats = 1,
Print driver blocking stats = 1,
Print driver interference stats = 1,
Print driver queue stats = 1,
Print driver crit stats = 1,
Print driver idle stats = 1,
Print driver intarr stats = 1,
Print driver streak stats = 1,
Print driver stamp stats = 1,
Print driver per-device stats = 1 },
bus stats = disksim_bus_stats {
Print bus idle stats = 1,
Print bus arbwait stats = 1 },
ctlr stats = disksim_ctlr_stats {
Print controller cache stats = 1,
Print controller size stats = 1,
Print controller locality stats = 1,
Print controller blocking stats = 1,
Print controller interference stats = 1,
Print controller queue stats = 1,
Print controller crit stats = 1,
Print controller idle stats = 1,
Print controller intarr stats = 1,
Print controller streak stats = 1,
Print controller stamp stats = 1,
Print controller per-device stats = 1 },
device stats = disksim_device_stats {
Print device queue stats = 1,
Print device crit stats = 1,
Print device idle stats = 1,
Print device intarr stats = 1,
Print device size stats = 1,
Print device seek stats = 1,
Print device latency stats = 1,
Print device xfer stats = 1,
Print device acctime stats = 1,
Print device interfere stats = 1,
Print device buffer stats = 1 },
process flow stats = disksim_pf_stats {
Print per-process stats = 1,
Print per-CPU stats = 1,
Print all interrupt stats = 1,
Print sleep stats = 1
}
} # end of stats block
disksim_iodriver DRIVER0 {
type = 1,
Constant access time = 0.0,
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 = 0,
Timeout scheduling = 0,
Scheduling priority scheme = 0,
Priority scheduling = 0
}, # end of Scheduler
Use queueing in subsystem = 1
} # end of DRV0 spec
disksim_bus BUS0 {
type = 2,
Arbitration type = 1,
Arbitration time = 0.001,
Read block transfer time = 0.0016276,
Write block transfer time = 0.0016276,
Print stats = 0
} # end of BUS0 spec
disksim_bus BUS1 {
type = 1,
Arbitration type = 1,
Arbitration time = 0.0,
Read block transfer time = 0.0,
Write block transfer time = 0.0,
Print stats = 1
} # end of BUS1 spec
disksim_ctlr CTLR0 {
type = 3,
Scale for delays = 0.0,
Bulk sector transfer time = 0.0,
Maximum queue length = 0,
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 = 0,
Timeout scheduling = 0,
Scheduling priority scheme = 0,
Priority scheduling = 0
}, # end of ioqueue spec
Cache = disksim_cachemem {
Cache size = 65536,
SLRU segments = [ 1.0 ],
Line size = 8,
Bit granularity = 1,
Lock granularity = 8,
Shared read locks = 0,
Max request size = 0,
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 = 32,
Read prefetch type = 0,
Write prefetch type = 0,
Line-by-line fetches = 0,
Max gather = 31
}, # end of cachemem spec
Max per-disk pending count = 1
} # end of CTLR0 spec
disksim_simpledisk SD0 {
Block count = 67108864,
Access time = 1.0,
Command overhead = 0.0,
Bus transaction latency = 0.0,
Bulk sector transfer time = 0.0,
Never disconnect = 0,
Print stats = 1,
Max queue length = 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 = 0,
Timeout scheduling = 0,
Scheduling priority scheme = 0,
Priority scheduling = 0
}
} # end of SD0 spec
# HP_C3323A
#source hp_c3323a.diskspecs
# component instantiation
instantiate [ statfoo ] as Stats
instantiate [ bus0 ] as BUS0
instantiate [ bus1 ] as BUS1
instantiate [ driver0 ] as DRIVER0
instantiate [ ctlr0 ] as CTLR0
instantiate [ disk0 ] as SD0
# system topology
topology disksim_iodriver driver0 [
disksim_bus bus0 [
disksim_ctlr ctlr0 [
disksim_bus bus1 [
disksim_simpledisk disk0 []
# end of bus1
]
# end of ctlr0
]
# end of bus0
]
# end of system topology
]
# no syncsets
disksim_logorg org0 {
Addressing mode = Parts,
Distribution scheme = Asis,
Redundancy scheme = Noredun,
devices = [ disk0 ],
Stripe unit = 67108864,
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
disksim_pf Proc {
Number of processors = 1,
Process-Flow Time Scale = 1.0
} # end of process flow spec
disksim_synthio Synthio {
Number of I/O requests to generate = 100000,
Maximum time of trace generated = 5000.0,
System call/return with each request = 0,
Think time from call to request = 0.0,
Think time from request to return = 0.0,
Generators = [
disksim_synthgen { # generator 0
Storage capacity per device = 67108864,
devices = [ disk0 ],
Blocking factor = 8,
Probability of sequential access = 0.2,
Probability of local access = 1.0,
Probability of read access = 0.66,
Probability of time-critical request = 0.0,
Probability of time-limited request = 0.0,
Time-limited think times = [ normal, 0.0, 0.0 ],
General inter-arrival times = [ exponential, 0.0, 5.0 ],
Sequential inter-arrival times = [ exponential, 0.0, 5.0 ],
Local inter-arrival times = [ exponential, 0.0, 5.0 ],
Local distances = [ normal, 0.0, 40000.0 ],
Sizes = [ exponential, 0.0, 4.0 ]
} # end of generator 0
] # end of generator list
} # end of synthetic workload spec
Lei
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.andrew.cmu.edu/pipermail/disksim-users/attachments/20101021/a1774eed/attachment.html>
More information about the Disksim-users
mailing list