MCPcopy Create free account
hub / github.com/NativeScript/SimDeck / merge_samples

Method merge_samples

packages/server/src/performance.rs:254–394  ·  view source on GitHub ↗
(
        &self,
        raw_samples: Vec<RawPerformanceSample>,
        selected_pid: Option<i32>,
        display_signal: DisplaySignal,
        history_window_ms: u64,
    )

Source from the content-addressed store, hash-verified

252 }
253
254 fn merge_samples(
255 &self,
256 raw_samples: Vec<RawPerformanceSample>,
257 selected_pid: Option<i32>,
258 display_signal: DisplaySignal,
259 history_window_ms: u64,
260 ) -> (Option<PerformanceSample>, Vec<PerformanceSample>) {
261 let mut inner = self
262 .inner
263 .lock()
264 .unwrap_or_else(|poisoned| poisoned.into_inner());
265 let mut current = None;
266 let now = Instant::now();
267 let now_ms = now_ms();
268
269 for raw in raw_samples {
270 let pid = raw.process.pid;
271 let counter = RawCounterSnapshot {
272 sampled_at: now,
273 timestamp_ms: now_ms,
274 cpu_time_ns: raw
275 .rusage
276 .map(|rusage| rusage.user_time_ns.saturating_add(rusage.system_time_ns)),
277 disk_read_bytes: raw.rusage.map(|rusage| rusage.disk_read_bytes),
278 disk_write_bytes: raw.rusage.map(|rusage| rusage.disk_write_bytes),
279 network_received_bytes: raw
280 .network
281 .as_ref()
282 .and_then(|network| network.received_bytes),
283 network_sent_bytes: raw.network.as_ref().and_then(|network| network.sent_bytes),
284 };
285 let previous = inner.last_raw.insert(pid, counter.clone());
286 let cpu_percent = cpu_percent(&raw, previous.as_ref(), &counter);
287 let disk_read_bytes_per_second = rate_per_second(
288 previous
289 .as_ref()
290 .and_then(|previous| previous.disk_read_bytes),
291 counter.disk_read_bytes,
292 previous.as_ref(),
293 &counter,
294 );
295 let disk_write_bytes_per_second = rate_per_second(
296 previous
297 .as_ref()
298 .and_then(|previous| previous.disk_write_bytes),
299 counter.disk_write_bytes,
300 previous.as_ref(),
301 &counter,
302 );
303 let network_received_bytes_per_second = rate_per_second(
304 previous
305 .as_ref()
306 .and_then(|previous| previous.network_received_bytes),
307 counter.network_received_bytes,
308 previous.as_ref(),
309 &counter,
310 );
311 let network_sent_bytes_per_second = rate_per_second(

Callers 1

snapshotMethod · 0.80

Calls 9

cpu_percentFunction · 0.85
rate_per_secondFunction · 0.85
hang_statusFunction · 0.85
prune_historyFunction · 0.85
insertMethod · 0.80
maxMethod · 0.80
now_msFunction · 0.70
cloneMethod · 0.65
getMethod · 0.65

Tested by

no test coverage detected