bloodknight
Anmeldungsdatum: 30. Oktober 2007
Beiträge: Zähle...
|
Hallo zusammen, habe heute meinen neuen PC bekommen: Athlon X2 5200+. Ich habe Ubuntu 8.10 völlig problemlos installieren können, nur eine Sache erscheint mir merkwürdig (Hatte noch keinen Dualcore). Wenn ich beispielsweise große bzip2-files entpacke, so wird ein Kern zu fast 100% ausgelastet, der andere aber nur zu ca. 10% (lt. htop). Das ist doch nicht im Sinne des Erfinders oder? Kann man das irgendwo einstellen, dass beide Kerne gleichmässig ausgelastet sein sollen? Danke für Eure Hilfe!
|
D3xter
Anmeldungsdatum: 2. Juni 2008
Beiträge: 75
|
Das ist normal. Dadurch läuft dein System weiter, auch wenn ein Prozess viel Rechenleistung benötigt.
Und es kommt immer auf das Programm darauf an, ob dieses so programmiert wurde, dass es auf zwei Kernen läuft.
Wenn das Programm das nicht unterstützt, hast du keinen Einfluss darauf. Dexter
|
d1rk
Anmeldungsdatum: 5. April 2006
Beiträge: 2420
|
bloodknight schrieb: Kann man das irgendwo einstellen, dass beide Kerne gleichmässig ausgelastet sein sollen?
Kann man, wenn du aber nicht weißt, wie und wo, kannst du da aufgrund fehlenden Wissens auch nichts Einstellen (bzw. schon, aber nicht zum Guten). Aber lass dir gesagt sein: Dein System verhält sich völlig normal und ganz und gar „im Sinne des Erfinders“.
|
rhi
Anmeldungsdatum: 22. Februar 2006
Beiträge: 296
|
bloodknight schrieb: habe heute meinen neuen PC bekommen: Athlon X2 5200+. Ich habe Ubuntu 8.10 völlig problemlos installieren können, nur eine Sache erscheint mir merkwürdig (Hatte noch keinen Dualcore). Wenn ich beispielsweise große bzip2-files entpacke, so wird ein Kern zu fast 100% ausgelastet, der andere aber nur zu ca. 10% (lt. htop). Das ist doch nicht im Sinne des Erfinders oder? Kann man das irgendwo einstellen, dass beide Kerne gleichmässig ausgelastet sein sollen?
Wenn du mehrere Dateien entpackst, kannst du immer 2 Dateien gleichzeitig entpacken, um die CPUs besser zu nutzen (möglicherweise geht dann aber die Plattengeschwindigkeit runter, weil mehr zufällig und weniger sequentiell gelesen/geschrieben wird - dieser Effekt ist bei mir aber kleiner als das, was die gleichzeitig Nutzung der CPUs bringt). Bei komplexeren Anwendungen ist das Aufgabe der Anwendung, ihre CPU-Last möglichst gut verteilbar zu machen (indem mehrere Threads/Prozesse erzeugt werden). bzip usw. sind aber eher einfache Programme, daher haben die aus gutem Grund keine solchen Funktionen.
|
glasen
Anmeldungsdatum: 5. November 2004
Beiträge: 2690
|
Oder noch einfacher gesagt : bzip2 ist noch nicht auf mehrere CPUs optimiert, deshalb benutzt es auch nur einen Kern. Aus diesem Grund lohnt es z.B. auch kaum sich eine 4-Kern-CPU anzuschaffen, da die allerwenigsten Programme von diesen 4 Kernen überhaupt profitieren. Lieber das gesparte Geld in einen vernünftige DualCore-CPU und mehr Arbeitsspeicher investiert.
|
d1rk
Anmeldungsdatum: 5. April 2006
Beiträge: 2420
|
glasen schrieb: Aus diesem Grund lohnt es z.B. auch kaum sich eine 4-Kern-CPU anzuschaffen, da die allerwenigsten Programme von diesen 4 Kernen überhaupt profitieren.
Och, also unsere Dualprozessor-Quadcore-Xeon-Server reißen schon so einiges 😉 Aber du hast schon recht, es kommt immer auf die Anwendung an! Schön, dass wir unsere Anwendung daraufhin optimiert haben. Alle acht Kerne sind immer gut ausgelastet ☺
|
LordSavage
Anmeldungsdatum: 19. April 2005
Beiträge: 1046
|
Bei mir ist es leider genau anders. Wenn ich mich recht erinnere springt der Prozess immer von einem Kern zum anderen und das ganze System hängt.
|
DasIch
Anmeldungsdatum: 2. November 2005
Beiträge: 1130
|
bloodknight schrieb: Das ist doch nicht im Sinne des Erfinders oder? Kann man das irgendwo einstellen, dass beide Kerne gleichmässig ausgelastet sein sollen?
Wieso? Ich finds genial dass beim kompilieren o.ä. ein Kern die Arbeit dafür übernimmt und der andere Kern sich um den Rest kümmert und ich gar nicht merke dass im Hintergrund dass System auf Hochtouren werkelt.
|
Laines
Anmeldungsdatum: 27. September 2006
Beiträge: 99
|
//edit: Und ein Programm nur in einem Kern laufen zu lassen anstatt beide gleichmäßig Auszulasten ist besser, denn durch das kopieren der Daten immer von der CPU1 zur CPU2 und umgekehrt wird das ganze Langsamer
OMG! 🙄
|
PrairieDog
Anmeldungsdatum: 16. Februar 2006
Beiträge: 870
|
Wenn du Autos hast, die ausschließlich auf der rechten Spur fahren können, dann bringt eine mehrspurige Fahrbahn auch nicht viel.
|
m0e
Anmeldungsdatum: 13. Oktober 2008
Beiträge: 99
Wohnort: Lkr. Bayreuth
|
Ich will nicht streiten, aber ich bin mir ziemlich sicher dass einige hier etwas falsch sehen. Es gibt immer mehr Prozesse als Kerne, die Aufgabe des Schedulers ist es, diese so intelligent zu verteilen, dass jeder mal drankommt, und man im Idealfall nichts davon merkt, dass das System gerade noch etwas anderes tut. Es ist ganz klar nicht im Sinne des Erfinders, wenn ich auf das Entpacken eines bzip2-images länger warten muß, obwohl ein Kern fast nur im idle ist. Wie glasen schon sagte, bzip2 ist schlicht nicht auf mehrere Kerne optimiert. Dieses Verhalten kann man zum Teil beeinflussen, beim Kompilieren z.B. kann man make die Option -j n übergeben, wobei n angibt, wieviel Prozesse parallel ausgeführt werden. Das klappt aber auch nur, wenn mehrere Kompilerjobs parallel ausgeführt werden können. Und das ist auch bei vielen Programmen der Fall, wenn die Last auf mehrere CPUs/Kerne verteilt werden soll, muss die zu verrichtende Arbeit parallelisierbar sein. Es wäre also normal und im Sinne des Erfinders, dass alle CPUs/Kerne belastet werden, wenn der Benutzer einen Auftrag gibt, damit der Auftrag so schnell wie möglich fertig ist. Es ist nicht so, dass mit Absicht ein Kern freigehalten wird, um auf andere Aufträge zu warten, aber es kann passieren, dass bestimmte Sachen nur auf einem Kern abgearbeitet werden können, da vereinfacht gesagt dass Ausnutzen von n Kernen auch n Prozesse (oder Threads) erfordert, die prinzipiell nichts miteinander zu tun haben. Wenn also ein einzelner Job mehrere Kerne nutzen möchte, muss er seine Arbeit aufteilen, diese Teile an mehrere Threads verteilen, und darauf achten, dass die Ergebnisse der einzelnen wieder zu einem Gesamtergebniss werden. Da oft ein Arbeitsschritt direkt von einem (oder mehreren) vorherigen Arbeitsschritt(en) abhängt, ist das nicht jedem Fall möglich, bzw. ist nicht immer so effektiv dass alle CPUs/Kerne gleichmäßig genutzt werden. Auf keinen Fall stimmt die weitverbreitete Meinung, dass eine 2GHz DualCore CPU so schnell wie ein 4GHz SingleCore ist. Dieses Synchronisieren der Prozesse erdordert aber nicht, dass ständig Daten zwischen den Cores hin- und herkopiert werden, es müssen zwar (geringe Mengen) Daten ausgetauscht werden, das bremst aber nicht so sehr, dass es dadurch langsamer wird.
|
d1rk
Anmeldungsdatum: 5. April 2006
Beiträge: 2420
|
m0e schrieb: Es ist ganz klar nicht im Sinne des Erfinders, wenn ich auf das Entpacken eines bzip2-images länger warten muß, obwohl ein Kern fast nur im idle ist.
Stimmt, darum entscheidet der Scheduler ja auch, auf welchem Kern der als nächstes Anstehende Prozess laufen soll.
Dieses Verhalten kann man zum Teil beeinflussen, beim Kompilieren z.B. kann man make die Option -j n übergeben, wobei n angibt, wieviel Prozesse parallel ausgeführt werden.
Ja, fürs Kompilieren. Auf das Kompilat (gibt’s das Wort? *g*) hat es jedenfalls keinen Einfluss.
Es wäre also normal und im Sinne des Erfinders, dass alle CPUs/Kerne belastet werden, wenn der Benutzer einen Auftrag gibt, damit der Auftrag so schnell wie möglich fertig ist.
Das geschieht auch, allerdings nur, wenn das Programm Multithreading-Fähig ist, und dem Scheduler verschiedene Prozesse anreicht, die dieser dann auf die Kerne verteilen kann. Wenn das Programm nur einen Prozess anreicht, kommt der eben auf einen der beiden Kerne.
Auf keinen Fall stimmt die weitverbreitete Meinung, dass eine 2GHz DualCore CPU so schnell wie ein 4GHz SingleCore ist.
Also zumindest DAS sollte mittlerweile so ziemlich JEDER begriffen haben ☺
|
m0e
Anmeldungsdatum: 13. Oktober 2008
Beiträge: 99
Wohnort: Lkr. Bayreuth
|
Dirk Sohler schrieb:
Ja, fürs Kompilieren. Auf das Kompilat (gibt’s das Wort? *g*) hat es jedenfalls keinen Einfluss.
Genau. Das wollte ich damit auch nicht sagen.
Es wäre also normal und im Sinne des Erfinders, dass alle CPUs/Kerne belastet werden, wenn der Benutzer einen Auftrag gibt, damit der Auftrag so schnell wie möglich fertig ist.
Das geschieht auch, allerdings nur, wenn das Programm Multithreading-Fähig ist, und dem Scheduler verschiedene Prozesse anreicht, die dieser dann auf die Kerne verteilen kann. Wenn das Programm nur einen Prozess anreicht, kommt der eben auf einen der beiden Kerne.
Exakt das hab ich mit meiner ellenlangen Ausführung gemeint, danke fürs Kurzfassen. 😉
Auf keinen Fall stimmt die weitverbreitete Meinung, dass eine 2GHz DualCore CPU so schnell wie ein 4GHz SingleCore ist.
Also zumindest DAS sollte mittlerweile so ziemlich JEDER begriffen haben ☺
Letzten hatte ich wieder einen, der sich nen Laptop kaufen will und bei den ganzen Angeboten dann immer die 2x2,26GHz usw. ausgerechnet hatte und mich fragte warum die das nicht gleich hinschreiben..
|
bloodknight
(Themenstarter)
Anmeldungsdatum: 30. Oktober 2007
Beiträge: 96
|
Danke für die vielen aufschlussreichen Kommentare! ☺
|