diff options
| -rw-r--r-- | nemesis/causal_event_loop.py | 20 | ||||
| -rw-r--r-- | nemesis/html_gen.py | 8 | ||||
| -rwxr-xr-x | nemesis/nemesis.py | 3 |
3 files changed, 20 insertions, 11 deletions
diff --git a/nemesis/causal_event_loop.py b/nemesis/causal_event_loop.py index b73458f..22ec65c 100644 --- a/nemesis/causal_event_loop.py +++ b/nemesis/causal_event_loop.py @@ -102,29 +102,36 @@ class CausalEventLoop(asyncio.SelectorEventLoop): # the last time we entered the target coro _time_entered_coro = None _ready_events = [] + # the time this experiment started + _start_time = None def __init__(self) -> None: super().__init__() def set_speedup(self, speedup): + # print(self._coro_intervals) + # we want to delay the start time if we are starting a new experiment + # during the old experiment's interval + self._start_time = self.time() if not self._time_entered_coro else None self._speedup = speedup # reset experiment counters - self._time_entered_coro = None self._coro_intervals.clear() self._completed_coros.clear() def get_completed_coros(self): return copy(self._completed_coros) - def get_pause_time(self): + def get_run_time(self): + curr_time = self.time() if not self._coro_intervals: return 0 start_interval = self._coro_intervals[0][0] - end_interval = self.time() if self._time_entered_coro else self._coro_intervals[-1][1] + end_interval = curr_time if self._time_entered_coro else self._coro_intervals[-1][1] interval = (start_interval, end_interval) - return self._get_pause_time(interval) + pause_time = self._get_pause_time(interval) + return (curr_time - self._start_time) - pause_time def ping_enter_coro(self): self._time_entered_coro = self.time() @@ -135,7 +142,10 @@ class CausalEventLoop(asyncio.SelectorEventLoop): except AssertionError as e: print(f"Assertion failed: {e}") sys.exit(1) - self._coro_intervals.add((self._time_entered_coro, self.time())) + if self._start_time: + self._coro_intervals.add((self._time_entered_coro, self.time())) + else: + self._start_time = self.time() self._time_entered_coro = None def collect_ready_events(self, timeout=0): diff --git a/nemesis/html_gen.py b/nemesis/html_gen.py index bffa748..3c6fbef 100644 --- a/nemesis/html_gen.py +++ b/nemesis/html_gen.py @@ -8,7 +8,7 @@ TRIM_PERCENT = 0.05 def get_color(name): hash_object = hashlib.md5(name.encode()) color_index = int(hash_object.hexdigest(), 16) % 360 - return f'hsl({color_index}, 100%, 50%)' + return f'hsl({color_index}, 90%, 30%)' def plot_results(results, output_file, input_file): # determine the number of loops we have data for @@ -97,8 +97,8 @@ def plot_results(results, output_file, input_file): mode='markers', name=coro_name, marker=dict(color=get_color(coro_name)), - # hovertext=latency_hover_text, - showlegend=False, + hovertext=latency_hover_text, + showlegend=True, ), row=1, col=col) fig.add_trace(go.Scatter( @@ -116,7 +116,7 @@ def plot_results(results, output_file, input_file): mode='markers', name=coro_name, marker=dict(color=get_color(coro_name)), - # hovertext=max_latency_hover_text, + hovertext=max_latency_hover_text, showlegend=False, ), row=3, col=col) diff --git a/nemesis/nemesis.py b/nemesis/nemesis.py index e593625..5901801 100755 --- a/nemesis/nemesis.py +++ b/nemesis/nemesis.py @@ -141,9 +141,8 @@ class Nemesis(object): latency = [] virtual_run_time = [] for loop in loops: - pause_time = loop.get_pause_time() results = Nemesis.results[Nemesis.experiment_coro][Nemesis.experiment_spdp][loop._thread_id] - results.append((loop.get_completed_coros(), loop.get_pause_time())) + results.append((loop.get_completed_coros(), loop.get_run_time())) print(f'Ran {Nemesis.experiment_coro} at {Nemesis.experiment_spdp} speed') del Nemesis.experiment_data |
