aboutsummaryrefslogtreecommitdiffstats
path: root/gen/color.py
diff options
context:
space:
mode:
Diffstat (limited to 'gen/color.py')
-rw-r--r--gen/color.py10
1 files changed, 6 insertions, 4 deletions
diff --git a/gen/color.py b/gen/color.py
index 8184b8b..46ec8dc 100644
--- a/gen/color.py
+++ b/gen/color.py
@@ -29,19 +29,22 @@ class BlockColorScheme(ColorScheme):
29 if self.way_first: 29 if self.way_first:
30 # Way first means maximize ways 30 # Way first means maximize ways
31 pages_per_color = min(self.ways, pages_needed) 31 pages_per_color = min(self.ways, pages_needed)
32 colors_per_task = int(ceil(pages_needed/pages_per_color)) 32 colors_per_task = int(ceil(float(pages_needed)/pages_per_color))
33 else: 33 else:
34 # Color first means maximize colors 34 # Color first means maximize colors
35 colors_per_task = min(self.colors, pages_needed) 35 colors_per_task = min(self.colors, pages_needed)
36 pages_per_color = int(ceil(pages_needed/colors_per_task)) 36 pages_per_color = int(ceil(float(pages_needed)/colors_per_task))
37 37
38 curr_color = 0 38 curr_color = 0
39 for cpu, tasks in cpus.iteritems(): 39 for cpu, tasks in cpus.iteritems():
40 # All tasks on a CPU have the same coloring scheme 40 # All tasks on a CPU have the same coloring scheme
41 cpu_colors = defaultdict(int) 41 cpu_colors = defaultdict(int)
42 for _ in xrange(colors_per_task): 42 for _ in xrange(colors_per_task):
43 curr_color = (curr_color + 1) % self.colors
44 cpu_colors[curr_color] = pages_per_color 43 cpu_colors[curr_color] = pages_per_color
44 curr_color = (curr_color + 1) % self.colors
45
46 if sum(cpu_colors.values()) < pages_needed:
47 raise Exception("Failed to block color cpu, %s" % cpu_colors)
45 48
46 for t in tasks: 49 for t in tasks:
47 t.colors = cpu_colors 50 t.colors = cpu_colors
@@ -80,7 +83,6 @@ class EvilColorScheme(ColorScheme):
80 for t in tasks: 83 for t in tasks:
81 t.colors = colors 84 t.colors = colors
82 85
83
84INFO_FIELDS = ['cache', 'line', 'page', 'ways', 'sets', 'colors'] 86INFO_FIELDS = ['cache', 'line', 'page', 'ways', 'sets', 'colors']
85INFO_PROC = '/proc/sys/litmus/color/cache_info' 87INFO_PROC = '/proc/sys/litmus/color/cache_info'
86 88