ruby: Recycle latency fix for hammer
Patch allows each individual message buffer to have different recycle latencies and allows the overall recycle latency to be specified at the cmd line. The patch also adds profiling info to make sure no one processor's requests are recycled too much.
This commit is contained in:
@@ -105,6 +105,9 @@ def create_system(options, system, piobus, dma_devices):
|
||||
no_mig_atomic = not \
|
||||
options.allow_atomic_migration)
|
||||
|
||||
if options.recycle_latency:
|
||||
l1_cntrl.recycle_latency = options.recycle_latency
|
||||
|
||||
exec("system.l1_cntrl%d = l1_cntrl" % i)
|
||||
#
|
||||
# Add controllers and sequencers to the appropriate lists
|
||||
@@ -164,6 +167,9 @@ def create_system(options, system, piobus, dma_devices):
|
||||
probe_filter_enabled = \
|
||||
options.pf_on)
|
||||
|
||||
if options.recycle_latency:
|
||||
dir_cntrl.recycle_latency = options.recycle_latency
|
||||
|
||||
exec("system.dir_cntrl%d = dir_cntrl" % i)
|
||||
dir_cntrl_nodes.append(dir_cntrl)
|
||||
|
||||
@@ -186,6 +192,9 @@ def create_system(options, system, piobus, dma_devices):
|
||||
dma_cntrl.dma_sequencer.port = dma_device.dma
|
||||
dma_cntrl_nodes.append(dma_cntrl)
|
||||
|
||||
if options.recycle_latency:
|
||||
dma_cntrl.recycle_latency = options.recycle_latency
|
||||
|
||||
all_cntrls = l1_cntrl_nodes + dir_cntrl_nodes + dma_cntrl_nodes
|
||||
|
||||
return (cpu_sequencers, dir_cntrl_nodes, all_cntrls)
|
||||
|
||||
@@ -54,6 +54,9 @@ def define_options(parser):
|
||||
parser.add_option("--ruby-debug", action="store_true", default=False)
|
||||
parser.add_option("--ruby-debug-cycle", type="int", default=1)
|
||||
|
||||
parser.add_option("--recycle-latency", type="int", default=10,
|
||||
help="Recycle latency for ruby controller input buffers")
|
||||
|
||||
protocol = buildEnv['PROTOCOL']
|
||||
exec "import %s" % protocol
|
||||
eval("%s.define_options(parser)" % protocol)
|
||||
|
||||
Reference in New Issue
Block a user