Vous constaterez probablement que zip
passe la plupart de son temps à attendre les E/S (lecture des fichiers et écriture des versions compressées), c'est pourquoi il n'utilise pas autant de CPU que prévu. En donnant au processus une priorité supplémentaire via nice
n'a aucun effet sur ce point car la tâche ne peut pas utiliser plus de temps CPU si elle n'est pas alimentée en données à un rythme qui l'exigerait.
Sous Linux, vous pouvez voir cette situation comme un pourcentage élevé de temps d'attente d'E/S dans la sortie de top
et des utilitaires similaires, il peut en être de même pour OSX.
Les raisons du temps d'attente de l'OI peuvent être les suivantes :
- le traitement de nombreux petits fichiers (beaucoup de mouvements de tête pour lire les fichiers et les structures de répertoire correspondantes)
- fragmentation des fichiers
- entrer en concurrence avec d'autres activités sur les lecteurs concernés (utilisateurs copiant/déplaçant/accédant à des fichiers, analyses AV programmées, ...) pendant que la sauvegarde a lieu.
- lire les fichiers sur un réseau (un CPU moderne peut compresser des données bien plus rapidement qu'une liaison à 100Mbit/s ne peut le faire, et la latence du réseau exacerbera l'effet des nombreux petits fichiers) ou pousser les données compressées sur le réseau (à moins que vos données ne soient exceptionnellement compressibles, la même condition "zip est plus rapide que votre réseau sur les CPU modernes" s'applique car il lira à partir de vos disques locaux et traitera le fichier plus rapidement qu'il ne peut ensuite envoyer le résultat sur le réseau)
- la contention du réseau (si le serveur auquel vous parlez a une liaison de 100Mbit et que d'autres l'utilisent, cela peut être un problème, moins si la liaison est plus rapide bien sûr)
- des disques lents ou des interfaces lentes (si l'un des disques concernés est connecté en USB2, il aura tendance à ne pas transférer plus de 25Mbyte/sec, parfois plus lentement en fonction de l'adaptateur USB utilisé et de la contention du bus USB avec d'autres périphériques rapides, alors qu'un disque interne moderne poussera le double, si ce n'est plus, pour les transferts en masse).
Si vous voulez utiliser les cycles CPU "libres" et que vous ne pouvez pas le faire en réduisant les délais d'E/S, vous pouvez essayer d'utiliser 7zip à la place - il utilise beaucoup plus de temps CPU par bloc de données mais réalise une meilleure compression que zip dans de nombreux cas, réduisant ainsi la taille de vos sauvegardes. Que ce soit plus rapide (parce que 7zip envoie moins de données sur le réseau) ou plus lent (parce que la complexité de calcul supplémentaire signifie que votre CPU peut devenir le goulot d'étranglement et non les disques/systèmes de fichiers/réseau) dépend des spécifications exactes de votre machine.
Editar:
Une autre chose, certains outils rapportent l'utilisation des processus par cœur et d'autres par CPU (et certains dans les deux cas selon les paramètres), et zip est généralement un processus threadé. Donc, si vous avez un processeur à quatre cœurs, il n'est pas improbable que ces 5% soient "5% du processeur", ou environ 20% d'un cœur (bien qu'il puisse rebondir entre les cœurs, s'il est à un seul fil, il ne fonctionnera pas sur plus d'un à un moment donné).