On Tue, Jan 11, 2005 at 08:06:12PM +0100, Alexander Dehoff wrote:
> Hi Leute,
>
> ich bin inzwischen stolzer Besitzer einer Dual Kiste und, wie ich noch
> von früher weiß, wird standardmäßig max. 50% je CPU pro Task genutzt.
Nein. Das stimmt nicht. Ein Thread laeuft immer zu einem bestimmten Zeitpunkt
auf maximal einer CPU. Das ergibt sich direkt aus der Arbeitsweise eines
Prozessors. Und kein halbwegs implementiertes Betriebssystem wird die
Auslastung eines Prozessors durch einen Prozess auf 50% kuenstlich begrenzen,
wenn keine anderen Prozesse um diese Ressource konkurrieren.
Also offensichtlich hast du da etwas ziemlich durcheinander gebracht.
Irgendwelche Programme zeigen vielleicht 50% Auslastung an, weil das Programm
eben auf genau einer CPU zu 100% laeuft (und auf der anderen zu 0% --- also
gar nicht), womit sich eine Gesamtauslastung der Prozessoren mit 50% ergibt.
> Wie kriege ich es hin, daß das OS nur auf CPU 1 rum turnt und ich von
> Hand einen Task auf CPU 2 starte (wie geht das)?
Das passiert immer so. Du kannst bloss auf vielen Systemen nicht steuern auf
welcher CPU. Bei einem wirklich symmetrischen System macht das ja auch keinen
Sinn. Bei Linux kannst du das steuern ueber den System-Call
sched_setaffinity(2). Dies macht eventuell Sinn, wenn du eine nicht voll
symmetrische Maschine hast, wie dies zum Beispiel beim AMD64 der Fall ist.
Wenn du aber nicht genau verstehst, was du da tust, machst du durch diese
"Optimierung" nichts besser, sondern alles hoechstens schlimmer.
Robert
--
Robert Schiele Tel.: +49-621-181-2214
Dipl.-Wirtsch.informatiker mailto:rschiele@uni-mannheim.de
- application/pgp-signature Anhang: stored
Received on Tue Jan 11 21:56:30 2005