mirror of
https://github.com/meilisearch/MeiliSearch
synced 2024-11-22 12:54:26 +01:00
Format the bytes as human readable bytes
Uses the same `byte_unit` version as `meilisearch`
This commit is contained in:
parent
771861599b
commit
6cf703387d
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -5710,9 +5710,9 @@ dependencies = [
|
|||||||
name = "tracing-trace"
|
name = "tracing-trace"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"byte-unit",
|
||||||
"color-spantrace",
|
"color-spantrace",
|
||||||
"fxprof-processed-profile",
|
"fxprof-processed-profile",
|
||||||
"once_cell",
|
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"stats_alloc",
|
"stats_alloc",
|
||||||
|
@ -14,4 +14,8 @@ tracing = "0.1.40"
|
|||||||
tracing-error = "0.2.0"
|
tracing-error = "0.2.0"
|
||||||
tracing-subscriber = "0.3.18"
|
tracing-subscriber = "0.3.18"
|
||||||
stats_alloc = { git = "https://github.com/Kerollmops/stats_alloc", branch = "stable-const-fn-trait" }
|
stats_alloc = { git = "https://github.com/Kerollmops/stats_alloc", branch = "stable-const-fn-trait" }
|
||||||
once_cell = "1.19.0"
|
byte-unit = { version = "4.0.19", default-features = false, features = [
|
||||||
|
"std",
|
||||||
|
"serde",
|
||||||
|
] }
|
||||||
|
|
||||||
|
@ -5,7 +5,6 @@ use fxprof_processed_profile::{
|
|||||||
MarkerFieldFormat, MarkerLocation, MarkerSchema, MarkerSchemaField, Profile, ProfilerMarker,
|
MarkerFieldFormat, MarkerLocation, MarkerSchema, MarkerSchemaField, Profile, ProfilerMarker,
|
||||||
ReferenceTimestamp, SamplingInterval, StringHandle, Timestamp,
|
ReferenceTimestamp, SamplingInterval, StringHandle, Timestamp,
|
||||||
};
|
};
|
||||||
use once_cell::unsync::Lazy;
|
|
||||||
use serde_json::json;
|
use serde_json::json;
|
||||||
|
|
||||||
use crate::entry::{
|
use crate::entry::{
|
||||||
@ -33,17 +32,19 @@ pub fn to_firefox_profile<R: std::io::Read>(
|
|||||||
let category = profile.add_category("general", fxprof_processed_profile::CategoryColor::Blue);
|
let category = profile.add_category("general", fxprof_processed_profile::CategoryColor::Blue);
|
||||||
let subcategory = profile.add_subcategory(category, "subcategory");
|
let subcategory = profile.add_subcategory(category, "subcategory");
|
||||||
|
|
||||||
// TODO kero: add counters profile.add_counters + last_memory_value
|
|
||||||
let mut current_memory = MemoryStats::default();
|
let mut current_memory = MemoryStats::default();
|
||||||
let mut allocations_counter = Lazy::new(|| {
|
let init_allocations = |profile: &mut Profile| {
|
||||||
profile.add_counter(main, "mimmalloc", "Memory", "Amount of allocation calls")
|
profile.add_counter(main, "mimmalloc", "Memory", "Amount of allocation calls")
|
||||||
});
|
};
|
||||||
let mut deallocations_counter = Lazy::new(|| {
|
let init_deallocations = |profile: &mut Profile| {
|
||||||
profile.add_counter(main, "mimmalloc", "Memory", "Amount of deallocation calls")
|
profile.add_counter(main, "mimmalloc", "Memory", "Amount of deallocation calls")
|
||||||
});
|
};
|
||||||
let mut reallocations_counter = Lazy::new(|| {
|
let init_reallocations = |profile: &mut Profile| {
|
||||||
profile.add_counter(main, "mimmalloc", "Memory", "Amount of reallocation calls")
|
profile.add_counter(main, "mimmalloc", "Memory", "Amount of reallocation calls")
|
||||||
});
|
};
|
||||||
|
let mut allocations_counter = None;
|
||||||
|
let mut deallocations_counter = None;
|
||||||
|
let mut reallocations_counter = None;
|
||||||
|
|
||||||
for entry in trace {
|
for entry in trace {
|
||||||
let entry = entry?;
|
let entry = entry?;
|
||||||
@ -88,22 +89,28 @@ pub fn to_firefox_profile<R: std::io::Read>(
|
|||||||
bytes_reallocated,
|
bytes_reallocated,
|
||||||
} = current_memory - stats;
|
} = current_memory - stats;
|
||||||
|
|
||||||
|
let counter =
|
||||||
|
*allocations_counter.get_or_insert_with(|| init_allocations(&mut profile));
|
||||||
profile.add_counter_sample(
|
profile.add_counter_sample(
|
||||||
*allocations_counter,
|
counter,
|
||||||
last_timestamp,
|
last_timestamp,
|
||||||
bytes_allocated as f64,
|
bytes_allocated as f64,
|
||||||
allocations.try_into().unwrap(),
|
allocations.try_into().unwrap(),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let counter = *deallocations_counter
|
||||||
|
.get_or_insert_with(|| init_deallocations(&mut profile));
|
||||||
profile.add_counter_sample(
|
profile.add_counter_sample(
|
||||||
*deallocations_counter,
|
counter,
|
||||||
last_timestamp,
|
last_timestamp,
|
||||||
bytes_deallocated as f64,
|
bytes_deallocated as f64,
|
||||||
deallocations.try_into().unwrap(),
|
deallocations.try_into().unwrap(),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let counter = *reallocations_counter
|
||||||
|
.get_or_insert_with(|| init_reallocations(&mut profile));
|
||||||
profile.add_counter_sample(
|
profile.add_counter_sample(
|
||||||
*reallocations_counter,
|
counter,
|
||||||
last_timestamp,
|
last_timestamp,
|
||||||
bytes_reallocated as f64,
|
bytes_reallocated as f64,
|
||||||
reallocations.try_into().unwrap(),
|
reallocations.try_into().unwrap(),
|
||||||
@ -154,22 +161,28 @@ pub fn to_firefox_profile<R: std::io::Read>(
|
|||||||
bytes_reallocated,
|
bytes_reallocated,
|
||||||
} = current_memory - stats;
|
} = current_memory - stats;
|
||||||
|
|
||||||
|
let counter =
|
||||||
|
*allocations_counter.get_or_insert_with(|| init_allocations(&mut profile));
|
||||||
profile.add_counter_sample(
|
profile.add_counter_sample(
|
||||||
*allocations_counter,
|
counter,
|
||||||
last_timestamp,
|
last_timestamp,
|
||||||
bytes_allocated as f64,
|
bytes_allocated as f64,
|
||||||
allocations.try_into().unwrap(),
|
allocations.try_into().unwrap(),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let counter = *deallocations_counter
|
||||||
|
.get_or_insert_with(|| init_deallocations(&mut profile));
|
||||||
profile.add_counter_sample(
|
profile.add_counter_sample(
|
||||||
*deallocations_counter,
|
counter,
|
||||||
last_timestamp,
|
last_timestamp,
|
||||||
bytes_deallocated as f64,
|
bytes_deallocated as f64,
|
||||||
deallocations.try_into().unwrap(),
|
deallocations.try_into().unwrap(),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
let counter = *reallocations_counter
|
||||||
|
.get_or_insert_with(|| init_reallocations(&mut profile));
|
||||||
profile.add_counter_sample(
|
profile.add_counter_sample(
|
||||||
*reallocations_counter,
|
counter,
|
||||||
last_timestamp,
|
last_timestamp,
|
||||||
bytes_reallocated as f64,
|
bytes_reallocated as f64,
|
||||||
reallocations.try_into().unwrap(),
|
reallocations.try_into().unwrap(),
|
||||||
|
@ -147,6 +147,24 @@ fn print_duration(duration: std::time::Duration) -> String {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Format only the allocated bytes, deallocated bytes and reallocated bytes in GiB, MiB, KiB, Bytes.
|
||||||
fn print_memory(memory: MemoryStats) -> String {
|
fn print_memory(memory: MemoryStats) -> String {
|
||||||
// Format only the total allocations in GiB, MiB, KiB, Bytes
|
use byte_unit::Byte;
|
||||||
|
|
||||||
|
let allocated_bytes = Byte::from_bytes(memory.bytes_allocated.try_into().unwrap());
|
||||||
|
let deallocated_bytes = Byte::from_bytes(memory.bytes_deallocated.try_into().unwrap());
|
||||||
|
|
||||||
|
let reallocated_sign = if memory.bytes_reallocated < 0 { "-" } else { "" };
|
||||||
|
let reallocated_bytes =
|
||||||
|
Byte::from_bytes(memory.bytes_reallocated.abs_diff(0).try_into().unwrap());
|
||||||
|
|
||||||
|
let adjusted_allocated_bytes = allocated_bytes.get_appropriate_unit(true);
|
||||||
|
let adjusted_deallocated_bytes = deallocated_bytes.get_appropriate_unit(true);
|
||||||
|
let adjusted_reallocated_bytes = reallocated_bytes.get_appropriate_unit(true);
|
||||||
|
|
||||||
|
format!(
|
||||||
|
"Allocated {adjusted_allocated_bytes:.2}, \
|
||||||
|
Deallocated {adjusted_deallocated_bytes:.2}, \
|
||||||
|
Reallocated {reallocated_sign}{adjusted_reallocated_bytes:.2}"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user