We schreven eerder al over GNU Parallel dat een parallelle vervanger is van xargs. Een handig programma dat nog verder gaat is PPSS (Parallel Processing Shell Script), een Bash-script dat op Linux en Mac OS X werkt. Wil je bijvoorbeeld een directory met wav-bestanden naar mp3 omzetten en dit werk automatisch over alle beschikbare cores verdelen, dan kan dat eenvoudig:

ppss -d /pad/naar/wavs -c 'lame'

Met de optie -d geef je de directory aan met de bestanden die je wil verwerken en met -c geef je het commando aan dat je op deze bestanden wil uitvoeren. De bestandsnaam wordt gewoon achteraan het commando geplakt, wat ook de reden is waarom er een spatie achter het commando lame moet staan. Als je de bestandsnaam in het midden van de opdracht wil hebben, gebruik je daarvoor de variabele $ITEM, bijvoorbeeld:

ppss -d /pad/naar/wavs -c 'lame -a "$ITEM" "/pad/naar/mp3s/$ITEM.mp3" --preset standard --quiet'

Je kunt ook een lijst van te verwerken bestanden in een bestand zetten, en dit dan met de optie -f in plaats van -d aanroepen:

ppss -f bestandmetwavs.txt -c 'lame'

Met de optie -p kun je het aantal parallelle jobs expliciet opgeven en dus een ander aantal dan het aantal cores dat PPSS in je computer vindt. Stel je dit lager in dan je aantal cores, dan voorkom je dat je computer tijdens zware bewerkingen te zwaar belast is om nog tegelijk als desktop te gebruiken, maar het kan ook andersom handig zijn: voor een niet zo processorintensieve taak als bestanden downloaden kun je gerust meer jobs opgeven als het aantal cores in je computer.

Verdeel en heers

Met PPSS kun je ook jobs verdelen over verschillende computers, maar dan moet je eerst wel het één en ander configureren. Alle nodes moeten ssh draaien en een gebruiker ppss hebben waarop je met een ssh-sleutel zonder wachtwoord op kunt inloggen. Op één computer (die de andere nodes zal besturen) installeer je PPSS en creëer je een configuratiebestand met het uit te voeren commando of script en de beschikbare computers. Met een deploy-commando wordt PPSS zelf en de configuratie naar alle nodes gekopieerd. Daarna start je PPSS op de besturende computer, waarna via ssh de te verwerken bestanden naar de nodes worden gekopieerd, daar verwerkt en de resultaten teruggestuurd. Een efficiëntere manier is om gewoon de bestanden via shared storage aan te bieden, bijvoorbeeld op NFS.

Meer informatie over PPSS is te vinden in de uitgebreide wiki, die onder andere documentatie biedt over de werking van PSSS en de werking van gedistribueerde PPSS, en introducties voor basisgebruik, gedistribueerd gebruik en gebruik als daemon.

Bron: Techworld