]> git.ipfire.org Git - thirdparty/xz.git/commitdiff
xz: Use threaded mode by defaut (as if --threads=0 was used).
authorLasse Collin <lasse.collin@tukaani.org>
Tue, 23 Jan 2024 16:29:28 +0000 (18:29 +0200)
committerLasse Collin <lasse.collin@tukaani.org>
Tue, 23 Jan 2024 16:29:28 +0000 (18:29 +0200)
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).

src/xz/hardware.c
src/xz/message.c
src/xz/xz.1

index c6948821862ae4803100cf1081698630dad61057..73bac4a9872375424326b520029cc894a6be7b64 100644 (file)
@@ -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.
@@ -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;
 }
index b94a0ebaf73a01fad09111f6bcd8f374f55470a7..7756b5b27eabb776b697681f0b9947ee405591a2 100644 (file)
@@ -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(_(
index 3c09309b8c80045e72103e1eb170e9f9e98b0404..950585f8fb8322e5c75c9ad68cadb23ef2975b56 100644 (file)
@@ -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