Skip to content

Commit

Permalink
allow to show span count (#6135)
Browse files Browse the repository at this point in the history
### Description

allow the tracing to count spans

### Testing Instructions

<!--
  Give a quick description of steps to test your changes.
-->


Closes WEB-1741
  • Loading branch information
sokra committed Oct 19, 2023
1 parent 60ed907 commit 77e5ffa
Showing 1 changed file with 41 additions and 23 deletions.
64 changes: 41 additions & 23 deletions crates/turbopack-convert-trace/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,10 @@ fn main() {
let threads = args.remove("--threads");
let idle = args.remove("--idle");
let graph = args.remove("--graph");
let show_count = args.remove("--count");
let collapse_names = args.remove("--collapse-names");
if !single && !merged && !threads {
let collapse_min_count = 1;
if !single && !merged && !threads && !show_count {
merged = true;
}
let arg = args
Expand Down Expand Up @@ -558,7 +560,7 @@ fn main() {
eprintln!(" done ({:.3}s)", start.elapsed().as_secs_f32());
}

if single || merged {
if single || merged || show_count {
let number_of_spans = spans.len();
eprint!("Emitting span tree... 0 / {} (0%)", number_of_spans);
let mut span_counter = 0;
Expand Down Expand Up @@ -618,6 +620,7 @@ fn main() {
let mut tts = 0;
let mut merged_ts = 0;
let mut merged_tts = 0;
let mut count_ts = 0;
let mut stack = spans
.iter()
.enumerate()
Expand Down Expand Up @@ -705,30 +708,34 @@ fn main() {
let groups = groups.into_values().collect::<Vec<_>>();
let mut new_items = Vec::new();
for group in groups {
let mut group = group.into_iter();
let new_item = group.next().unwrap();
match new_item {
SpanItem::SelfTime { .. } => {
new_items.push(new_item);
new_items.extend(group);
}
SpanItem::Child(new_item_id) => {
new_items.push(new_item);
let mut count = 1;
for item in group {
let SpanItem::Child(id) = item else {
unreachable!();
};
assert!(spans[id].name == spans[new_item_id].name);
let old_items = take(&mut spans[id].items);
spans[new_item_id].items.extend(old_items);
count += 1;
if group.len() >= collapse_min_count {
let mut group = group.into_iter();
let new_item = group.next().unwrap();
match new_item {
SpanItem::SelfTime { .. } => {
new_items.push(new_item);
new_items.extend(group);
}
if count != 1 {
let span = &mut spans[new_item_id];
span.count = count;
SpanItem::Child(new_item_id) => {
new_items.push(new_item);
let mut count = 1;
for item in group {
let SpanItem::Child(id) = item else {
unreachable!();
};
assert!(spans[id].name == spans[new_item_id].name);
let old_items = take(&mut spans[id].items);
spans[new_item_id].items.extend(old_items);
count += 1;
}
if count != 1 {
let span = &mut spans[new_item_id];
span.count = count;
}
}
}
} else {
new_items.extend(group);
}
}
items = new_items;
Expand Down Expand Up @@ -764,6 +771,12 @@ fn main() {
r#"{{"ph":"B","pid":2,"ts":{merged_ts},"tts":{merged_tts},"name":{name_json},"cat":{target_json},"tid":0,"args":{args_json}}}"#,
);
}
if show_count {
pjson!(
r#"{{"ph":"B","pid":3,"ts":{count_ts},"name":{name_json},"cat":{target_json},"tid":0,"args":{args_json}}}"#,
);
count_ts += count;
}
stack.push(Task::Exit {
name_json,
target_json,
Expand Down Expand Up @@ -843,6 +856,11 @@ fn main() {
);
}
}
if show_count {
pjson!(
r#"{{"ph":"E","pid":3,"ts":{count_ts},"name":{name_json},"cat":{target_json},"tid":0}}"#,
);
}
}
Task::SelfTime {
duration,
Expand Down

0 comments on commit 77e5ffa

Please sign in to comment.