Skip to content

Commit

Permalink
xz: Use threaded mode by defaut (as if --threads=0 was used).
Browse files Browse the repository at this point in the history
This hopefully does more good than bad:

  + It's faster by default.

  + Only the threaded compressor creates files that
    can be decompressed in threaded mode.

  - Compression ratio is worse, usually not too much though.
    When it matters, -T1 must be used.

  - Memory usage increases.

  - Scripts that assume single-threaded mode but don't use -T1 will
    possibly use too much resources, for example, if they run
    multiple xz processes in parallel to compress multiple files.

  - Output from single-threaded and multi-threaded compressors
    differ but such changes could happen for other reasons too
    (they just haven't happened since 5.0.0).
  • Loading branch information
Larhzu committed Jan 23, 2024
1 parent a2dd2dc commit 6daa4d0
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 3 deletions.
6 changes: 5 additions & 1 deletion src/xz/hardware.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

/// Maximum number of worker threads. This can be set with
/// the --threads=NUM command line option.
static uint32_t threads_max = 1;
static uint32_t threads_max;

/// True when the number of threads is automatically determined based
/// on the available hardware threads.
Expand Down Expand Up @@ -334,5 +334,9 @@ hardware_init(void)
memlimit_mt_default = mem_ceiling;
#endif

// Enable threaded mode by default. xz 5.4.x and older
// used single-threaded mode by default.
hardware_threads_set(0);

return;
}
4 changes: 2 additions & 2 deletions src/xz/message.c
Original file line number Diff line number Diff line change
Expand Up @@ -1022,8 +1022,8 @@ message_help(bool long_help)
" does not affect decompressor memory requirements"));

puts(_(
" -T, --threads=NUM use at most NUM threads; the default is 1; set to 0\n"
" to use as many threads as there are processor cores"));
" -T, --threads=NUM use at most NUM threads; the default is 0 which uses\n"
" as many threads as there are processor cores"));

if (long_help) {
puts(_(
Expand Down
9 changes: 9 additions & 0 deletions src/xz/xz.1
Original file line number Diff line number Diff line change
Expand Up @@ -1303,6 +1303,15 @@ meet this condition,
but files compressed in single-threaded mode don't even if
.BI \-\-block\-size= size
has been used.
.IP ""
The default value for
.I threads
is
.BR 0 .
In
.B xz
5.4.x and older the default is
.BR 1 .
.
.SS "Custom compressor filter chains"
A custom filter chain allows specifying
Expand Down

0 comments on commit 6daa4d0

Please sign in to comment.