mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-13 02:21:14 +00:00
Expose state-db memory info (#5110)
This exposes memory statistics from the state-db.
This commit is contained in:
@@ -97,13 +97,56 @@ pub struct ClientInfo<Block: BlockT> {
|
||||
pub usage: Option<UsageInfo>,
|
||||
}
|
||||
|
||||
/// A wrapper to store the size of some memory.
|
||||
#[derive(Default, Clone, Debug, Copy)]
|
||||
pub struct MemorySize(usize);
|
||||
|
||||
impl MemorySize {
|
||||
/// Creates `Self` from the given `bytes` size.
|
||||
pub fn from_bytes(bytes: usize) -> Self {
|
||||
Self(bytes)
|
||||
}
|
||||
|
||||
/// Returns the memory size as bytes.
|
||||
pub fn as_bytes(self) -> usize {
|
||||
self.0
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for MemorySize {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
if self.0 < 1024 {
|
||||
write!(f, "{} bytes", self.0)
|
||||
} else if self.0 < 1024 * 1024 {
|
||||
write!(f, "{:.2} KiB", self.0 as f64 / 1024f64)
|
||||
} else if self.0 < 1024 * 1024 * 1024 {
|
||||
write!(f, "{:.2} MiB", self.0 as f64 / (1024f64 * 1024f64))
|
||||
} else {
|
||||
write!(f, "{:.2} GiB", self.0 as f64 / (1024f64 * 1024f64 * 1024f64))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Memory statistics for state db.
|
||||
#[derive(Default, Clone, Debug)]
|
||||
pub struct StateDbMemoryInfo {
|
||||
/// Memory usage of the non-canonical overlay
|
||||
pub non_canonical: MemorySize,
|
||||
/// Memory usage of the pruning window.
|
||||
pub pruning: Option<MemorySize>,
|
||||
/// Memory usage of the pinned blocks.
|
||||
pub pinned: MemorySize,
|
||||
}
|
||||
|
||||
/// Memory statistics for client instance.
|
||||
#[derive(Default, Clone, Debug)]
|
||||
pub struct MemoryInfo {
|
||||
/// Size of state cache.
|
||||
pub state_cache: usize,
|
||||
pub state_cache: MemorySize,
|
||||
/// Size of backend database cache.
|
||||
pub database_cache: usize,
|
||||
pub database_cache: MemorySize,
|
||||
/// Size of the state db.
|
||||
pub state_db: StateDbMemoryInfo,
|
||||
}
|
||||
|
||||
/// I/O statistics for client instance.
|
||||
@@ -144,10 +187,16 @@ pub struct UsageInfo {
|
||||
|
||||
impl fmt::Display for UsageInfo {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
write!(f,
|
||||
"caches: ({} state, {} db overlay), i/o: ({} tx, {} write, {} read, {} avg tx, {}/{} key cache reads/total, {} key writes)",
|
||||
write!(
|
||||
f,
|
||||
"caches: ({} state, {} db overlay), \
|
||||
state db: ({} non-canonical, {} pruning, {} pinned), \
|
||||
i/o: ({} tx, {} write, {} read, {} avg tx, {}/{} key cache reads/total, {} key writes)",
|
||||
self.memory.state_cache,
|
||||
self.memory.database_cache,
|
||||
self.memory.state_db.non_canonical,
|
||||
self.memory.state_db.pruning.unwrap_or_default(),
|
||||
self.memory.state_db.pinned,
|
||||
self.io.transactions,
|
||||
self.io.bytes_written,
|
||||
self.io.bytes_read,
|
||||
|
||||
Reference in New Issue
Block a user