Autore Topic: Parallel BZIP2  (Letto 637 volte)

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Parallel BZIP2
« il: 25 Febbraio 2015, 11:02:22 »
Smanazzando con gli script di backup di NonSoloAmiga (e altri siti che sono su questo server), ho scoperto questo: http://compression.ca/pbzip2/

Per compattare archivi molto grossi è una manna dal cielo. Mi suona strano, comunque, che nessuno abbia mai pensato di includere questa implementazione ottimizzata nella utility "ufficiale" bzip preinstallata su Ubuntu Server.
Avere due programmi, entrambi open source, entrambi unix oriented, che fanno la stessa cosa con due implementazioni differenti suona quasi come una bestemmia.

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re:Parallel BZIP2
« Risposta #1 il: 25 Febbraio 2015, 11:11:30 »
Ecco la differenza con il backup di un sito abbastanza grosso (circa 1GB dopo la compressione):

Usando BZIP2 versione standard
Codice: [Seleziona]
thekaneb@www:~$ time ./backup-natarajadance_org.sh
Putting the site in maintenance mode
Backup the DB
Backup the Files
Delete temporary files
Restore the site
Deleting old backups

real    4m39.251s
user    4m11.424s
sys     0m3.360s

Dopo la modifica, introducendo PBZIP2
Codice: [Seleziona]
thekaneb@www:~$ time ./backup-natarajadance_org.sh
Putting the site in maintenance mode
Backup the DB
Backup the Files
Delete temporary files
Restore the site
Deleting old backups

real    1m17.827s
user    4m20.808s
sys     0m9.033s

77 secondi contro 251, un incremento di 3.25x su una macchina virtuale con 4 thread hardware allocati, assolutamente niente male, considerando anche che i dischi sono di tipo meccanico, quindi c'è anche un piccolo collo di bottiglia in fase di lettura/scrittura dei file da comprimere.

Offline TheKaneB

  • Human Debugger
  • *****
  • Post: 5292
  • Karma: +20/-23
    • Mostra profilo
    • http://www.antoniobarba.org
Re:Parallel BZIP2
« Risposta #2 il: 25 Febbraio 2015, 11:13:36 »
Ah, una cosa da notare è che nella lista dei task ho visto 6 istanze del processo pbzip2, quindi mi viene da pensare che ragiona tramite fork(), mentre sul sito dicono che si avvale di pthread.
Ora non conosco gli internals di pthread, ma so che su Linux negli ultimi anni la differenza tra processo e thread si è molto sfumata, per cui non mi stupirebbe se si trattasse di un artefatto dovuto alla struttura dei processi linux. Comunque sia, è il risultato che conta, ed è un buon risultato :)

Tags: