{ "meta": { "title": "Post-Install: Performance | ProxMenux Documentation", "description": "Performance options in the ProxMenux Customizable post-install script. Replaces single-threaded gzip with pigz (parallel gzip) for faster backups and compression on multi-core hosts." }, "header": { "title": "Post-Install: Performance", "description": "Performance options inside the Customizable post-install script. Currently this category contains a single optimization: replacing gzip with pigz so backups and compression use every CPU core instead of one.", "section": "Settings post-install Proxmox" }, "intro": { "title": "What this category covers", "body": "The only performance option here rewires the system's gzip to a parallel implementation. Other performance-related tweaks (memory tuning, I/O scheduling, ZFS ARC sizing, kernel limits) live under their own categories (System, Storage) because they affect different subsystems." }, "pigz": { "heading": "Use pigz for faster gzip compression", "intro": "Standard gzip compresses data using a single CPU core. On modern Proxmox hosts with 8, 16 or 32 cores, that is a huge bottleneck during vzdump VM/CT backups, log rotation, and anything else that pipes through gzip. pigz is a drop-in parallel replacement: same gzip-compatible output, but it spreads the work across every core.", "doesTitle": "What ProxMenux does", "doesIntro": "Four steps, all idempotent:", "doesItems": [ "Sets pigz: 1 in /etc/vzdump.conf so Proxmox's backup tool uses pigz natively.", "Installs the pigz apt package if not already present.", "Writes a wrapper script at /bin/pigzwrapper that forwards every argument to /usr/bin/pigz.", "Registers a dpkg diversion for the system's gzip binary (/usr/bin/gzip on Proxmox VE 9, /bin/gzip on Proxmox VE 8): the real binary is kept beside it as gzip.distrib and the wrapper takes its place. From now on, anything that calls gzip — logrotate, tar czf, scripts, vzdump — uses pigz transparently.", "Checks that the file kept as gzip.distrib is a working gzip before the wrapper is put in place, and reinstalls the gzip package first when it is not. A host that still has the earlier /bin/gzip.original swap is moved to the diversion when the option is applied again." ], "replacesTitle": "This replaces a system binary", "replacesBody": "Putting a wrapper in the place of gzip is unusual. It is safe (the wrapper produces gzip-compatible output), but worth knowing: scripts that hardcode paths, run inside restrictive chroots, or verify binary hashes may behave differently. The real binary is preserved as gzip.distrib, and because the replacement is a dpkg diversion, an update of the gzip package — or the upgrade from Proxmox VE 8 to 9 — updates that file and leaves the wrapper in place.", "revertTitle": "Reversible from the Uninstall menu", "revertBody": "This optimization is tracked. Uninstall Optimizations copies the real binary from gzip.distrib back over the wrapper, removes the diversion and the pigzwrapper, comments out the pigz line in /etc/vzdump.conf, and runs apt purge pigz once gzip is verified to work. Manual equivalent on Proxmox VE 9:", "verifyTitle": "Verification", "verifyBody": "After applying, gzip --version should mention pigz. A quick benchmark also shows the speed difference on a multi-core host:", "whenTitle": "When this matters most", "whenBody": "The impact scales with how many cores the host has and how often you run backups. On a 2-core home-lab box with one daily vzdump, the benefit is marginal. On a 16-core production host backing up a dozen VMs every night, pigz can cut the backup window to a fraction of what single-threaded gzip takes." }, "related": { "heading": "Related", "items": [ { "label": "Backup and Restore commands", "href": "/docs/help-info/backup-commands", "tailRich": " — vzdump CLI reference, including --pigz threads option." }, { "label": "Storage", "href": "/docs/post-install/storage", "tail": " — vzdump speed limits and ZFS ARC tuning." }, { "label": "System", "href": "/docs/post-install/system", "tail": " — file-descriptor and memory tuning." }, { "label": "Customizable Post-Install", "href": "/docs/post-install/customizable", "tail": " — back to the parent menu." } ] } }