summaryrefslogtreecommitdiff
path: root/nemesis
diff options
context:
space:
mode:
authorbd <bdunahu@operationnull.com>2025-10-18 21:05:37 -0400
committerbd <bdunahu@operationnull.com>2025-10-18 21:05:37 -0400
commitc2c3701804c7b57ceb4e1bfaae157b7bb000becc (patch)
treea390028e2693867d4ee75bc23fbfe7d201eb4313 /nemesis
parent1a439653264adc3d9648645d2bb4006f331c1722 (diff)
correct throughput graph (obvious mistake I didn't notice)
Diffstat (limited to 'nemesis')
-rw-r--r--nemesis/causal_event_loop.py20
-rw-r--r--nemesis/html_gen.py8
-rwxr-xr-xnemesis/nemesis.py3
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