Vous pouvez changer la vitesse de gzip en utilisant --fast
--best
ou -#
où # est un nombre compris entre 1 et 9 (1 est le plus rapide mais moins compressé, 9 est le plus lent mais plus compressé). Par défaut gzipruns au niveau 6.
La raison pour laquelle tar prend si peu de temps par rapport à gzip est qu'il y a très peu de surcharge de calcul pour copier vos fichiers dans un seul fichier (ce qu'il fait). gzip, d'autre part, utilise en fait des algorithmes de compression pour réduire le fichier tar.
Le problème est que gzip est limité (comme vous l'avez découvert) à un seul thread.
Entrez pigz, qui peut utiliser plusieurs threads pour effectuer la compression. Voici un exemple d'utilisation :
tar -c --use-compress-program=pigz -f tar.file dir_to_zip
Il y a un joli résumé succinct de l'option --use-compress-program sur un site frère.
Il semble que j'utilise un seul processeur à environ 100 %.
Cela implique qu'il n'y a pas de problème de performances d'E/S mais que la compression n'utilise qu'un seul thread (ce qui sera le cas avec gzip).
Si vous parvenez à obtenir l'accès/l'accord nécessaire pour installer d'autres outils, 7zip prend également en charge plusieurs threads pour tirer parti des processeurs multicœurs, bien que je ne sois pas sûr que cela s'étende au format gzip ainsi qu'au sien.
Si vous êtes obligé d'utiliser uniquement gzip pour le moment et que vous avez plusieurs fichiers à compresser, vous pouvez essayer de les compresser individuellement - de cette façon, vous utiliserez davantage ce processeur multicœur en exécutant plusieurs processus en parallèle. Attention cependant à ne pas en faire trop, car dès que vous vous approchez de la capacité de votre sous-système d'E/S, les performances chuteront précipitamment (à un niveau inférieur à celui si vous utilisiez un processus/thread) car la latence des mouvements de la tête devient importante. goulot d'étranglement.