![]() |
MTX - The Universal Accelerator
10 Attachment(s)
https://i.ibb.co/k2VpTrJj/hh.png MTX v0.3 Universal Multi-Threading Accelerator for FreeArc External Compressors Windows x64 · single exe, no dependencies · by BLACKFIRE69 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━ ▌ OVERVIEW Many of the strongest external compressors (precomp, mpz, rz, nz, srep …) are single-threaded: on a modern multi-core CPU they leave most of the machine idle. MTX sits between FreeArc and the compressor, splits the archive data stream into fixed-size chunks, runs N parallel instances of the compressor on those chunks, and merges the results back into one sequential stream — in guaranteed original order. One config line turns a single-threaded compressor into an all-cores compressor. ▌ TECHNICAL SPECIFICATIONS
Wrapped-tool I/O modes (auto-detected from the method's command lines): Code:
╭───────────────┬────────────────────────┬───────────────────────────────╮256 MB of heterogeneous data compressed with zstd -17 as the wrapped single-threaded compressor. v0.3 was run with --progress=off --toolProgress=off; each version round-trips its OWN archive (SHA-256 verified identical). Code:
╭──────────────────────┬─────────┬─────────┬─────────╮▌ KEY FEATURES ✦ True Parallel Compression -t# Continuous reader/workers/writer pipeline — chunks are read, compressed and written simultaneously by N parallel tool instances (-t#, default -t100p = one per logical core). The slowest chunk never stalls the rest. ✦ Guaranteed Stream Order Output chunks are always written in the original input order, whatever order the workers finish in. FreeArc sees one opaque sequential stream. ✦ Memory Budgeting --mem= --mem=8g sets a total RAM budget for chunks in flight (default: half of free RAM). --toolMem=2g declares how much RAM one tool instance needs — MTX then starts only as many instances as the machine can hold. A memory-hungry tool like rz can no longer freeze the whole system at -t100p. ✦ Safe Archive Format (MTX2) Magic + version header, per-chunk frames carrying both sizes and a CRC32 checksum, explicit end marker with chunk count and total size. Damaged, truncated or foreign data is detected and reported — never silently unpacked into garbage. ✦ Independent Thread Counts Every chunk frame is self-describing, so compression and decompression thread counts are fully independent. Pack with -t2 on a mid-range PC, unpack with -t16 on a high-end gaming PC. ✦ Live Status Display A gray "#[#]" line above the MTX status shows the wrapped compressor's OWN live progress for the chunk currently gating the output; file-based tools get a per-chunk pseudo-console so they report progress even when piped. --progress=on|auto|off controls the whole display; --toolProgress=auto|on|off controls just the tool line. Errors always print regardless. ✦ Machine-Global Config (MTX.ini) An optional MTX.ini next to the exe carries per-machine defaults (threads, chunk, mem, toolMem, okcodes, tempPath, basePath, cfgFile, progress, logs). Anything on the command line overrides it, so shared configs stay minimal and machine tuning lives next to the exe. ✦ Strict Error Contract Tool failures, I/O errors and archive damage reach FreeArc as a nonzero exit code with a clear message: 0 = OK, 1 = runtime error, 2 = usage/config error, 3 = archive damaged. MTX never exits 0 after a failure, so FreeArc never finalizes a broken archive. ✦ Tolerant Tool Handling --okcodes=0,2 accepts benign nonzero exit codes (precomp exits 2 when it finds nothing to precompress). Tool stderr is passed through, so the wrapped compressor's own messages stay visible. ✦ Collision-Free Temp Handling Every parallel instance works in its own private temp directory — file-based tools and scratch-file writers (srep) cannot overwrite each other. --tempPath="X:\MyTemp" redirects all temp I/O to a chosen drive. ✦ Per-Method Defaults In an MTX-only config file, a method section can carry its own defaults: okcodes, mtxthreads, mtxchunk, mtxmem. Command-line flags always win. ✦ Session Logging --logs appends a timestamped session log (resolved options, per-chunk timings, child command lines) to MTX.log next to the exe. ▌ COMMAND REFERENCE Code:
MTX64.exe <Command> <Options> [Settings] Input OutputExample 1 — Wrap a method in FreeArc's arc.ini Code:
; the plain single-threaded methodCode:
MTX64.exe a -mprecomp -c128m -t100p - - <stdin> <stdout>Code:
MTX64.exe a -mrz -c64m -t100p --toolMem=2g --mem=8g - - <stdin> <stdout>Code:
MTX64.exe a -mprecomp -c64m --okcodes=0,2 data.tmp packed.tmpCode:
[External compressor:rz64]Example 6 — Maximum throughput (MTX status on, tool line off) Code:
MTX64.exe a -mzstd -c8m -t100p --progress=on --toolProgress=off - - <stdin> <stdout>▌ DISTRIBUTION FILES
▌ NOTES
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━ Feedback, bug reports, and edge cases are all welcome. . |
If anyone wants an example of "Inno setup" for MTX.exe, just let me know. ;)
|
MTX console version works perfectly. Also I was tested MCM works perfectly.
|
Masks
MTX.exe supports MASKS (Arc.Groups)
Quote:
|
Quote:
|
Quote:
Different methods are specified with groups, which you can write yourself into the file "arc.groups" next to your arc.exe for compression. Write your group as example: Code:
$nameofgroupCode:
srep+lolz/$nameofgroup=rzx |
Quote:
|
MTX.exe Feature update
MTX.exe Feature update v.3.0.0.0 What's New:
Additional Options For both Compression and the Decompression: Code:
-----------------------------------------------------------------------------_ |
Oh, thank you!
Can I have an example or small guide to adapt Inno/ASIS to this please? I'm probably doing something wrong with my frankenstein script lol Edit/question: Is Xlolz working multithreading via MTX? It doesn't seem for me. Edit2: It works with fixed thread count and not % like default (?) |
Quote:
You can't use "XLolz" via "MTX" (because both are accelerators). but it supports "MTX + Lolz". ok, I'll give you some examples for both INNO Setup and Lolz with MTX. |
Quote:
Quote:
So.. Something works but not well Using unpack.bat Quote:
|
Quote:
|
New Update
MTX v.5.0.0.0 - October Update
Code:
Example:=
Code:
Example:=
Code:
Example:=
Code:
Code:
MTX Variables:Will show some errors in nanozip decompression with MTX.exe. therefore it is better to use cls-nzx.dll instead of MTX.exe. ;) guys, I don't have enough space to upload it here. so use this link.... MTX v5.0.0.0 + Full Examples.rar _ |
@BLACKFIRE69, very good the new key default options in example 5.
It will be very useful for the need to use MRX.ini. Thanks for the great job. If you have both configurations, which one will be used? I mean if you have MTX.ini configured in one way and use the key default with --mainpath, etc. in another way, which one will be used? |
Quote:
means, If MTX.ini is not configured, it uses the default keys. |
| All times are GMT -7. The time now is 11:12. |
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, vBulletin Solutions Inc.
FileForums @ https://fileforums.com