Skip to content

Commit

Permalink
Merge pull request #98 from cuviper/xz-thread-mem
Browse files Browse the repository at this point in the history
Use at most 8 threads for the xz stream
  • Loading branch information
alexcrichton authored Aug 28, 2019
2 parents 85958b0 + 3d7273c commit 9f66c14
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/tarballer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,11 @@ impl Tarballer {
// Prepare the `.tar.gz` file.
let gz = GzEncoder::new(create_new_file(tar_gz)?, flate2::Compression::best());

// Prepare the `.tar.xz` file.
// Prepare the `.tar.xz` file. Note that preset 6 takes about 173MB of memory
// per thread, so we limit the number of threads to not blow out 32-bit hosts.
// (We could be more precise with `MtStreamBuilder::memusage()` if desired.)
let stream = xz2::stream::MtStreamBuilder::new()
.threads(num_cpus::get() as u32)
.threads(Ord::min(num_cpus::get(), 8) as u32)
.preset(6)
.encoder()?;
let xz = XzEncoder::new_stream(create_new_file(tar_xz)?, stream);
Expand Down

0 comments on commit 9f66c14

Please sign in to comment.