XviD Multithreading: (Quadcore) 6 threads langsamer als 4 threads?

Mr.joker

Lt. Commander
Registriert
Mai 2008
Beiträge
1.957
Hallo!

Wie die Überschrift schon sagt: Ich war grad ein wenig am Rumprobieren…

Zunächst war ich froh, endlich ein Converter-Frontend (Xvid4psp) gefunden zu haben, dass xvid_encraw unterstützt und bei dem man das Multithreading manuell einstellen kann – und es auch funktioniert! ;)

Bevor die Frage aufkommt, warum ich überhaupt noch in xvid encodiere: Weil mein Standalone DVD-Player nichts anderes unterstützt. Und das ist somit im Moment noch das Maß der Dinge.

So, bei den "empfohlenen" 6 threads (1.5 pro Kern) ist die Auslastung recht gut, so im Schnitt bei 80-85% (im rechenintensiveren 2-nd pass), laut Ressourcenmonitor. Man kriegt das dort eigentlich schön grafisch aufbereitet, sieht also auch, dass es keine Spitzen gibt, die auf 100% gehen würden. Ein 1 GB großer Filmausschnitt benötigt mit meinen Einstellungen dann 15:38 Minunten.

Genau das gleiche, nur mit 4 threads, benötigt 12:29 Minuten. Dabei liegt die Auslastung bei ca. 70%.

Mit 3 threads wurde es dann wieder etwas langsamer.
Ebenso wurde es mit 6 + X threads zunehmend langsamer.
4 threads ist eindeutig am schnellsten.

Ich hab gedacht, ich seh nicht recht! :( Wie kann es sein, dass xvid mit weniger Rechenleistung (4 threads, statt 6) schneller ist?
Beherrscht xvid_encraw (1.2.2) das Multithreading doch nicht so richtig? Steht es sich bei der Aufgabenverwaltung/-verteilung vielleicht selbst im Weg?

Oder kann es an meinem Q8400 liegen, der ja mit 4 MB einen recht kleinen L2 Cache hat?

Bei meiner Xvid4psp Version (5.x... RC20) kann ich übrigens auch alternativ xvid 1.3.0 benutzen, aber das ist insgesamt langsamer und das Multithreading scheint auch nicht zu funktionieren. Irgendwie ist die Kernauslastung dann immer gleich.
 
Du hast 4 Kerne. Wenn Du 6 Threads darauf startest, dann werden immer andere Threads dadurch vom Prozessor geschubst (wenn man vom Hyperthrading mal absieht).
Es bleibt dabei, der Prozessor kann eben nur vier Programme parallel ausführen. Alles andere erzeugt zusätzlichen administrativen Overhead.
 
Hmm... ich weiß jetzt auch nicht mehr auf die Schnelle, wo ich das her hatte mit dem Startwert von 1,5 threads pro Kern... und dann sollte man schauen, was noch geht.
Ich meine, das aber mehrmals gelesen zu haben, aber ich könnt's jetzt auch nicht mehr schwören, ob nicht doch irgendwo dabei stand, dass das nur gilt, wenn man Hyperthreading hat!
Und der Q8400 hat das ja nicht!

Klingt auf jeden Fall einleuchtend einfach, deine Erklärung! :)
Das würde nebenbei auch erklären (fällt mir gerade auf), warum Hyperthreading erfunden wurde! ;)
Danke dafür!
Ergänzung ()

PS: In Brother John's Encodingwissen habe ich das gelesen.

Steuerung von XvidEncraw

-threads <Anzahl>
Werte: positive ganze Zahlen
Standard: 1

Verfügbar ab Xvid 1.2. Hier stellen wir ein, wie viele Threads Xvid zum Encodieren verwenden soll. Für Computer mit nur einer CPU sollten wir die Option weglassen. Wer Hyperthreading, Dual Core oder tatsächlich ein System mit mehreren Prozessoren sein Eigen nennt, muss ein wenig testen, welche Einstellung die schnellsten Ergebnisse bringt. Die Anzahl der CPUs oder CPU-Kerne mal 1,5 ist ein guter Startwert.

Quelle: http://encodingwissen.de/xvid/cli-referenz.html
 
Zuletzt bearbeitet:
Ich wollte damit aber nicht sagen, daß das nichts bringt. Nur das mehr Threads eben nicht unbedingt schnellere Abarbeitung bedeutet.


Theoretisch ist es möglich, daß mehr Threads als CPU Kerne vorhanden sind, Sinn macht. Das wäre z.Bsp. dann der Fall, wenn Threads auf asynchrone Prozesse warten, also z.Bsp. bei DMA Transfers der Festplatte zum/vom Speicher. An denen ist die CPU nicht beteiligt.
Im Normalzustand laufen ja schon mehrere Threads parallel, um die Betriebsfunktionen aufrecht zu erhalten, diese sind aber eben meistens nicht aktiv und Warten auf Ereignisse.

Ein anderer Fall wäre, wenn GPU Computing unterstützt werden würde.

Da hat der Artikel schon recht, da muß man ein wenig rumprobieren. Ich denke, es hängt viel von den anderen Komponenten, insbesondere der Festplatte ab.
 
Zurück
Oben