@@ -401,8 +401,135 @@ timerlat_print_summary(struct timerlat_hist_params *params,
401
401
trace_seq_reset (trace -> seq );
402
402
}
403
403
404
+ static void
405
+ timerlat_print_stats_all (struct timerlat_hist_params * params ,
406
+ struct trace_instance * trace ,
407
+ struct timerlat_hist_data * data )
408
+ {
409
+ struct timerlat_hist_cpu * cpu_data ;
410
+ struct timerlat_hist_cpu sum ;
411
+ int cpu ;
412
+
413
+ if (params -> no_summary )
414
+ return ;
415
+
416
+ memset (& sum , 0 , sizeof (sum ));
417
+ sum .min_irq = ~0 ;
418
+ sum .min_thread = ~0 ;
419
+ sum .min_user = ~0 ;
420
+
421
+ for (cpu = 0 ; cpu < data -> nr_cpus ; cpu ++ ) {
422
+ if (params -> cpus && !CPU_ISSET (cpu , & params -> monitored_cpus ))
423
+ continue ;
424
+
425
+ if (!data -> hist [cpu ].irq_count && !data -> hist [cpu ].thread_count )
426
+ continue ;
427
+
428
+ cpu_data = & data -> hist [cpu ];
429
+
430
+ sum .irq_count += cpu_data -> irq_count ;
431
+ update_min (& sum .min_irq , & cpu_data -> min_irq );
432
+ update_sum (& sum .sum_irq , & cpu_data -> sum_irq );
433
+ update_max (& sum .max_irq , & cpu_data -> max_irq );
434
+
435
+ sum .thread_count += cpu_data -> thread_count ;
436
+ update_min (& sum .min_thread , & cpu_data -> min_thread );
437
+ update_sum (& sum .sum_thread , & cpu_data -> sum_thread );
438
+ update_max (& sum .max_thread , & cpu_data -> max_thread );
439
+
440
+ sum .user_count += cpu_data -> user_count ;
441
+ update_min (& sum .min_user , & cpu_data -> min_user );
442
+ update_sum (& sum .sum_user , & cpu_data -> sum_user );
443
+ update_max (& sum .max_user , & cpu_data -> max_user );
444
+ }
445
+
446
+ if (!params -> no_index )
447
+ trace_seq_printf (trace -> seq , "ALL: " );
448
+
449
+ if (!params -> no_irq )
450
+ trace_seq_printf (trace -> seq , " IRQ" );
451
+
452
+ if (!params -> no_thread )
453
+ trace_seq_printf (trace -> seq , " Thr" );
454
+
455
+ if (params -> user_hist )
456
+ trace_seq_printf (trace -> seq , " Usr" );
457
+
458
+ trace_seq_printf (trace -> seq , "\n" );
459
+
460
+ if (!params -> no_index )
461
+ trace_seq_printf (trace -> seq , "count:" );
462
+
463
+ if (!params -> no_irq )
464
+ trace_seq_printf (trace -> seq , "%9d " ,
465
+ sum .irq_count );
466
+
467
+ if (!params -> no_thread )
468
+ trace_seq_printf (trace -> seq , "%9d " ,
469
+ sum .thread_count );
470
+
471
+ if (params -> user_hist )
472
+ trace_seq_printf (trace -> seq , "%9d " ,
473
+ sum .user_count );
474
+
475
+ trace_seq_printf (trace -> seq , "\n" );
476
+
477
+ if (!params -> no_index )
478
+ trace_seq_printf (trace -> seq , "min: " );
479
+
480
+ if (!params -> no_irq )
481
+ trace_seq_printf (trace -> seq , "%9llu " ,
482
+ sum .min_irq );
483
+
484
+ if (!params -> no_thread )
485
+ trace_seq_printf (trace -> seq , "%9llu " ,
486
+ sum .min_thread );
487
+
488
+ if (params -> user_hist )
489
+ trace_seq_printf (trace -> seq , "%9llu " ,
490
+ sum .min_user );
491
+
492
+ trace_seq_printf (trace -> seq , "\n" );
493
+
494
+ if (!params -> no_index )
495
+ trace_seq_printf (trace -> seq , "avg: " );
496
+
497
+ if (!params -> no_irq )
498
+ trace_seq_printf (trace -> seq , "%9llu " ,
499
+ sum .sum_irq / sum .irq_count );
500
+
501
+ if (!params -> no_thread )
502
+ trace_seq_printf (trace -> seq , "%9llu " ,
503
+ sum .sum_thread / sum .thread_count );
504
+
505
+ if (params -> user_hist )
506
+ trace_seq_printf (trace -> seq , "%9llu " ,
507
+ sum .sum_user / sum .user_count );
508
+
509
+ trace_seq_printf (trace -> seq , "\n" );
510
+
511
+ if (!params -> no_index )
512
+ trace_seq_printf (trace -> seq , "max: " );
513
+
514
+ if (!params -> no_irq )
515
+ trace_seq_printf (trace -> seq , "%9llu " ,
516
+ sum .max_irq );
517
+
518
+ if (!params -> no_thread )
519
+ trace_seq_printf (trace -> seq , "%9llu " ,
520
+ sum .max_thread );
521
+
522
+ if (params -> user_hist )
523
+ trace_seq_printf (trace -> seq , "%9llu " ,
524
+ sum .max_user );
525
+
526
+ trace_seq_printf (trace -> seq , "\n" );
527
+ trace_seq_do_printf (trace -> seq );
528
+ trace_seq_reset (trace -> seq );
529
+ }
530
+
404
531
/*
405
- * timerlat_print_stats - print data for all CPUs
532
+ * timerlat_print_stats - print data for each CPUs
406
533
*/
407
534
static void
408
535
timerlat_print_stats (struct timerlat_hist_params * params , struct osnoise_tool * tool )
@@ -485,6 +612,7 @@ timerlat_print_stats(struct timerlat_hist_params *params, struct osnoise_tool *t
485
612
trace_seq_reset (trace -> seq );
486
613
487
614
timerlat_print_summary (params , trace , data );
615
+ timerlat_print_stats_all (params , trace , data );
488
616
}
489
617
490
618
/*
0 commit comments