From e5cd5db3833f4e5893dd4ad4ab3b05ab9940a0d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Fri, 1 Oct 2021 11:55:22 +0200 Subject: [PATCH] Remove incorrect proof about Jemalloc (#3982) * Remove incorrect proof about Jemalloc The truth is that Jemalloc is not always the default allocator. This is only true for the polkadot binary. * Fmt * Rephrase --- polkadot/node/overseer/src/lib.rs | 38 +++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/polkadot/node/overseer/src/lib.rs b/polkadot/node/overseer/src/lib.rs index 331bf6378d..961e1e659f 100644 --- a/polkadot/node/overseer/src/lib.rs +++ b/polkadot/node/overseer/src/lib.rs @@ -518,18 +518,36 @@ where } let subsystem_meters = overseer.map_subsystems(ExtractNameAndMeters); - let memory_stats = - MemoryAllocationTracker::new().expect("Jemalloc is the default allocator. qed"); + let collect_memory_stats: Box = + match MemoryAllocationTracker::new() { + Ok(memory_stats) => + Box::new(move |metrics: &OverseerMetrics| match memory_stats.snapshot() { + Ok(memory_stats_snapshot) => { + tracing::trace!( + target: LOG_TARGET, + "memory_stats: {:?}", + &memory_stats_snapshot + ); + metrics.memory_stats_snapshot(memory_stats_snapshot); + }, + Err(e) => tracing::debug!( + target: LOG_TARGET, + "Failed to obtain memory stats: {:?}", + e + ), + }), + Err(_) => { + tracing::debug!( + target: LOG_TARGET, + "Memory allocation tracking is not supported by the allocator.", + ); + + Box::new(|_| {}) + }, + }; let metronome = Metronome::new(std::time::Duration::from_millis(950)).for_each(move |_| { - match memory_stats.snapshot() { - Ok(memory_stats_snapshot) => { - tracing::trace!(target: LOG_TARGET, "memory_stats: {:?}", &memory_stats_snapshot); - metronome_metrics.memory_stats_snapshot(memory_stats_snapshot); - }, - - Err(e) => tracing::debug!(target: LOG_TARGET, "Failed to obtain memory stats: {:?}", e), - } + collect_memory_stats(&metronome_metrics); // We combine the amount of messages from subsystems to the overseer // as well as the amount of messages from external sources to the overseer