Mehr als einen Kern unter Mac OS X nutzen


Heutige Prozessoren haben meist mehr als einen Kern, aber die meisten Programme nutzen nur einen. Oft ist es egal, der Rechner ist auch so schnell genug. Aber dann kommt man manchmal in Bereiche, wo man sich ärgert, dass man nur einen Kern nutzen kann. Vor allem bei den UNIX-Befehlen, die als GNU-Version zum Teil mehrere Kerne ausnutzen können, langweilt sich ein Teil meiner Mac-CPU während der andere zu 100 Prozent ausgelastet ist. In meinem Beispiel geht es um eine Text-Datei mit 8.6 GigaByte (nicht MegaByte :-), die ich sortieren und verarbeiten muss. Was wäre, wenn man mehr als einen Kern nutzen könnte?

Wie viele Kerne hat mein Mac überhaupt? Einmal Terminal öffnen und dann

sysctl -n hw.ncpu

eingeben, schon wird die Anzahl der Kerne ausgespuckt. Naja, nicht ganz. Es ist die Anzahl der Threads. Mein MacBook Air hat einen Dual-Core-Prozessor, es werden aber 4 Kerne angezeigt. Und leider kann die Mac OS X-Version von sort nur einen Kern nutzen. Abhilfe schafft Homebrew:

/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)“

Danach

brew update

brew install coreutils

…und schon hat man die GNU-Version von sort, die mit gsort aufgerufen werden kann. gsort versteht den Parameter –parallel=n, mit meinen vier Kernen also…

gsort –parallel=4 datei.txt

Und siehe da, ich habe über 350% CPU-Auslastung  Achtung: Das funktioniert nicht, wenn gsort in einer Pipe auf den Output eines anderen Befehles wartet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert