Zwei Kern Prozessor

Discussion in 'CloneDVD mobile (de)' started by ITSE, Nov 15, 2007.

  1. ITSE

    ITSE Guest

    Habe festgestellt das nicht die volle Power meiner CPU genutzt wird beim konvertieren eines Videos.

    Prozessor Intel Core 2 Duo E6600 beide Kerne zusammen werden nur mit 50% ausgelastet. Wieso das? Da geht doch mehr oder nicht?
     
  2. geo2810

    geo2810 Member

    hallo

    genau die selbe frag e stellte ich mich auch gerade

    warum geht auch in der neuersten version nur 50%
    ich hab jetzt extra einen core 2 duo 3.0 angeschafft und jetzt das

    bitte um ein update

    lg
    geo
     
    Last edited: Nov 18, 2007
  3. Hunchback

    Hunchback Well-Known Member

    Euch ist wohl nicht bekannt was es heißt mal eben das programm auf 2-kern funktionalität umzuschreiben :p
    wenn ihr 2 Filme habt startet das programm 2 mal und weißt jedem prog nen kern zu und schon habt ihr 100%ige auslastung des systems.

    MfG
    Hunchback
     
  4. geo2810

    geo2810 Member

    also deine antwort nutzt wohl auch genau niemanden
     
  5. Hunchback

    Hunchback Well-Known Member

    wo ist denn dein problem bitte?
    ich habe lediglich festgestellt das man mal nicht ebenso ein programm auf 2-Kern unterstützung umschreiben kann.
    und dann hab ich euch noch nen freundschaftlichen tipp gegeben.:doh:

    MfG
    Hunchback
     
  6. geo2810

    geo2810 Member

    ich hab kein problem

    und das mit dem 2x starten klappt auch nicht immer zu 100%

    aber egal die jungs/mädls vom slysoft team werden das auch noch hinkriegen ;)
     
  7. Peer

    Peer Redfox Development Team Staff Member

    Leider hat Hunchback hier vollkommen recht. Es ist nicht ganz so einfach, wie der User sich das üblicherweise vorstellt.

    Vielleicht schreibe ich mal ein paar Worte dazu, denn das Thema kömmt häufiger auf. Viele denken: "ich schmeiße einfach zwei Kerne auf meine Aufgabe und es geht doppelt so schnell voran". Ist nicht so. Leider.

    Mehrere Kerne sind recht nützlich, wenn es darum geht, ein rechenintensives Programm im Hintergrund auf einem Kern zu betreiben und der andere Kern widmet seine volle Aufmerksamkeit dem Benutzer, der gleichzeitig seine E-Mails bearbeitet, ohne daß sich das System "klebrig anfühlt".
    Auch können wunderbar 2 unabhängige rechenintensive Prozesse parallel betrieben werden. Dann hat man tatsächlich nahezu die doppelte Leistung zur Verfügung (auch hier: nahezu).

    Will man aber eine einzige Aufgabe von beiden Kernen bearbeiten lassen, wird es schwierig.
    1. wenn beide Kerne die gleichen Daten verwenden (dazu zählen bei der Videoverarbeitung nicht nur die Filmdaten, sondern div. Matrizen, adaptive Strukturen udgl.), müssen sie laufend synchronisiert werden. D.h. im µs-Takt muss jew. ein Kern darauf warten, daß der andere Kern einen Datenbereich freigibt, den dieser gerade bearbeitet.
    2. auch auf Hardwareseite ein vergleichbares Problem: besonders, wenn es um viele Daten geht, muß sehr viel auf den Hauptspeicher zugegriffen werden. Es kann sich immer nur ein Prozessorkern auf einmal am Speicherbus bedienen. Auch hier also: der andere muß warten, bis er an der Reihe ist.
    Die beiden Punkte mögen klingen, wie "na, dann verliere ich halt 2 oder 3% Leistung".
    Tatsache ist aber, daß man im Falle von z.B. Video-Verarbeitung über einen Zugewinn von 10% schon recht froh sein darf.

    Im Extremfall haben wir bei Tests von z.B. MPEG4 mit Dualcore beobachtet, daß die angezeigte Prozessorlast auf 51-52% "angestiegen" ist. Dabei muß man bedenken, daß für die Synchronisation zusätzlicher "Sprit verbrannt" wird, mit anderen Worten also evtl. sogar davon ausgegangen werden muß, daß die Verarbeitung langsamer, als mit einem Kern verlief.

    Bei komplexeren Algorithmen, wie z.B. bei AVC ist der Gewinn etwas größer (mehr Rechenaufwand verteilt auf weniger Daten) - ca. 10-20%, aber es kommen zusätzliche Probleme auf: das Ergebnis ist nicht mehr deterministisch.
    Wie man sich leicht klarmachen kann, ist es kaum möglich, jeden Kern auf einen eigenen Frame im Videostrom anzusetzen. Jeder Frame setzt auf die Ergebnisse des vorhergehenden Frames auf (außer Keyframes).
    Wenn nun 2 Kerne zugleich an unterschiedlichen Bereichen des gleichen Bildes arbeiten, bestimmt der Zufall, in welcher Reihenfolge der Frame abgearbeitet wird.

    In unseren Tests hieß das sogar: die Ergebnisse ließen sich teilweise nicht einmal abspielen.

    Alles in allem: am effektivsten bleibt es vorerst, CloneDVD mobile 2x zu starten und 2 unterschiedliche Filme parallel zu verarbeiten.
     
  8. TheDuke

    TheDuke Active Member

    Lösungsvorschlag

    Sehr interressanter Beitrag,

    Ich hatte ebnenfalls mit diesem Thema zu kämpfen und bin nach wie vor nicht ganz glücklich ABER esgibt da ein nettes CPU-Control-Programm von http://www.koma-code.de/ das sich ganz einfach CPU-Control nennt.

    Man kann wie auf meinem System Intel-Dual-Core ganz einfach die CPU für MENCODER.EXE auf CPU1+CPU2 einstellen und schon läuft die Konvertierung auf 2 CPUs.

    Das Programm ist frei runter ladbar! :clap:

    Dsa einzige was ich immer noch an CloneDVDMobile zu bemängeln habe ist dass ich nicht mehrere Filme hintereinander Umwandeln kann. Aber das ist eine andere Geschichte die den Entwicklern nicht so wichtig erscheint :doh:

    Gruss - TheDuke :D
     
  9. Peer

    Peer Redfox Development Team Staff Member

    :)
    Ich sag's ungern, aber das Programm hast Du falsch verstanden. Zaubern kann es natürlich auch nicht.
    Wenn man damit einstellt, daß mencoder auf CPU1+2 laufen soll, dann stellt man nichts anderes ein, als den Normalzustand, der ohnehin herrscht, wenn das Programm nicht installiert ist.
    Es heißt einfach: das Programm darf zur Laufzeit vom System nach belieben mal auf dem einen und mal auf dem anderen Kern betrieben werden. Immer nur auf einem zur Zeit. Nochmal: das ist sowieso der Normalfall.

    Der eigentliche Sinn von dem Programm ist es, Programme zwingen zu können, immer nur auf einem bestimmten Core zu laufen.
     
  10. Hunchback

    Hunchback Well-Known Member

    das kann ich doch sowieso mit dem taskmanger
     
  11. Peer

    Peer Redfox Development Team Staff Member

    Das wollte ich jetzt nicht auch noch draufsetzen ;)
     
  12. Hunchback

    Hunchback Well-Known Member

    he he okay:bowdown:
     
  13. TheDuke

    TheDuke Active Member

    falsch verstanden ?

    Hallo peer,

    Hmm, mag sein dass ich das falsch verstanden habe.
    Ich möchte folgendes dazu berichten.

    1) Wenn ich zuerst mal einen Codierungs-Prozess gestartet habe und mir die geschätzte Zeit ansehe, lese ich eine Dauer von etwa 80 Minuten ab.

    2) Nach dem Start des MENCODERS lege ich den Prozess auf die 2 Prozessoren.

    3) Abwarten und die geschätzte Zeit von CloneDVDMobile warten.
    Siehe da, unter 75 Minuten.

    4) Abermals den MENCODER auf nur eine CPU gelegt und wieder die Anzeige von CloneDVDMobile achten.
    Siehe da, die Zeit geht wieder um Minuten nach oben.

    Als Fazit dürfte es zumindest einen Zeitgewinn bringen auch wenn die CPUs abwechseln.

    Was mich allerdings doch verwundert ist, wenn ich die Ressourcenanzeige von DOOF ansehe, habe ich 96%tige CPU-Auslastung (VISTA).

    Ich kann es wenn gewünscht kann ich Sreenshoots liefern, aber die könnte man natürlich auch faken.

    Also mein Vorschlag, es soll jeder den es interessiert selbst mal testen :agree:
    Die gesamte Zeit habe ich ehrlich gesagt aber nicht abgewartet!

    Übrigens zu Deinem Einwand dass der MENCODER ohnehin als Standard mal auf den einen und dann auf den anderen Kern zugreifen kann muss ich Dir halt glauben aber wenn ich dem Programm von Koma glaube zeigt es mir an es läuft z.B. auf CPU 1.

    Auch wenn ich mehrmals aufrufe ändert sich da nichts, erst wenn man die Maus anlegt.

    Bin aber kein Entwickler, lasse mich daher gerne eines Besseren belehren.
    Ich bin einfach von den Anzeigen des Programms ausgegangen un hab mich gefreut.

    Gruss - TheDuke

    PS: @Hunchback
    Das mit dem Taskmanager wusste ich noch gar nicht, aber danke für den Hinweis. Man lernt eben nie aus und Gottseidank gibt es Foren wie diese!
     
    Last edited: Feb 16, 2008
  14. Raptus

    Raptus Member

    Ja, ums zu verdeutlichen:

    1) A+B=C
    2) D+E=F

    Diese beiden Berechnungen können unabhängig voneinander ausgeführt werden, könnten also problemlos parallelisiert werden. Natürlich würde man sich bei einer solchen trivialen Berechnung nicht die Mühe machen, sie steht hier nur für deutlich komplexere Prozeduren.

    1) A+B=C
    2) C+D=E

    Hier wird klar, dass der 2. Schritt auf das Ergebnis des ersten warten muss, auch wenn man 2 Threads hätte, müsste einer warten. Man hätte im Idealfall die gleiche Performance wie mit nur einem Thread. In der Praxis kommen jedoch Verluste hinzu, da Threads auch noch Verwaltungsaufwand mit sich bringen.

    Das sollte man nicht so pauschal sagen. z.B. so gut wie alle professionellen Videoschnittprogramme skalieren sehr schön mit mehreren Kernen. Und gerade Video/Bildverarbeitung lässt sich recht gut threaden, da viele der Operationen auf unabhängige Pixel ausgeführt werden.

    Kompression ist hier nicht mit eingeschlossen, da räumliche wie temporale Abhängigkeiten von Pixeln zueinander zum tragen kommen.

    x264 skaliert annähernd linear mit den Kernen (Zumindest beim finalen Pass. Gesehen bei Systemen mit bis zu 8 Kernen), das Ergebnis ist deterministisch. Offensichtlich haben also die Jungs das Problem der Algorithmusparallelisierung lösen können.
     
  15. Joe

    Joe Administrator

    Hi.

    x264 skaliert in der Tat sehr gut. Wer experimentierfreudig ist, kann dem MEncoder in CloneDVDmobile selbst auf die Sprünge helfen, bis SlySoft eine offizielle Version mit Multithreading-Unterstützung veröffentlicht:

    • MEncoder mit PThreads herunterladen.
    • Datei "mencoder.exe" im Unterverzeichnis "apps" der CloneDVDmobile-Programmordners umbenennen und die gleichnamige Datei aus dem Zip-Archive in das Unterverzeichnis entpacken.
    • In der Datei "Devices.ini" bei den gewünschten Profilen die Zeichenfolge hinter "x264encopts" erweitern durch ":threads=auto" bzw. "threads=N", wobei N die Anzahl der gewünschten Threads ist.
    Für Rückmeldungen (Inkompatiblitäten mit bestimmten Endgeräten, Abstürze, Erfolgsmeldungen, Speedups, ...) wären wir sehr dankbar. :agree:

    Gruß
    Joe
     
  16. TheDuke

    TheDuke Active Member

    Hallo Joe,

    Danke für den brauchbaren Tipp :bowdown:

    Trotzdem meine Frage an dieser Stelle weil gerade beim Archos 700 das Argument "-x264encopts" fehlt. Habe die Zeile also wie folgt abgeändert

    mopts=-audio-preload 0.8 -delay 0.1 -lameopts br=%abrate% -x264encopts :threads=auto

    Ist das so verwendbar :confused:

    Danke - TheDuke
     
  17. Joe

    Joe Administrator

    Nicht ganz. Das Profil für den Archos 700 benutzt nicht x264, sondern den MPEG-4-CODEC aus der libavcodec. Hier kann man die konkrete Anzahl der Threads (also z.B. ":threads=2", nicht ":threads=auto") an den Parameter "lavcopts" anhängen, also z.B.: lavcopts=vcodec=mpeg4:threads=2

    Allerdings scheint der MPEG-4-Encoder von libavcodec schlecht oder gar nicht parallelisiert zu sein. Bei mir werden die zwei Prozessorkerne beim Encoding mit Multithreading nur zu 55 bis 60 Prozent ausgelastet. Bestenfalls läuft's also 10 bis 20 Prozent schneller, und das vermutlich auch nur, weil das Audio-Transcoding und vielleicht noch der Muxer auf einem eigenen Kern laufen.

    Gruß
    Joe
     
  18. TheDuke

    TheDuke Active Member

    Hallo Joe,

    Danke vielmals für dir Tipps, werde es testen.

    Gruss - TheDuke
     
  19. sublaser

    sublaser New Member

    Jupp ich auch :)

    Bei 4-Kernen hat so ziemlich jedes Programm seine probleme hab mir nen neuen rechner zu gelegt (Q6700) dummerweise muss man feststellen dass 4 Kerne nicht voll ausgenutzt werden. Bei meiner vorigen 2-Kern cpu konnte clonedvdmobile 100 prozent nutzen.

    Winrar z.B. nur 70 prozent genutzt.
    CloneDVDmobile 40 prozent.
    Neue Spiele schon mal 60 prozent.
    CheatEngine (Prog zum suchen von Adress werten im ram) konnte ca. 50 Threads gleichzeitig zum suchen nutzen. Auslastung ca. 95 prozent.

    Eine optimierung für 4-Kerne wird es wohl in absehbarer zeit wohl bei keinem Programm geben.
     
  20. ITSE

    ITSE Guest

    Es gibt ein Programm das alle Kerne auslastet: XMPEG
    versuch das mal und das auch mit DivX obwohl
    behauptet wird es wäre nicht möglich.
    Testet es selbst XMPEG 5.2 Beta 2 unter google suchen und downloaden.

    Bei wem die Version nicht geht, versuchts mal mit FlaskMpeg 078 39

    Mfg

    ITSE
     
    Last edited by a moderator: Jul 6, 2008