Neulich wurde ich im IRC gebeten, einen etwas "intensiveren" Benchmark auf Basis des x264 Video Encoders zusammenzubasteln, was ich nun hiermit getan habe. Funktionieren sollte der Bench auf Windows 2000 und höher, mit einem kleinen Trick der weiter unten beschrieben ist auch auf Win98/Me. Inoffiziell ist das Ausführen auch auf MacOS X / BSD / Linux und anderen UNIX Maschinen sowie auf Haiku OS möglich.
Der Benchmark bedient sich des Films Elephants Dream, sowie einiger Tools, die unter diversen OpenSource Lizenzen stehen.
Der Videostream mißt satte 668MB, und muß erst einmal heruntergeladen werden. Entsprechend langsame Downloads bitte ich zu entschuldigen. Dazu gibts ein ZIP Archiv, in dem die Tools und das Benchmarkscript liegen. User mit einer Nettobandbreite von unter 400kB/s würde ich bitten von Mirror 0 (mein Server XIN.at) zu saugen, User mit mehr Bandbreite wollen vielleicht auf CryptonNites, Blacktrons oder Crackys Mirror 1/2/3 ausweichen, die mehr Bandbreite besitzen (Danke an [CryptonNite], [Blacktron] und [Cracky] für die Bereitstellung der Mirror!):
Offizielle und gültige Builds, sowie die benötigte Videodatei:
Elephants Dream Test-Videostream für Benchmarkzwecke (~668MB) und x264 Benchmarktools für Windows (~6MB):
- Mirror 0: [Benchmarkvideo], [Benchmarktools] (1MB/s, hosted von GAT)
- Mirror 1: [Benchmarkvideo], [Benchmarktools] (10MB/s, hosted von CryptonNite)
- Mirror 2: [Benchmarkvideo], [Benchmarktools] (20MB/s, hosted von Blacktron)
- Mirror 3: [Benchmarkvideo], [Benchmarktools] (10MB/s, hosted von Cracky)
Um den Benchmark zu starten, entpackt man einfach das Archiv x264benchmark.zip, und legt die Datei elephantsdream_source.264 dazu. Danach führt man einfach die Datei launchbenchmark.bat aus! Das Ergebnis liegt nach Abschluß in der Datei RESULTS.TXT bereit, auf die man im Konsolenfenster extra hingewiesen wird, wenn der Durchlauf beendet ist.
Prüfsummen für das Benchmarkvideo:
- SHA512: 379a1833354605bb35f62ef864885e62d6eec8d8303925f8a48ead3fbd574d462f0beb3dccb77a6fde6e2320c3cba5eea5802bb335920ad2c83f8295f6c37575
- SHA1: c01a9ab76dfe267a50998280ec3800049ca68a4b
- MD5: 7b7e40610d94e2a6c2eefb231845ddb7
Prüfsummen für das ZIP Archiv mit den Benchmarktools:
- SHA512: 18f50a9d7422a93e0d813986d0703109a98d4df817a3c1474105132d909e49a62e86e25117a1b33ce5c4aefe913ae8ef16ae52a707804ad55898316c9a65b2d9
- SHA1: 0c108c80962e68a9d0768258e2016bdb83f35fe8
- MD5: 7e10d5cd34446638e4cab995eb63a5fa
Prüfsummentools für Windows (Extrahiert aus CygWin, GPL Lizenz):
- [SHA512 Tool] (Aufruf: sha512sum.exe <zieldatei>)
- [SHA1 Tool] (Aufruf: sha1sum.exe <zieldatei>)
- [MD5 Tool] (Aufruf: md5sum.exe <zieldatei>)
Inoffizieller Sourcecode (für Selbstbau auf Linux etc., die Videodatei oben muß dennoch heruntergeladen werden!):
- libavcodec/lavf Sourcecode --- [Link] (wird für eigene Kompilate auf Betriebssystemen wie MacOS, BSD oder Linux benötigt, um den H.264/AVC Input zu lesen).
- x264 Sourcecode --- [Link] (MacOS X + xcode / BSD / Linux etc., muß gegen libavcodec/lavf linked werden!).
- Bash Script --- [Link] (zum korrekten Ausführen des Benchmarks unter einer BASH wie etwa auf Linux/BSD vorzufinden. Script mit "time" vorangestellt ausführen, um ein Resultat zu erhalten, Videodatei sollte im selben Order liegen!)
- [Detaillierte Anleitung zum Kompilieren und Installieren des Benchmarks unter Linux]
Die ZIP Datei wäre bitte einfach im selben Ordner zu entpacken, wo auch elephantsdream_source.264 liegt. Danach reicht ein Doppelklick auf das Script launchbenchmark.bat, und der Leistungstest wird ausgeführt.
Minimalanforderungen:
- CPU mit SSE/MMX2 Befehlssatz
- 1GB RAM
- 3GB freier Festplattenspeicherplatz
- Windows 2000
Windows 98/98SE/Me:
Das Benchmarkskript, mit dem der Benchmark ausgeführt wird ist unter Win9x nicht lauffähig. Um dem Abhilfe zu schaffen, hat CryptonNite mein ursprüngliches Skript abgewandelt und Win9x kompatibel gemacht. Um den Benchmark also unter 9x auszuführen, sollte es genügen statt der in den Tools befindlichen launchbenchmark.bat diese abgewandelte launchbenchmark_9x.bat auszuführen, dazu muß das Batch File natürlich im selben Ordner liegen, wie der Rest der Benchmarkdateien:
Ein mit diesem abgewandelten Skript ermitteltes Ergebnis behält seine volle Gültigkeit!
SSE/MMX2-lose CPUs unter MS Windows, sowie Windows NT 4.0 Unterstützung:
Solltet ihr die Minimalanforderungen im CPU-Sektor unterschreiten, ist die Referenzversion nicht mehr lauffähig. Um dem Abhilfe zu schaffen, habe ich einige spezielle Kompilate vom Sourcecode gebaut, die auch auf älteren CPUs lauffähig sind. Weitere Kompilate können auf Anfrage angefertigt werden, allerdings mache ich das nur für x86 CPUs, die noch kein SSE bzw. MMX2 unterstützen!
Zudem war es für die Unterstützung von Windows NT 4.0 ebenfalls nötig, neue Binaries zu kompilieren, da die offiziellen Funktionen von Windows 9x/2000 nutzen, die unter NT 4.0 nicht verfügbar sind. Diese sind für CPUs mit wie auch ohne SSE verfügbar.
Vorsicht ist hier allerdings geboten, diese Versionen sind allesamt nicht auf Win9x/Me lauffähig! Der Test von 686er Prozessoren ohne SSE ist damit auf Win9x/Me zum gegebenen Zeitpunkt leider nicht möglich. Danke an [Cyberhawk], der das Problem [entdeckt] hat.
Hier die Builds:
- [GATs Win32 x264 Build für i686 (Pentium PRO, Pentium II MMX)]
- [GATs Win32 x264 Build für AMD K7 (Athlon, Athlon Thunderbird inkl. 3DNow!)]
- [GATs Win32 x264 Build für i686 (Pentium PRO, Pentium II MMX)]
- [GATs Win32 x264 Build für AMD K7 (Athlon, Athlon Thunderbird inkl. 3DNow!)]
Windows NT 4.0 Builds:
- [Build für Windows NT 4.0, für 686 Prozessoren mit SSE]
- [Build für Windows NT 4.0, für 686 Prozessoren ohne SSE]
Diese Versionen sind einfach über den bestehenden Benchmark zu kopieren, dabei ist die bestehende x264.exe zu ersetzen. Die beiliegenden DLLs entstammen einer CygWin Distribution (GPL Lizenz) und werden für die Ausführung dieser Binaries zwingend benötigt.
MacOS X auf Intel:
- Viper hat mich darauf aufmerksam gemacht, daß man mithilfe des Package Managers "brew" auf MacOS X sehr leicht den x264 Source saugen, kompilieren und installieren kann, fix-fertig gegen die nötigen libav Libraries linked. Das funktioniert wie folgt auf einem Terminal:
- curl -L http://github.com/mxcl/homebrew/tarball/master | tar xz --strip 1 -C /usr/local
- brew install wget
- brew install git
- brew update
- brew install x264
Eine Grundvoraussetzung für die Funktion ist aber leider ein bereits kompiliertes und installiertes libav Paket, was xcode erfordert. - Blacktron hat einen Weg gefunden, der den [yasm] Assembler, [xcode] und [git] voraussetzt, aber dafür ffmpeg statt libav für den Inputfilter kompiliert & installiert, und x264 gleich dazu! Nachdem man das yasm+git+xcode Trio auf dem System hat, genügt ein Ausführen des [hier beschriebenen Skriptes], um ein x264+ffmpeg zu bauen, welches den Benchmark ausführen kann! Danach genügt eine Ausführung des weiter oben verlinkten Bash Skriptes, welches im selben Verzeichnis wie die .x264 Datei liegen sollte.
-
[Detaillierte Anleitung zum Kompilieren und Installieren des x264 Benchmarks unter MacOS X auf Intel] (basiert z.T. auf Blacktrons Recherchen)
-
[Detailed guide for compiling and installing the x264 benchmark on MacOS X on Intel] (partially based on Blacktrons research)
-
MacOS X auf PowerPC:
-
Dank FS03, welcher mir Teamviewer Zugriff auf seinen PowerMac G5 gewährt hat, ist es mir nun gelungen, auch eine Anleitung für MacOS X auf PowerPC zu verfassen:
Haiku:
- Nach einiger Arbeit ist es mir nun gelungen, x264 auch auf Haiku (BeOS) zu portieren:
OpenSolaris 11:
- Daß ein Unix noch schlimmer / schwerer sein kann, als ein so völlig fremdartiges BeOS System wie Haiku mag man nicht glauben, stimmt aber trotzdem. Das hat einiges an massiver Hackerei erfordert, aber x264 ist nun auch auf OpenSolaris einsatzfähig, wenn man etwas Zeit hat und sich von ein paar Modifikationen nicht aufhalten läßt:
Oracle Solaris 11.2:
- Nachdem OpenSolaris eingestampft und in Oracles Betriebssystem eingegliedert wurde, soll hier nun auch eine Anleitung für Oracle Solaris nachgereicht werden. Die Installation von modernem libav+x264 auf Oracle Solaris 11.2 gestaltet sich sogar etwas einfacher als es vor Jahren noch auf OpenSolaris 11 der Fall war:
NetBSD 6.0 RC2:
- Ältere FreeBSD und OpenBSD Systeme leiden ja leider unter Problemen mit dem GNU portable Assembler, womit ein zufriedenstellender Bau des x264 Benchmarks unmöglich wird. Auf NetBSD hingegen ist es gelungen, die Software sauber zu bauen. Erfrischenderweise fallen die nötigen Modifikationen unter NetBSD relativ gering aus:
OpenBSD 5.4 - 5.5:
-
Ältere OpenBSD Versionen ermöglichten es aufgrund von fundamentalen GNU Assembler Problemen kaum, ordentliche x264 Builds herzustellen, ab 5.4 allerdings wird das sauber möglich:
DragonFly BSD 3.0.2:
- Neben den drei großen BSDs ist DragonFly BSD wohl eher eine Randerscheinung. Dennoch ist der x264 Bau hier ähnlich gut möglich wie auf NetBSD, die von früheren FreeBSD und OpenBSD her bekannten Probleme wird man hier vergeblich suchen! Auch der Aufwand für einen erfolgreichen Bau ist kaum größer als z.B. auf NetBSD:
PC-BSD 9.1:
-
PC-BSD basiert eigentlich auf FreeBSD, wo der Bau des Benchmarks bislang noch nicht gelungen ist. Auf PC-BSD hingegen klappt das, wenn auch wieder unter Einsatz einiger für den Benchmark allerdings unkritischer Workarounds:
FreeBSD 9.2:
- So, nun hat es auch endlich mit FreeBSD >=9.2 geklappt:
Debian GNU/Hurd 0.3:
- Auch das nach FSF-Konzept komplett freie GNU/Hurd ist mit dabei:
ReactOS:
- Der Gedanke eines 100% Windows-kompatiblen, freien und quelloffenen Betriebssystems klingt verlockend. Genau das will ReactOS sein, mit einem NT5.x Style Kernel (Win2003), Win32 Userland und sogar einer DirectX 9 Portierung namens "ReactX". Leider plagen das Betriebssystem noch viele Kernel Bugs, sodaß der Einsatz einer bestimmten Version für einen stabilen Test nötig wird. Zudem braucht es noch eine kleinere Modifikation am Benchmarkskript. All das wird in folgender Anleitung gezeigt:
FreeDOS:
- Dank der [Portierungsarbeit] von RayeR gibt es nun tatsächlich eine x264 Version für DOS. Diese unterstützt zwar keinerlei SSE Einheiten und natürlich auch nur einen Kern, lauffähig ist der Benchmark damit aber z.B. auch unter FreeDOS 1.1, wie hier gezeigt:
Microsoft Windows (2000 - 8.1):
- Auf Wunsch von Gold Leader soll hier nun auch eine Anleitung für Anwender von Microsoft Windows stehen, da die Nutzung des x264 Benchmarks im Vergleich zu gängigerer Software auch nicht unbedingt so glatt von der Hand geht:
Sobald der Benchmark durch ist, schreibt er eine Datei RESULTS.txt im selben Ordner, wo die Zeit, die der Durchlauf benötigt hat festgehalten wird. Weiters meldet er nach Ende des Tests folgende Ausgabe im Shellfenster:
Dieses Ergebnis kann z.B. so aussehen, wie im Falle meines i7 980X, auf dem ich grade mit etwas Zusatzlast nebenher getestet habe:
Das wären also 1 Stunde, 15 Minuten und 47 Sekunden. Der Test nutzt auch mehrere Hyperthreads und/oder CPU Kerne, falls vorhanden. Weiters sollte schon 1GB RAM im System stecken, um nicht ins Swapping zu geraten.
Es ist beim Test bitte unbedingt drauf zu achten, daß nicht an der Systemzeit gedreht wird, solange er noch läuft! Das schließt Sommer-/Winterzeiteinstellungen (DST) mit ein, solche sollte es während des Tests nicht geben! Falls dies doch passiert, so ist dies bitte unbedingt gemeinsam mit dem Ergebnis mit anzugeben!
Zu posten wäre ein Ergebnis z.B. wie unten in der Liste zu sehen, das "ungefähre" Format wäre ca. so (Ohne Spitzklammern):
<Zeit> | <Nickname des Urhebers> | <Sockel>/<Kerne pro Sockel>/<Threads pro Sockel> | <CPU(s)-Name(n)> | <Mainboard/Rechner/Plattform> | <Mainboard-Chipsatz> | <RAM-Typ & Menge> | <Betriebssystem>
Die Basis des Tests sind zwei x264 Encoding Passes mit 10MBit/s und den im Blu-Ray Guide Thread gezeigten Einstellungen.
Encoded werden übrigens 15.691 Frames pro Pass, in Summe also 31.382 Frames in 2 Passes!
WARNUNG: Auf Maschinen mit sehr wenigen und/oder langsamen CPU Kernen kann es gut und gerne dazu kommen, daß der Test tagelang läuft! Man beachte hierbei speziell das Ende der Ergebnisliste, um sich einen Eindruck verschaffen zu können!
Edit, 02.11.2010: Der ZIP Datei mit den Benchmarktools wurde nun die MSVCP60.DLL hinzugefügt. Danke an exxe, der herausgefunden hat, daß diese Library, die zum Visual C++ Redistributable Package gehört auf frisch installierten Windows 2000 Maschinen mitunter fehlen kann.
Anmerkungen zur untenstehenden Ergebnisliste bzw. deren Farbmarkierungen:
** - Betriebssystem wurde virtualisiert (VMware, XEN, KVM, VirtualBox, ...) oder in einer Wine Laufzeitumgebung ausgeführt - für Referenzvergleiche ungültig!
** - Benchmark wurde mit geringeren als Minimalspezifikationen ausgeführt (z.B. 512MB RAM statt 1GB) - für Referenzvergleiche ungültig!
** - Benchmark wurde nicht mit Referenzsoftware ausgeführt (z.B. Custom x264 Build, OpenCL supported, etc.) - für Referenzvergleiche ungültig!
Lizenzrechtliches:
-
Der x264 Benchmark enthält ausschließlich Software, die unter der [GNU General Public Lizenz (GPL)] steht. Weiters enthält der Benchmark Teile des Films [Elephants Dream] © copyright 2006, Blender Foundation / Netherlands Media Art Institute / http://www.elephantsdream.org, welcher unter der [Creative Commons Namensnennung] Lizenz steht.
Alle Informationen in diesem wie dem folgenden Beitrag von Michael Lackner stehen unter einer [Creative Commons Namensnennung-NichtKommerziell-Weitergabe unter gleichen Bedingungen 3.0 Deutschland Lizenz]. Die untenstehende Ergebnisliste und weitere in diesem und dem nächstfolgenden Beitrag auf http://www.xin.at/* verlinkten Inhalte von Karl Alexander Veratschnig und Michael Lackner stehen unter einer [Creative Commons Namensnennung-NichtKommerziell-Weitergabe unter gleichen Bedingungen 3.0 Österreich Lizenz].