Archiv Prozessoren 8.660 Themen, 54.742 Beiträge

Von der Problematik der effizienten Nutzung von Mehrkern CPUs

Hausmeister Krause / 18 Antworten / Baumansicht Nickles

Hab ich bei Youtube gefunden.

Das ist eine Folge aus Mac-TV mit dem Titel "Per Anhalter durch Snow Leopard (Grand Central Dispatch)".

Eigentlich solls in der Folge um die Grand Central Dispatch-Technologie in Apples Snow Leopard gehen, aber das kommt irgendwie erst gegen Ende zum tragen ;)

Der Beitrag erzählt schön einfach etwas über die Hintergründe der Problematik mit mehreren CPU Kernen und wie man versucht, diese zu lösen. Man erfährt auch, warum 2 CPUs nicht doppelt so schnell sind wie eine, und warum der Geschwindigkeits-Schub abnimmt, je mehr CPUs man verwendet.

Einige werden jetzt wieder meckern, weil das ja eine Mac-Sendung ist, aber ich kanns nicht ändern. Auch als Windows oder Linux User kann man sich das mal ansehen. Ist interessant und leicht verständlich.

http://www.youtube.com/watch?v=tr9EKcR3xAE

http://www.youtube.com/watch?v=D3W8zznVI9c

http://www.youtube.com/watch?v=Ovp_5ssMkUU

Quelle: http://www.youtube.com/watch?v=tr9EKcR3xAE
Quelle: http://www.youtube.com/watch?v=D3W8zznVI9c
Quelle: http://www.youtube.com/watch?v=Ovp_5ssMkUU
Olaf19 Hausmeister Krause „Von der Problematik der effizienten Nutzung von Mehrkern CPUs“
Optionen

Vor längerer Zeit hatte hier jemand eine Grafik gepostet, die anhand mehrerer Kurven visualisierte, wie die Mehrleistung von Mehrkern-CPUs nach oben hin im Verhältnis abnimmt - schade, ich finde das Posting nicht mehr und habe auch bei der Google-Bildersuche nichts entdeckt. Nur so viel: Eine CPU mit 8 Kernen war natürlich nicht 8x, sondern "nur" 6x so schnell wie ein traditioneller Einkerner.

Mich beschäftigt übrigens noch eine ganz andere Frage: Wenn es Computer mit 8 Kernen gibt, oder sogar demnächst 12 beim neuen Mac Pro (2x Gulftown-CPU à 6 Kerne), gibt es eigentlich irgendeine Möglichkeit auszutesten, ob auch wirklich alle Kerne voll funktionsfähig sind?

Wenn z.B. Kern Nr. 7 oder Kern Nr. 11 ausfällt, würde man das ja gar nicht so ohne weiteres bemerken, man hätte ja so viele Kerne, dass es auf einen mehr oder weniger nur in Extremsituationen ankäme - wenn man denn überhaupt eine Software besäße, die dieses Potenzial ausschöpft.

Gibt es so eine "Kern-Tester"-Software, analog zu den RAM-Testern?

CU
Olaf

gelöscht_35042 Olaf19 „Vor längerer Zeit hatte hier jemand eine Grafik gepostet, die anhand mehrerer...“
Optionen

Moin Olaf,

du kannst das hier installieren und dann siehst du die Auslastung der einzelnen Kerne.

Funzt aber nur mit Intel....

http://blog.orbmu2k.de/sidebar-gadgets/intel-core-series-sidebar-gadget

Gruß
luttyy

Olaf19 gelöscht_35042 „Moin Olaf, du kannst das hier installieren und dann siehst du die Auslastung der...“
Optionen

Dass es das nur für Intel gibt, ist schon okay - die Mac Pros setzen ja auch Intel-Prozessoren.

Schade ist eher, dass es das nur als "Gadget" (für Windows) und nicht auch als "Widget" (für Mac OS X) gibt. Aber egal! Dass ein solches Tool überhaupt existiert, finde ich schon mal gut, Unterstützung aller gängigen Systeme ist dann sicherlich nur eine Frage der Zeit.

Eine andere Frage ist die der Auslastung - alle 12 Kerne auszulasten, wird anfangs gar nicht möglich sein, da es so leistungshungrige Software, die diese Technologie darüber hinaus voll unterstützt, nicht geben wird.

Der Wert dieses Gadgets steht und fällt daher mit einer *Simulation* der Auslastung - mir ging es nur darum festzustellen, ob alle Kerne korrekt funktionieren, inkl. derer, die bis auf Weiteres gar nicht gebraucht werden.

Wenn man eine Fehlfunktion erst dann bemerkt, wenn man alle Kerne braucht, ist der Rechner bis dahin längst außerhalb der Garantie ;-)

CU
Olaf

chrissv2 Olaf19 „Dass es das nur für Intel gibt, ist schon okay - die Mac Pros setzen ja auch...“
Optionen

Einfach einmal Boinc rennen lassen und gut is. Da werden alle Prozessoren permanent ausgelastet. Die Grafikprozessoren müssen natürlich Stream/Cuda fähig sein.

Mfg
chris

Ventox chrissv2 „Einfach einmal Boinc rennen lassen und gut is. Da werden alle Prozessoren...“
Optionen
Einfach einmal Boinc rennen lassen und gut is.

In grauer Vorzeit hatte ich mal bei Seti@home teilgenommen.
Das ging recht einfach als Bildschirmschoner zu installieren, und man konnte es auch manuell starten.
Nun habe ich mal dieses Boinc installiert und Seti@home ausgewählt.
Und nun, wie geht es weiter?
Wie kann ich es starten?
chrissv2 Ventox „ In grauer Vorzeit hatte ich mal bei Seti@home teilgenommen. Das ging recht...“
Optionen

Boinc ist installiert und unter Projekte steht nun "Seti"? In der gleichen Spalte ganz rechts sollte der Status stehen. Aufgaben die herunter geladenen Aufgaben, unter Übertragung die Aufgaben welchen hoch oder runter geladen werden und unter Meldungen werden alle Meldungen zu Boinc und zur Kommunikation zum Projekt angezeigt.

Und genau diese Meldungen sind jetzt interessant. Leider ist es bei Seti nach wie vor so dass das Projekt einfach lahmarschig ist. Egal ob nun beim runter laden der benötigen Seti-Dateien sowie beim hoch und runter laden der Aufgaben.

Faq:
http://www.boinc-team.de/portal/portal.php?html=boinc/artikel/boinc06.html

hth
chris

Borlander Olaf19 „Vor längerer Zeit hatte hier jemand eine Grafik gepostet, die anhand mehrerer...“
Optionen
Nur so viel: Eine CPU mit 8 Kernen war natürlich nicht 8x, sondern "nur" 6x so schnell wie ein traditioneller Einkerner.
Solche Pauschalaussagen sind allesamt unserös. Der Leistungsgewinn durch Parallelisierung muss immer im Bezug zu einer konkreten Problemstellung betrachtet werden. Ich kenne auch eine Software die auch auf >100 CPUs noch einen linearen Speedup (d.h. n-fache Geschwindigkeit mit n CPUs) erreichen kann. Bei zu kleinen Problemen würde das allerdings auch nicht mehr funktionieren...

12 Kerne gibt es inzwischen übrigens auch schon in einer CPU ;-)

Das einfach so ein kompletter Kern ausfällt wird in der Praxis nicht passieren. Erstmal werden die CPUs natürlich beim Hersteller getestet und wenn dann würden zunächst nur Teile ausfallen bzw. Rechenfehler auftreten. Die würden sich u.U. durch eine Instabilität des Systems zeigen. Schon im Leerlauf hat ein aktuelles System deutlich mehr Prozesse als CPU-Kerne in normalen Computern vorhanden sind. Da kommt also jeder Kern mal was ab und keiner muss sich langweilen...


Gruß
Bor
Olaf19 Borlander „ Solche Pauschalaussagen sind allesamt unserös. Der Leistungsgewinn durch...“
Optionen
12 Kerne gibt es inzwischen übrigens auch schon in einer CPU ;-)

Okay, aber die sind doch sicherlich nicht für "handelsübliche" Rechner geeignet, so wie man sie bei sich zuhause stehen hätte? Andernfalls hätte der für den kommenden Mac Pro geplante Gulftown ja jetzt schon keine Daseinsberechtigung mehr.

Da kommt also jeder Kern mal was ab und keiner muss sich langweilen...

Demnach würde man es relativ schnell merken, wenn ein Kern nicht funktionstüchtig wäre? Oder routet das System dessen Arbeitspensum dann so "intelligent" auf einen anderen Kern, dass der Fehler doch wieder kaschiert würde?

Wäre natürlich die eleganteste Lösung, wenn man ein solches Kern-Tester-Tool gar nicht benötigte.

CU
Olaf
Borlander Olaf19 „ Okay, aber die sind doch sicherlich nicht für handelsübliche Rechner...“
Optionen
Okay, aber die sind doch sicherlich nicht für "handelsübliche" Rechner geeignet, so wie man sie bei sich zuhause stehen hätte?
Nur eine Frage der Zahlungsbereitschaft. Die 12Kern Magny-Cours Optersons kosten "nur" rund 1000€/Stück, passende Mainboards liegen preislich im üblichen Rahmen. Die Verfügbarkeit in DE scheint aktuell jedoch noch ein Problem zu sein...

Demnach würde man es relativ schnell merken, wenn ein Kern nicht funktionstüchtig wäre?
Wie bei Speicherfehlern. Das System wird Fehler produzieren - die sich natürlich unterschiedlich äußern können.

Oder routet das System dessen Arbeitspensum dann so "intelligent" auf einen anderen Kern, dass der Fehler doch wieder kaschiert würde?
Der Scheduler hat keine Möglichkeit zu prüfen ob ein Prozesses korrekt arbeitet, und das fällt auch nicht in sein Aufgabengebiet. Technisch wäre es aber schon möglich einzelne CPUs bzw. Kerne auszuschließen. Bei Systemen die ein HotSwapping der CPUs ermöglichen muss der Scheduler sowas natürlich zwingend können.

Im Mainframe-Bereich gibt es übrigens (AFAIR von IBM) CPUs die mit Funktionalität zur Fehlererkennung beworben werden. Die liegen dann allerdings auch im mittleren 4-stelligen Euro-Bereich ;-)


Gruß
bor
Hausmeister Krause Borlander „ Nur eine Frage der Zahlungsbereitschaft. Die 12Kern Magny-Cours Optersons...“
Optionen
Im Mainframe-Bereich gibt es übrigens (AFAIR von IBM) CPUs die mit Funktionalität zur Fehlererkennung beworben werden. Die liegen dann allerdings auch im mittleren 4-stelligen Euro-Bereich ;-)

Jepp, das sind u.a. die System-I (davor i-Series und davor AS/400) Maschinen.

Da haben wir 2 Stück von. Bei den Dingern kann man dann auch u.a. z.B. das Prozessor Multitasking abschalten (frag mich, warum). Das sieht dann so aus:




Borlander Hausmeister Krause „ Jepp, das sind u.a. die System-I davor i-Series und davor AS/400 Maschinen. Da...“
Optionen

Was genau verbirgt sich denn hinter dieser Option, bzw. was bewirkt die?

Hausmeister Krause Borlander „Was genau verbirgt sich denn hinter dieser Option, bzw. was bewirkt die?“
Optionen

IBM erklärt diese Funktion so:

------------------------------------------------------------------------------------------------

QPRCMLTTSK

Prozessor-Multitasking.

Wenn die Systemhardware Prozessor-Multitasking unterstützt, ermöglicht dieser Systemwert das Aktivieren und Inaktivieren der Fähigkeit zum Prozessor-Multitasking. Ist Prozessor-Multitasking aktiviert, sind mehrere Gruppen von Task-Daten in jeder CPU resident vorhanden. Aufgrund von Caching kann dadurch ein besserer Durchsatz in bestimmten Auslastungssituationen erzielt werden.

Bei einigen partitionierten Systemen kann dieser Systemwert nur in
der primären Partition geändert werden.

Weitere Informationen über Partitionen enthält der Abschnitt
"Logical Partitions" im Handbuch iSeries Information Center unter
http://www.ibm.com/eserver/iseries/infocenter.

Anmerkung: Die Änderung dieses Wertes betrifft nur den anstehenden
Wert. Eine Änderung dieses Systemwerts wird beim nächsten IPL*
wirksam. Wenn der anstehende Wert ein von der Hardware unterstützter
Wert ist, wird der aktuelle Wert beim nächsten IPL in den
anstehenden Wert geändert. Wenn der anstehende Wert jedoch ein von
der Hardware nicht unterstützter Wert ist, wird der anstehende Wert
beim nächsten IPL auf den aktuellen Wert zurückgesetzt. Wird der
Systemwert auf 2 gesetzt, ist das System zum Multitasking in der
Lage; 2 ist auf allen Hardwaremodellen ein gültiger Wert für diesen
Systemwert.

Der Vorgabewert ist 2.

------------------------------------------------------------------------------------------------

*Anmerkung von mir: Ein IPL ist nichts anderes, als ein Neustart der Maschine.

Borlander Hausmeister Krause „IBM erklärt diese Funktion so:...“
Optionen

Wenn ich das richtig interpretiere soll diese Funktion also einen Cache-Verlust beim Task-Wechsel vermeiden bzw. eher reduzieren...

Gruß
bor

Hausmeister Krause Borlander „Wenn ich das richtig interpretiere soll diese Funktion also einen Cache-Verlust...“
Optionen

Ja, könnte man so interpretieren. Leider findet sich auch im i-Series Infocenter keine genauere Beschreibung.

Ich guck aber mal weiter.

Timbosteron Hausmeister Krause „Von der Problematik der effizienten Nutzung von Mehrkern CPUs“
Optionen

Naja, das ist ja im Prinzip auch logisch, dass der Geschwindigkeitszuwachs nicht so ist, wie die Industrie einem das vormachen möchte. Ich nehme ja gerne das (stark vereinfachte) Beispiel des Kaffeekochens. Man hat mehrere Vorgänge: Wasser in die Kanne, Wasser in die Maschine, Filter in die Maschine, Kaffee in die Maschine. Teile ich die Vorgänge unter Personen auf, kann einer Wasser holen, einer den Filter in die Maschine machen. Drei Leute währen schon zu viel, denn man kann sonst nichts gleichzeitig machen. Und das ganze unter vier Leuten aufzuteilen ist auch albern. usw. :)

Olaf19 Timbosteron „Naja, das ist ja im Prinzip auch logisch, dass der Geschwindigkeitszuwachs nicht...“
Optionen

Okay - es könnten aber zwei Leute Kaffee kochen und zwei andere z.B. Essen kochen.

Es ist schon klar, dass simple Aufgabenstellungen mit mehreren Kernen nicht viel anfangen können - aber man könnte mehrere simple Aufgaben auf verschiedenen Kernen parallel laufen lassen, immer vorausgesetzt natürlich, dass System und Software dies unterstützen.

CU
Olaf

Vagabund Olaf19 „Okay - es könnten aber zwei Leute Kaffee kochen und zwei andere z.B. Essen...“
Optionen

Jo hier z.B. von meiner Uni mal was dazu:
http://www-ivs.cs.uni-magdeburg.de/EuK/lehre/lehrveranstaltungen/ss09/rs/Parallelrechner2.pdf

Das ist eigentlich 2. Semester Informatik dran und recht einfach zu erklären. Einfach mal bei den Unis in die Vorlesungsfolien schauen ^^ Kann ich jedem empfehlen. Kanns selber kaum wirklich wiedergeben, weils relativ umfangreich ist, aber es ist so gesehen relativ simpel. Unser Problem ist, dass wir derzeit an einem Punkt sind, wo man so krass parallelisiert, dass man vergisst, dass es einen nicht-parallelisierbaren teil gibt und der ist oft der Flaschenhals ^^

Hausmeister Krause Vagabund „Jo hier z.B. von meiner Uni mal was dazu:...“
Optionen
dass man vergisst, dass es einen nicht-parallelisierbaren teil gibt und der ist oft der Flaschenhals

Ganz genau.

a=3+2
b=4+1
c=a+b

CPU 1 könnte "a" ausrechnen und parallel dazu könnte CPU 2 "b" ausrechnen.

"c" ist der nicht mehr parallelisierbare Teil, weil der erst berechnet werden kann, wenn "a" und "b" ausgerechnet sind.