Sa zicem ca aveti multe arhive (tar.gz), si doriti sa le dezarhivati dar cite vreo 4 concomitent.
Deci recuperam lista de fisiere (sa zicem cu ls) si apoi ii zicem lu xargs sa ea cite un fisier (-n 1) si sa execute 4 comenzi tar -xzf concomitent (-P 4).
In final avem asta:
ls | xargs -n 1 -P 4 tar -xzf
Dar paralelizarea asta va fi cea mai efectiva cind locul lent (bottleneck) va fi procesorul si cind veti avea mai multe procesoare. Deoarece “by default” tar si alte comenzi utilizeaza un singur procesor. Dar daca sunt pornite mai multe concomitent, vor utiliza mai multe procesoare.
Apropo, cind aveti de comprimat un singur fisier mare (in asa caz xargs -P e inutil deoarece doar o singura comanda poate fi pornita), este pbzip2 care poate utiliza mai multe procesoare.
Alt fel, e cam idiot sa ai 8 procesoare virtuale (coreuri sau whatever), si sa utilizezi numai 1, isn’t it ?
In 2011 hai sa paralelizam.