diff --git a/crates/bencher/src/html.rs b/crates/bencher/src/html.rs
index e87802a..a232bf9 100644
--- a/crates/bencher/src/html.rs
+++ b/crates/bencher/src/html.rs
@@ -3,7 +3,10 @@ use indoc::formatdoc;
use itertools::Itertools;
use num_format::{Locale, ToFormattedString};
-use crate::set::{LoadTestRunResults, TrackerCoreCountResults};
+use crate::{
+ run::ProcessStats,
+ set::{LoadTestRunResults, TrackerCoreCountResults},
+};
pub fn html_best_results(results: &[TrackerCoreCountResults]) -> String {
let mut all_implementation_names = IndexSet::new();
@@ -99,6 +102,7 @@ pub fn html_all_runs(all_results: &[TrackerCoreCountResults]) -> String {
avg_responses: Option,
tracker_keys: IndexMap,
tracker_vcpus: String,
+ tracker_stats: Option,
load_test_keys: IndexMap,
load_test_vcpus: String,
}
@@ -133,6 +137,7 @@ pub fn html_all_runs(all_results: &[TrackerCoreCountResults]) -> String {
avg_responses: Some(l.average_responses),
tracker_keys: l.tracker_keys.clone(),
tracker_vcpus: l.tracker_vcpus.as_cpu_list(),
+ tracker_stats: Some(l.tracker_process_stats),
load_test_keys: l.load_test_keys.clone(),
load_test_vcpus: l.load_test_vcpus.as_cpu_list(),
})
@@ -146,6 +151,7 @@ pub fn html_all_runs(all_results: &[TrackerCoreCountResults]) -> String {
avg_responses: None,
tracker_keys: l.tracker_keys.clone(),
tracker_vcpus: l.tracker_vcpus.as_cpu_list(),
+ tracker_stats: None,
load_test_keys: l.load_test_keys.clone(),
load_test_vcpus: l.load_test_vcpus.as_cpu_list(),
})
@@ -158,48 +164,61 @@ pub fn html_all_runs(all_results: &[TrackerCoreCountResults]) -> String {
output.push_str(&formatdoc! {
"
- Results for {}
+ Results for {implementation}
| Cores |
Responses |
- {}
- {}
+ {tracker_key_names}
+ Tracker avg CPU |
+ Tracker peak RSS |
Tracker vCPUs |
+ {load_test_key_names}
Load test vCPUs |
- {}
+ {body}
",
- implementation_name,
- tracker_key_names.iter().map(|name| format!("Tracker {} | ", name)).join("\n"),
- load_test_key_names.iter().map(|name| format!("Load test {} | ", name)).join("\n"),
- results.into_iter().map(|r| {
+ implementation = implementation_name,
+ tracker_key_names = tracker_key_names.iter()
+ .map(|name| format!("{} | ", name))
+ .join("\n"),
+ load_test_key_names = load_test_key_names.iter()
+ .map(|name| format!("Load test {} | ", name))
+ .join("\n"),
+ body = results.into_iter().map(|r| {
formatdoc! {
"
- | {} |
- {} |
- {}
- {}
- {} |
- {} |
+ {cores} |
+ {avg_responses} |
+ {tracker_key_values}
+ {cpu}% |
+ {mem} kB |
+ {tracker_vcpus} |
+ {load_test_key_values}
+ {load_test_vcpus} |
",
- r.core_count,
- r.avg_responses.map(|v| v.to_formatted_string(&Locale::en)).unwrap_or_else(|| "-".to_string()),
- tracker_key_names.iter().map(|name| {
- format!("{} | ", r.tracker_keys.get(name).cloned().unwrap_or_else(|| "-".to_string()))
+ cores = r.core_count,
+ avg_responses = r.avg_responses.map(|v| v.to_formatted_string(&Locale::en))
+ .unwrap_or_else(|| "-".to_string()),
+ tracker_key_values = tracker_key_names.iter().map(|name| {
+ format!("{} | ", r.tracker_keys.get(name).cloned().unwrap_or_else(|| "-".to_string()))
}).join("\n"),
- load_test_key_names.iter().map(|name| {
- format!("{} | ", r.load_test_keys.get(name).cloned().unwrap_or_else(|| "-".to_string()))
+ cpu = r.tracker_stats.map(|stats| stats.avg_cpu_utilization.to_string())
+ .unwrap_or_else(|| "-".to_string()),
+ mem = r.tracker_stats.map(|stats| stats.peak_rss_kb.to_string())
+ .unwrap_or_else(|| "-".to_string()),
+ tracker_vcpus = r.tracker_vcpus,
+ load_test_key_values = load_test_key_names.iter().map(|name| {
+ format!("{} | ", r.load_test_keys.get(name).cloned().unwrap_or_else(|| "-".to_string()))
}).join("\n"),
- r.tracker_vcpus,
- r.load_test_vcpus,
+ load_test_vcpus = r.load_test_vcpus,
}
}).join("\n")
});