XVideo: Hohe CPU-Last

rMarkus

Chuck The Plant
Hallo,

durch das Ablebens des Windows-XP-Rechners wollte ich nun FreeBSD mit der Aufgabe betrauen:

Dort sind jeweils die aktuellen Versionen aus den Ports von Xorg (xorg-7.3_2), VLC (vlc-0.8.6.i,2) und ATI-Treiber (xf86-video-ati-6.9.0) installiert.

Beim Abspielen von MPEG2-Videos benötigt VLC rund 7% CPU, was in Ordnung geht.

Problematisch ist jedoch die CPU-Last des X-Servers, welche bei ziemlich genau 50% liegt.
Es spielt hierbei keine Rolle welches Protokoll ich verwende (X11, XVideo ...), oder ob ich das Bild größer ziehe und dieses dann skaliert werden muss - die CPU-Last bleibt immer bei exakt 50%.

Nach der Dokumentation sollte http://www.x.org/wiki/RadeonFeature sollte der Treiber einiges an Hardwarebeschleunigung unterstützen.
Auch die Meldungen vom X11-Server unterstützen die These.

Test-System:
  • P4 2,4 GHz (FSB 533, 512 KB Cache)
  • Mainboard ServerWorks Grand Champion SL mit ausreichend Speicher (DDR266)
  • ATI Radeon 7000 PCI (R100)
  • per DVI an Bildschirm mit 1280x1024 angeschlossen (problemlos)
  • FreeBSD 7.1 PreRelease

Später soll das mal auf einer viel schwächeren VIA-CPU oder einem kleinen P3-Celeron laufen, welche auf keinen Fall die Leistung aufbringen können.
Die Grafikkarte bleibt erhalten (daher ist es auch PCI).


Was kann man machen?
 
vlc
Code:
 865 root          1 106    0 65348K 27436K RUN     54:08 47.56% Xorg
  919 video        11  44    0 57944K 44400K select   0:08  5.37% vlc

mplayer (mplayer-0.99.11_5)
Code:
  865 root          1 106    0 60920K 24724K RUN     58:41 46.09% Xorg
 1807 video         1  49    0 40660K 17004K RUN      0:18  8.98% mplayer

Also gleiches Problem.

PS: Interessant ist, dass ein Skalieren des Bildes nicht mehr CPU-Last erzeugt.
 
1034 root 1 102 0 430M 300M CPU1 0 5:45 24.66% Xorg
9990 pit 17 96 0 256M 82324K ucond 1 2:32 23.97% xine
mit 50% Bildgröße

1034 root 1 109 0 430M 301M CPU1 1 5:23 25.29% Xorg
9990 pit 17 96 0 256M 82296K ucond 0 2:06 22.46% xine
mit 100%

1034 root 1 117 0 437M 301M select 1 5:10 25.00% Xorg
9990 pit 17 96 0 258M 83884K ucond 1 1:48 21.48% xine
mit 200%

Ich fühle mich insgesamt von der Performance der X-Server seit Xorg 7er enttäuscht. Mit viel langsameren Rechnern und Grafikkarten war ich doch vorher schon mal besser bedient. Die Unterschiede fallen mir auch bei Linux Rechnern auf.
 
Die Lastaussagen von Top sind mit Vorsicht zu genießen, da steckt viel seltsame Magie drin.Achte lieber auf die Idle-Zeit, die Top angibt.
 
Mir erscheint das ziemlich logisch:

100% CPU-Last bedeutet volle Beschäftigung für die CPU in einem bestimmten Zeitintervall.

Bei den Gesamtwerten im top ist das gemessene Zeitintervall klein, so dass die Anzeige relativ direkt auf Laständerungen reagiert.

Bei der Anzeige der Programme im Top ist das gemessene Zeitintervall deutlich länger, so dass diese Anzeige träge reagiert.
Verschärft wird das noch bei Programmen wie X11, welche ständig laufen und die Messung träge nach unten Ziehen im IDLE. Wenn diese für eine kurze Zeit Last bekommen, steigert das kaum den Ausschlag für die Last bei dem Programm, jedoch bei dem nynamischeren Gesamtwerten oben schon.

(Bei Sun ist übrigens die Zeitperiode scheinbar noch viel länger gewählt, so dass der Eindruck entsteht, dass das System kaum belastet wäre)

Trotzdem stimme ich zu, dass im top noch mehr Unklarheiten verborgen sind.

Meine Messungen habe ich aber im Eingeschwungenen Zustand gemacht (nach einigen Minuten), da ergab die Summe von "vlc" und "x.org" ziemlich genau die Gesamtauslastung.
 
Mal eine vielleicht doofe Frage. Wenn du mplayer mit -v startest, müsstest du in der Ausgabe recht weit unten eine Zeile in dieser Art sehen: "using Xvideo port 65 for hw scaling". Der Port kann sich natürlich unterscheiden. Ist sie nicht da, würde es bedeuten, dass er in Software rechnet. Das die last beim Skalieren nicht steigt, ist ein Hinweis auf Beschleunigung, aber Kontrolle ist bekanntlich besser ;)
 
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
73178 pit 18 44 0 99436K 58732K ucond 0 0:01 53.56% xine
1057 root 1 55 0 114M 50740K select 1 3:32 17.48% Xorg

zeigt der Rechner, den ich derzeit am installieren bin, wenn ich einen Film ansehe und auch hinschaue. Der Wert für Xorg geht dramatisch runter, wenn ich auf eine Seite ohne Film wechsele, diesen also im Hintergrund spielen lasse.
Dieser PC hat zwei P4 mit 1.7GHz drin und genug Speicher, so etwa 2GB, so ganz blicke ich noch nicht dahinter.
Jedenfalls kompiliere ich da gleichzeitig vlc, während ich mit dem System auch spiele und Filme sehe (natürlich schaue ich nicht wirklich zu) und trotzdem spielen die Filme ganz manierlich. Die CPU Auslastung wäre erst bei ca 70%, sagt top.
 
Danke Yamagi, das probiere ich heute Abend mal aus.

Gestern haben habe ich noch was mit dem expliziten Setzen von Ausgangsdevices ( "mplayer -vo ..." ) bei mplayer herumgespielt:

Nur bei Xvideo reicht die CPU-Power des P4 2,4 aus um das Video flüssig darzustellen.

Daraus würde ich zuerst mal schließen, dass XVideo-Beschleunigung funktioniert.
 
Zurück
Oben