diff options
Diffstat (limited to 'gen/color.py')
-rw-r--r-- | gen/color.py | 10 |
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 | |||
84 | INFO_FIELDS = ['cache', 'line', 'page', 'ways', 'sets', 'colors'] | 86 | INFO_FIELDS = ['cache', 'line', 'page', 'ways', 'sets', 'colors'] |
85 | INFO_PROC = '/proc/sys/litmus/color/cache_info' | 87 | INFO_PROC = '/proc/sys/litmus/color/cache_info' |
86 | 88 | ||