Skip to content

Commit b6c06bd

Browse files
committed
sim-rs: add wall_time_s field to events
1 parent df18cc5 commit b6c06bd

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

sim-rs/sim-core/src/events.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ pub enum Event {
6969
task_type: String,
7070
#[serde(serialize_with = "duration_as_secs")]
7171
cpu_time_s: Duration,
72+
#[serde(serialize_with = "duration_as_secs")]
73+
wall_time_s: Duration,
7274
extra: String,
7375
},
7476
CpuSubtaskStarted {
@@ -279,12 +281,14 @@ impl EventTracker {
279281
task_id: CpuTaskId,
280282
task_type: String,
281283
cpu_time: Duration,
284+
wall_time: Duration,
282285
extra: String,
283286
) {
284287
self.send(Event::CpuTaskFinished {
285288
task: self.to_task(task_id),
286289
task_type,
287290
cpu_time_s: cpu_time,
291+
wall_time_s: wall_time,
288292
extra,
289293
});
290294
}

sim-rs/sim-core/src/sim/cpu.rs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@ use std::{
33
time::Duration,
44
};
55

6+
use crate::clock::Timestamp;
7+
68
struct TaskState<T> {
79
task: T,
810
subtasks: usize,
911
cpu_time: Duration,
12+
start_time: Timestamp,
1013
}
1114

1215
pub struct Subtask {
@@ -34,7 +37,12 @@ impl<T> CpuTaskQueue<T> {
3437
}
3538
}
3639

37-
pub fn schedule_task(&mut self, task: T, durations: Vec<Duration>) -> (u64, Vec<Subtask>) {
40+
pub fn schedule_task(
41+
&mut self,
42+
task: T,
43+
durations: Vec<Duration>,
44+
start_time: Timestamp,
45+
) -> (u64, Vec<Subtask>) {
3846
assert!(!durations.is_empty());
3947

4048
let task_id = self.next_task_id;
@@ -45,6 +53,7 @@ impl<T> CpuTaskQueue<T> {
4553
task,
4654
subtasks: durations.len(),
4755
cpu_time: durations.iter().sum(),
56+
start_time,
4857
},
4958
);
5059

@@ -69,7 +78,7 @@ impl<T> CpuTaskQueue<T> {
6978
pub fn complete_subtask(
7079
&mut self,
7180
subtask: Subtask,
72-
) -> (Option<(T, Duration)>, Option<Subtask>) {
81+
) -> (Option<(T, Duration, Timestamp)>, Option<Subtask>) {
7382
self.available_cores = self.available_cores.map(|c| c + 1);
7483

7584
let task = self
@@ -80,7 +89,7 @@ impl<T> CpuTaskQueue<T> {
8089
let finished_task = if task.subtasks == 0 {
8190
self.tasks
8291
.remove(&subtask.task_id)
83-
.map(|s| (s.task, s.cpu_time))
92+
.map(|s| (s.task, s.cpu_time, s.start_time))
8493
} else {
8594
None
8695
};

sim-rs/sim-core/src/sim/node.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ impl Node {
281281
let cpu_times = self.task_cpu_times(&task);
282282
let task_type = task.task_type();
283283
let subtask_count = cpu_times.len();
284-
let (task_id, subtasks) = self.cpu.schedule_task(task, cpu_times);
284+
let (task_id, subtasks) = self.cpu.schedule_task(task, cpu_times, self.clock.now());
285285
self.tracker.track_cpu_task_scheduled(
286286
CpuTaskId {
287287
node: self.id,
@@ -390,10 +390,11 @@ impl Node {
390390
if let Some(subtask) = next_subtask {
391391
self.start_cpu_subtask(subtask);
392392
}
393-
let Some((task, cpu_time)) = finished_task else {
393+
let Some((task, cpu_time, start_time)) = finished_task else {
394394
continue;
395395
};
396-
self.tracker.track_cpu_task_finished(task_id, task.task_type(), cpu_time, task.extra());
396+
let wall_time = self.clock.now() - start_time;
397+
self.tracker.track_cpu_task_finished(task_id, task.task_type(), cpu_time, wall_time, task.extra());
397398
match task {
398399
CpuTask::TransactionValidated(from, tx) => self.propagate_tx(from, tx)?,
399400
CpuTask::RBBlockGenerated(block) => self.finish_generating_block(block)?,

0 commit comments

Comments
 (0)