Gebruik al je processorkernen met GNU Parallel

multi-core

Artikelgereedschap

  • Tip ons
  • Printen
  • Reacties (0)
Aanbevelen

Gepubliceerd: Woensdag 20 oktober 2010
Auteur: Koen Vervloesem

Veel shell scripts maken helemaal geen gebruik van de kracht van de huidige multicore-processoren. Dat geldt ook voor de handige tool xargs, die een opdracht sequentieel uitvoert op een lijst van argumenten. Met de drop-in vervanger GNU Parallel kun je die uitvoering echter parallel maken.

Het Unix-commando xargs neemt een argumentenlijst van stdin aan en voert voor elk argument een commando uit. Zo pak je bijvoorbeeld alle gz-bestanden in de huidige directory uit met gunzip:


ls *.gz | xargs gunzip

Het nadeel is dat dit sequentieel gebeurt: de gz-bestanden worden één voor één na elkaar uitgepakt, en hierdoor gebruik je slechts een fractie van de beschikbare processorkracht. Gelukkig kent xargs ook opties die dit wel gebruiken: met -P geef je het aantal processen op dat xargs mag opstarten, en met -n het aantal rijen in de invoer die door elk proces per keer afgehandeld worden. Op een quad-core systeem wordt bovenstaande commando dan:


ls *.gz | xargs -P 4 -n 1 gunzip

GNU Parallel

Een programma dat een drop-in vervanger voor xargs biedt met een nog betere ondersteuning voor multicore-processoren is GNU Parallel. Je kunt met de optie -j (-P is ook ondersteund voor compatibiliteit met xargs) aangeven hoeveel processen tegelijk mogen worden uitgevoerd. Dit kan flexibeler dan met xargs. Je hoeft bijvoorbeeld geen vast aantal, zoals 4, in te geven, maar kunt ook aangeven hoeveel je bij het aantal processorkernen wilt optellen of aftrekken voor het aantal processen. Een eenvoudige manier om evenveel processen te starten als processorkernen is dan ook:


parallel -j +0

Je kunt ook opgeven hoeveel procent van de processorkernen GNU Parallel mag gebruiken, bijvoorbeeld:


parallel -j 50%

Zo zorg je dat je computer slechts maximaal voor de helft mag worden gebruikt door GNU Parallel. Als je de optie -j niet expliciet opgeeft, zal GNU Parallel standaard negen processen starten.

Het programma heeft nog heel wat geavanceerdere mogelijkheden, waarvoor je zeker de uitgebreide man-pagina eens moet lezen. Zo toont de optie --progress je een tussentijdse uitvoer, en met --sshlogin kun je ook van de verwerkingskracht van andere computers gebruikmaken.

Bron: Techworld

De rubriek Tips & Tools biedt praktische informatie die IT-professionals in hun dagelijkse werk kunnen toepassen.

Totaal 0 reactiesLaatste reacties


Nieuwsbrief

Ontvang dagelijks een overzicht van het laatste ICT-Nieuws in uw mailbox

Whitepapers

  • Maximaliseer het voordeel van SaaS

    Cloud-applicaties hebben grote invloed op het gebruik van de IT-architectuur en niet ieder project levert de verwachte voordelen op.

    Downloaden
  • Houdt grip op UC-uitdagingenUnified communications biedt heel veel, maar heeft ook specifieke uitdagingen!
  • Overheid bespaart met cloud computingDiscussie over cloud-beleid overheid. Whitepaper over kosten, veiligheid en beschikbaarheid.
» Meer whitepapers

Peiling

Loading Poll

Video: Review: HTC One X-smartphone met vijf...

Review: HTC One X-smartphone met vijf cores (video)