Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2009  »  02  »  Parallelarbeit  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

© Ulrike Lacour, Pixelio.de

Bash-Skripte, die Multicore-Prozessoren auslasten

Parallelarbeit

von Bernhard Bablok
Erschienen im Linux-Magazin 2009/02

Programme so zu schreiben, dass sie aktuelle Multicore-Prozessoren gleichmäßig auslasten, ist nicht trivial. Leichter geht das überraschenderweise mit der Shell. Die Bash-Skripte lassen sich nämlich mit Bordmitteln parallelisieren.

Will man Software dazu bewegen, verschiedene Dinge parallel auszuführen, dann liegt die erste Herausforderung darin, die Aufgabe in sinnvolle Teilprobleme aufzuteilen, die der Rechner gleichzeitig bearbeiten und deren Resultate er am Ende wieder zusammenführen kann. OpenMP ist eine Bibliothek, die bei dieser Spielart der Parallelisierung hilft. Für Bash-Skripte ist dagegen nicht das numerische Problem typisch, stattdessen sollen sie oft mehrere Dateien in gleicher Weise verarbeiten.

Klassisch seriell

Ein solches Skript sieht dann typischerweise aus wie Listing 1. Die Shellfunktion arbeitet darin alle Argumente der Reihe nach ab und übergibt sie an ein Programm (»doSomething«). Eine parallele Verarbeitung drängt sich hier förmlich auf. Dafür bieten sich verschiedene Strategien an.

Bevor sich der Skript-Autor aber ins Programmieren stürzt, lohnt es sich zu überlegen, ob eine Parallelisierung überhaupt sinnvoll und machbar ist.

Listing 1: Serielle
Verarbeitung

01 doSeriell() {
02  local item
03  for item in "$@"; do
04   doSomething "$item"
05  done
06 }

Sinnfrage

Die Sinnfrage ist recht einfach zu beantworten, eine Hilfestellung gewährt hier der Befehl »sar -u -P ALL 1 0«. (Das Utility »sar« ist Teil des Sysstat-Pakets [1].) In einer zweiten Konsole startet der Tester anschließend das Bash-Skript. Der Sar-Befehl gibt im Sekundenabstand die Auslastung aller CPUs des Systems aus (Abbildung 1). Neben dem »%idle«-Wert ist auch der »%iowait«-Wert interessant: Er zeigt, ob die Berechnung womöglich pausiert, weil das System auf ausstehende I/Os wartet.


Abbildung 1: Die Ausgabe von »sar« zeigt die Auslastung aller CPUs. Nur wenn einige Kerne überlastet sind, während sich andere langweilen, lohnt sich Parallelisierung.

Die Sar-Werte erleichtern die Entscheidungsfindung sehr: Nur falls es überhaupt Prozessoren gibt, die sich langweilen, während gleichzeitig andere am Anschlag arbeiten (wie in Abbildung 1), lohnt sich eine Parallelisierung. Typische Anwendungsfälle sind CPU-lastige Bild- und Musikkonvertierungen oder das Parsen von Logdateien mit komplexen regulären Ausdrücken. Ungeeignet sind dagegen I/O-gebundene Prozesse. Zwar lässt sich durchaus das Kopieren von 200 Dateien von einem Verzeichnis in ein anderes parallelisieren, nur bringt das letztlich gar nichts, weil hier die Festplatte den Engpass bildet.

Die Machbarkeit der Parallelisierung bestimmt dagegen in erster Linie das Problem. Wenn die Verarbeitungsschritte voneinander abhängen oder wenn die Reihenfolge der Verarbeitung wichtig ist, dann ist eine sequenzielle Abfolge unvermeidlich. Eventuell hilft dabei ein anderer Algorithmus, die in diesem Artikel vorgeschlagenen einfachen Änderungen reichen in dieser Situation sicherlich nicht aus.

Außerdem sollte der Admin noch bedenken, dass es nicht immer sinnvoll ist, den Rechner voll auszulasten. Wenn er neben CPU-intensiven Aufgaben auch noch seiner regulären Tätigkeit am Rechner nachgehen will (Mailing, Internet, Texte schreiben und so weiter), wird er eine sequenzielle Verarbeitung im Hintergrund, die nur einen Kern beschäftigt, eher mögen als die schnelle Alternative, die den Rechner blockiert.

Sie können diesen Artikel als PDF für 99 Cent kaufen. Klicken Sie dazu einfach auf eine der beiden Bezahloptionen Paypal oder ClickandBuy.


Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
Vom Thron gestürzt Die besten Lesereinsendungen des Programmierwettbewerbs
Aufpoliert Neue Funktionen in der Bash-Version 4
Wissenstransfer Aussichtsreiche Würfelkandidaten unter der Lupe
Zauberlehrling Automatische Bildbearbeitung mit Imagemagick
Tooltipps Werkzeuge im Kurztest
Am offenen Herzen Beweise sammeln, während der Angreifer noch aktiv ist
Whitepaper
Usage Landscape Enterprise Open Source Data Integration

Die Nachfrage nach Datenintegrationslösungen für Unternehmen ist zunehmend gestiegen und vor allem das Interesse an Open Source Technologien wird immer größer. Doch wie und von wem werden Open Source Datenintegrationslösungen genutzt und welches Nutzungsverhalten lässt sich daraus ableiten? Das vorliegende White Paper präsentiert die Erfahrungswerte von über 1000 Open Source Nutzern und liefert fundierte Antworten auf diese Fragen.

Download PDF (Registrierung erforderlich)
Daten Migration - Eine Publikation von Bloor Research

Datenmigrationsprojekte überschreiten häufig das Budget, neigen zu Verzögerung und werden unter Umständen komplett abgebrochen. Bloor Research ist eines der weltweit führenden IT-Forschungs-, Analyse- und Beratungsunternehmen und wird in dem vorliegenden White Paper die wichtigsten Aspekte dieser Problematik näher beleuchten. Ferner werden praktische Empfehlungen für erfolgreiche Migrationsprojekte gegeben, die Sie auf Ihr nächstes Projekt übertragen können.

Download PDF (Registrierung erforderlich)
Kommentare (0)