Skip to content

Commit fa574a1

Browse files
committed
display memory useage statistics when creating delta
1 parent 7da2f85 commit fa574a1

File tree

2 files changed

+41
-4
lines changed

2 files changed

+41
-4
lines changed

client/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,11 @@ command-rusage = "1.0.1"
3030
ruma-headers = {path = "../ruma-headers"}
3131
flate2 = { version = "*" }
3232
libalpm-rs = "*"
33+
memory-stats = { version = "*", optional = true }
3334

3435
[[bin]]
3536
name = "deltaclient"
3637

3738
[features]
3839
default = ["diff"]
39-
diff = []
40+
diff = ["dep:memory-stats"]

client/src/main.rs

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -482,17 +482,53 @@ impl<T, E> ResultSwap<T, E> for Result<T, E> {
482482

483483
#[cfg(feature = "diff")]
484484
fn gen_delta(orig: &Path, new: &Path, patch: &Path) -> Result<(), std::io::Error> {
485+
use std::io::Read;
486+
let baseline = memory_stats::memory_stats().unwrap().physical_mem;
487+
485488
let orig = OpenOptions::new().read(true).open(orig).unwrap();
486-
let mut orig = zstd::Decoder::new(orig)?;
489+
let mut origb = Vec::new();
490+
zstd::Decoder::new(orig)?.read_to_end(&mut origb)?;
491+
let origb_len = origb.len();
492+
let mut origb = Cursor::new(origb);
493+
487494
let new = OpenOptions::new().read(true).open(new).unwrap();
488-
let mut new = zstd::Decoder::new(new)?;
495+
let mut newb = Vec::new();
496+
zstd::Decoder::new(new)?.read_to_end(&mut newb)?;
497+
let newb_len = newb.len();
498+
let mut newb = Cursor::new(newb);
489499

490500
let patch = OpenOptions::new().write(true).create(true).open(patch).unwrap();
491501
let mut patch = zstd::Encoder::new(patch, 22)?;
492502

493-
ddelta::generate_chunked(&mut orig, &mut new, &mut patch, None, |p| debug!("{p:?}")).unwrap();
503+
let before = memory_stats::memory_stats().unwrap().physical_mem;
504+
let mut max = before;
505+
ddelta::generate_chunked(&mut origb, &mut newb, &mut patch, None, |p| {
506+
match p {
507+
ddelta::State::Reading => debug!("Reading"),
508+
ddelta::State::Sorting => debug!("Sorting"),
509+
ddelta::State::Working(b) => debug!("Working({})", ByteSize::b(b)),
510+
};
511+
max = max.max(memory_stats::memory_stats().unwrap().physical_mem);
512+
debug!(
513+
"adduse: {}",
514+
ByteSize::b((max - origb_len - newb_len - baseline) as u64)
515+
);
516+
})
517+
.unwrap();
494518
patch.do_finish()?;
495519

520+
debug!("init mem use: {}", ByteSize::b(before as u64));
521+
debug!("maxi mem use: {}", ByteSize::b(max as u64));
522+
debug!(
523+
"orig: {}, new: {}",
524+
ByteSize::b(origb_len as u64),
525+
ByteSize::b(newb_len as u64)
526+
);
527+
debug!("baseline: {}", ByteSize::b(baseline as u64));
528+
debug!(
529+
"adduse: {}",
530+
ByteSize::b((max - origb_len - newb_len - baseline) as u64)
531+
);
496532
Ok(())
497533
}
498534

0 commit comments

Comments
 (0)