@@ -159,7 +159,7 @@ impl PerfRunner {
159159 // maps from /tmp to the profile folder. We have to write our own perf
160160 // maps to these files AFTERWARDS, otherwise it'll be overwritten!
161161 let bench_pids = bench_data
162- . markers_by_pid
162+ . bench_order_by_pid
163163 . keys ( )
164164 . map ( |pid| * pid as i32 )
165165 . collect :: < HashSet < _ > > ( ) ;
@@ -261,7 +261,7 @@ impl PerfRunner {
261261 let mut bench_order_by_pid = HashMap :: < u32 , Vec < String > > :: new ( ) ;
262262 let mut symbols_by_pid = HashMap :: < u32 , ProcessSymbols > :: new ( ) ;
263263 let mut unwind_data_by_pid = HashMap :: < u32 , Vec < UnwindData > > :: new ( ) ;
264- let mut markers_by_pid = HashMap :: < u32 , Vec < MarkerType > > :: new ( ) ;
264+ let mut markers = Vec :: < MarkerType > :: new ( ) ;
265265
266266 let mut integration = None ;
267267 let mut perf_ping_timeout = 5 ;
@@ -300,10 +300,21 @@ impl PerfRunner {
300300 runner_fifo. send_cmd ( FifoCommand :: Ack ) . await ?;
301301 }
302302 FifoCommand :: StartBenchmark => {
303+ markers. push ( MarkerType :: SampleStart (
304+ std:: time:: SystemTime :: now ( )
305+ . duration_since ( std:: time:: UNIX_EPOCH ) ?
306+ . as_millis ( ) as u64 ,
307+ ) ) ;
303308 perf_fifo. start_events ( ) . await ?;
304309 runner_fifo. send_cmd ( FifoCommand :: Ack ) . await ?;
305310 }
306311 FifoCommand :: StopBenchmark => {
312+ markers. push ( MarkerType :: SampleEnd (
313+ std:: time:: SystemTime :: now ( )
314+ . duration_since ( std:: time:: UNIX_EPOCH ) ?
315+ . as_millis ( ) as u64 ,
316+ ) ) ;
317+
307318 perf_fifo. stop_events ( ) . await ?;
308319 runner_fifo. send_cmd ( FifoCommand :: Ack ) . await ?;
309320 }
@@ -319,11 +330,13 @@ impl PerfRunner {
319330 runner_fifo. send_cmd ( FifoCommand :: Ack ) . await ?;
320331 }
321332 FifoCommand :: AddMarker { pid, marker } => {
322- markers_by_pid . entry ( pid ) . or_default ( ) . push ( marker) ;
333+ markers . push ( marker) ;
323334 runner_fifo. send_cmd ( FifoCommand :: Ack ) . await ?;
324335 }
325- FifoCommand :: Ack => unreachable ! ( ) ,
326- FifoCommand :: Err => unreachable ! ( ) ,
336+ _ => {
337+ warn ! ( "Received unexpected command: {cmd:?}" ) ;
338+ runner_fifo. send_cmd ( FifoCommand :: Err ) . await ?;
339+ }
327340 }
328341 }
329342
@@ -332,7 +345,7 @@ impl PerfRunner {
332345 bench_order_by_pid,
333346 symbols_by_pid,
334347 unwind_data_by_pid,
335- markers_by_pid ,
348+ markers ,
336349 } )
337350 }
338351}
@@ -344,7 +357,7 @@ pub struct BenchmarkData {
344357 bench_order_by_pid : HashMap < u32 , Vec < String > > ,
345358 symbols_by_pid : HashMap < u32 , ProcessSymbols > ,
346359 unwind_data_by_pid : HashMap < u32 , Vec < UnwindData > > ,
347- markers_by_pid : HashMap < u32 , Vec < MarkerType > > ,
360+ markers : Vec < MarkerType > ,
348361}
349362
350363#[ derive( Debug ) ]
@@ -419,7 +432,7 @@ impl BenchmarkData {
419432
420433 to_ignore
421434 } ,
422- markers_by_pid : self . markers_by_pid . clone ( ) ,
435+ markers : self . markers . clone ( ) ,
423436 } ;
424437 metadata. save_to ( & path) . unwrap ( ) ;
425438
0 commit comments