@@ -33,6 +33,7 @@ pub struct Metrics {
3333 pub memory : MemMetrics ,
3434 pub ecpu_usage : ( u32 , f32 ) , // freq, percent_from_max
3535 pub pcpu_usage : ( u32 , f32 ) , // freq, percent_from_max
36+ pub cpu_usage_pct : f32 , // combined ecpu+pcpu usage, weighted by core count
3637 pub gpu_usage : ( u32 , f32 ) , // freq, percent_from_max
3738 pub cpu_power : f32 , // Watts
3839 pub gpu_power : f32 , // Watts
@@ -279,11 +280,16 @@ impl Sampler {
279280 results. push ( rs) ;
280281 }
281282
283+ let ecores = self . soc . ecpu_cores as f32 ;
284+ let pcores = self . soc . pcpu_cores as f32 ;
285+ let tcores = ecores + pcores;
286+
282287 let mut rs = Metrics :: default ( ) ;
283288 rs. ecpu_usage . 0 = zero_div ( results. iter ( ) . map ( |x| x. ecpu_usage . 0 ) . sum ( ) , measures as _ ) ;
284289 rs. ecpu_usage . 1 = zero_div ( results. iter ( ) . map ( |x| x. ecpu_usage . 1 ) . sum ( ) , measures as _ ) ;
285290 rs. pcpu_usage . 0 = zero_div ( results. iter ( ) . map ( |x| x. pcpu_usage . 0 ) . sum ( ) , measures as _ ) ;
286291 rs. pcpu_usage . 1 = zero_div ( results. iter ( ) . map ( |x| x. pcpu_usage . 1 ) . sum ( ) , measures as _ ) ;
292+ rs. cpu_usage_pct = zero_div ( rs. ecpu_usage . 1 * ecores + rs. pcpu_usage . 1 * pcores, tcores) ;
287293 rs. gpu_usage . 0 = zero_div ( results. iter ( ) . map ( |x| x. gpu_usage . 0 ) . sum ( ) , measures as _ ) ;
288294 rs. gpu_usage . 1 = zero_div ( results. iter ( ) . map ( |x| x. gpu_usage . 1 ) . sum ( ) , measures as _ ) ;
289295 rs. cpu_power = zero_div ( results. iter ( ) . map ( |x| x. cpu_power ) . sum ( ) , measures as _ ) ;
0 commit comments