J'ai environ 200 Go de données de journal générées quotidiennement, réparties sur environ 150 fichiers journaux différents.
J'ai un script qui déplace les fichiers vers un emplacement temporaire et fait un tar-bz2 sur le répertoire temporaire.
J'obtiens de bons résultats car les journaux de 200 Go sont compressés à environ 12-15 Go.
Le problème est qu'il faut une éternité pour compresser les fichiers. La tâche cron s'exécute tous les jours à 2 h 30 et continue jusqu'à 17 h 00-18 h 00.
Existe-t-il un moyen d'améliorer la vitesse de compression et de terminer le travail plus rapidement? Des idées?
Ne vous inquiétez pas des autres processus et de tout, l'emplacement où la compression se produit est sur un NAS , et je peux exécuter monter le NAS sur une machine virtuelle dédiée et exécuter le script de compression à partir de là.
Voici la sortie de top pour référence:
top - 15:53:50 up 1093 days, 6:36, 1 user, load average: 1.00, 1.05, 1.07
Tasks: 101 total, 3 running, 98 sleeping, 0 stopped, 0 zombie
Cpu(s): 25.1%us, 0.7%sy, 0.0%ni, 74.1%id, 0.0%wa, 0.0%hi, 0.1%si, 0.1%st
Mem: 8388608k total, 8334844k used, 53764k free, 9800k buffers
Swap: 12550136k total, 488k used, 12549648k free, 4936168k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7086 appmon 18 0 13256 7880 440 R 96.7 0.1 791:16.83 bzip2
7085 appmon 18 0 19452 1148 856 S 0.0 0.0 1:45.41 tar cjvf /nwk_storelogs/compressed_logs/compressed_logs_2016_30_04.tar.bz2 /nwk_storelogs/temp/ASPEN-GC-32459:nkp-aspn-1014.log /nwk_stor
30756 appmon 15 0 85952 1944 1000 S 0.0 0.0 0:00.00 sshd: appmon@pts/0
30757 appmon 15 0 64884 1816 1032 S 0.0 0.0 0:00.01 -tcsh
tar.bz2
fichier?
top
sortie montre que votre bzip2
processus à un seul thread utilise un cœur au maximum, mais que vous l'exécutez sur un système à quatre cœurs (un processus utilisant 100% CPU -> 25.1%
temps CPU de l'espace utilisateur, 74% inactif). Ainsi, avec des modifications mineures, vous pouvez aller 4 fois plus vite, à moins que quelque chose d'autre ne devienne le goulot d'étranglement. Lisez attentivement la réponse de Gilles. Pensez à utiliser le CPU dans la même case que les disques contenant les données pour effectuer la compression. (Vous pouvez même compresser certains de vos fichiers sur une boîte, d'autres sur l'autre et les archiver ensuite, de sorte que les deux processeurs sont utilisés.)