Ich möchte eine Frage zum Testen einer großen CAE- Simulation auf demselben Computer in den folgenden beiden Situationen stellen.
- Reines Ubuntu-System
- Ubuntu-System in Windows 10 (WSL)
Sind die Rechengeschwindigkeiten in beiden Fällen nahezu gleich oder unterschiedlich?
Antworten:
Ihre Simulationssoftware ist höchstwahrscheinlich entweder an die CPU oder an den Speicher gebunden . Bei solchen Workloads würde man keinen signifikanten Unterschied zwischen der Ausführung des Codes auf "Bare Metal" oder innerhalb der WSL (oder einer anderen Kompatibilitätsebene oder VM, die native Ausführung verwendet) feststellen, da in beiden Fällen das Betriebssystem meist nur bereitsteht Der Simulationscode läuft dabei direkt auf der CPU.
Es ist jedoch auch möglich, dass Ihre Simulation zumindest teilweise an die E / A gebunden ist, und hier können sich Unterschiede ergeben. Anscheinend hat WSL (derzeit) eine ziemlich langsame Dateisystemschnittstellenschicht, die die Datenträger-E / A erheblich verlangsamen kann. * Allerdings kann die Datenträger-E / A der Hauptengpass für viele Arten von Massendatenverarbeitungsaufgaben sein, eine "Simulation". Normalerweise sollte er nicht die meiste Zeit damit verbringen, Dateien zu lesen und zu schreiben. Wenn dies der Fall ist, können Sie die Ausführung von einer RAM-Festplatte (z. B. tmpfs unter nativem ** Linux) in Betracht ziehen, um unnötigen physischen Festplattenzugriff zu vermeiden.
In jedem Fall besteht die einzige Möglichkeit, sicher zu sein, darin, Ihre Simulation in beiden Umgebungen und in der Zeit zu testen, die für die Ausführung erforderlich ist. Zuvor sollten Sie jedoch einen Blick auf vorhandene Benchmarks werfen, z. B. auf diesen Performance-Benchmark von WSL vs. Docker vs. VirtualBox vs. Native Linux von Phoronix aus dem Februar 2018 , und die Ergebnisse auf Tests untersuchen, bei denen dieselben Komponenten beansprucht werden des Systems wie Ihre Simulation.
(FWIW, die Phoronix-Ergebnisse stimmen anscheinend größtenteils mit den oben beschriebenen allgemeinen Grundsätzen überein, obwohl es einige bemerkenswerte Besonderheiten gibt, wie VirtualBox, das anscheinend in einigen I / O-gebundenen Benchmarks besser abschneidet als natives Linux, da die Daten auf der virtuellen Festplatte nicht immer sofort synchronisiert werden Ein potenziell relevantes Problem, das ich oben nicht erwähnt habe, ist, dass die Benchmarks signifikante Unterschiede in der Multi-Threaded-OpenMP-Leistung sowohl zwischen den verschiedenen Host-Umgebungen als auch zwischen verschiedenen Linux-Distributionen aufweisen, selbst wenn sie auf nackter Hardware ausgeführt werden. Das ist nicht verwunderlich, da Threading und IPC vom Kernel verwaltet werden. Ich schätze, dass ein großer Teil des Unterschieds zwischen den Distributionen auf unterschiedliche Laufzeit- und / oder Kompilierzeit-Kernel-Optimierungsparameter zurückzuführen ist.)
*) Nach dieser MSDN Blog - Post von 2016, gibt es eigentlich zwei Dateisystem - Interface - Komponenten in WSL: volfs, die nativen Dateisystem Linux emuliert eng Semantik über NTFS und wird verwendet , zB zu montieren
/
und/home
, und DrvFs, die meist Windows-ähnliche Semantik bieten und wird für den Zugriff auf die Windows-Host-Laufwerke über/mnt/c
usw. verwendet. Wenn für Ihre Software keine nativen Linux-Dateisystemfunktionen wie mehrere feste Verknüpfungen zu derselben Datei erforderlich sind, kann die Dateizugriffsleistung verbessert werden, wenn sie so konfiguriert wird, dass ihre Datendateien in einem DrvFs-Ordner gespeichert werden WSL.**) Laut diesem Reddit-Thread aus dem Mai 2017 wird "tmpfs zurzeit mit disk" in der WSL emuliert. Sofern sich im letzten Jahr nichts geändert hat, bedeutet dies vermutlich, dass die Verwendung von tmpfs in der WSL keinen Leistungsvorteil gegenüber einem normalen Dateisystem auf der Festplatte bietet.
quelle
-O3 -march=haswell
optimieren , sondern auch Compileroptionen (z . B. oder so). Ich weiß nicht, was Clear Linux tatsächlich zum Erstellen seiner Kernel verwendet, aber vielleicht kann BMI2 /popcnt
/ einen messbaren Unterschied zwischen glibc und dem Kernel bewirken . (Der Kernel hat gewonnen 't profitieren von AVX jedoch, weil der Kernel es vermeidet, FPU-Register zu berühren, außer in einem bestimmten Code wie den Software-RAID5 / 6-Fehlerkorrekturdaten.)Ubuntu in Windows (WSL - 2017 Fall Creators Update) ist definitiv langsamer als "Pure" Ubuntu in Linux-Umgebungen.
Beispielsweise dauert das Malen von Bildschirmen in Windows 10 um ein Vielfaches länger als in Ubuntu 16.04, dh Sie können tatsächlich sehen, wie sich der Cursor in Windows 10 bewegt:
Es dauert ungefähr 5 Sekunden, bis der Begrüßungsbildschirm von WSL Bash angezeigt wird. Im Vergleich dazu sind es ungefähr 1 1/2 Sekunden für den gleichen Begrüßungsbildschirm in Ubuntu 16.04:
CPU-Benchmarking
Der erste Abschnitt zeigt, wie langsam Bildschirm-E / A ist, aber was ist mit CPU-Benchmarking?
Von diesem Dienstprogramm Ask Ubuntu Q & A: CPU Benchmarking für Linux aus habe ich Tests auf Ubuntu 16.04 unter Linux und Windows durchgeführt. Unter Linux ca. 24 Sekunden, unter Windows 10 Version 1709 ca. 31 Sekunden. Linux ist 6 Sekunden schneller oder ungefähr 25% schneller. Allerdings habe ich gerade Windows 10 auf Version 1803 aktualisiert (Redstone 4 aka Spring Creators April 2018 Update) und es hat 24 Sekunden gedauert, was dem von Linux entspricht.
Ubuntu 16.04 unter Linux
Ubuntu 16.04 unter Windows 10 Build 1709
Ubuntu 16.04 unter Windows 10 Build 1803
HINWEIS: Das Windows 10-Frühjahrsupdate für 2018 (genannt Redstone 4 ) wurde am 9. Mai (vor 4 Tagen) veröffentlicht. Ich werde es bald installieren, um die Verbesserungen zu überprüfen. Zweifellos gibt es viele. Eines, von dem ich weiß, dass es mich interessiert, ist die Möglichkeit,
cron
Jobs beim Start auszuführen . Ich benötige das für automatische tägliche Backups auf gmail.com.HINWEIS 2: Ich habe gerade Windows 10 Build 1803 (Spring Creators Update AKA Redstone 4 vom April 2018) installiert und das Malen auf dem Bildschirm ist viel schneller. Es sind nur noch 3 anstatt 5 Sekunden, um den Bash-Begrüßungsbildschirm anzuzeigen. Der CPU-Benchmark ist jetzt mit Linux vergleichbar.
quelle
Denken Sie darüber nach - in der WSL läuft auf Ihrem Computer das vollständige grafische Windows-System (was in erster Linie eine schreckliche Ressource ist) sowie das Ubuntu-Subsystem. In nativem Ubuntu läuft nur Ubuntu.
quelle
pstree
oder ausführenps auxw
, ist es offensichtlich, dass alle Prozesse noch am Leben sind. (Odertop
drücken Sie M, um nach Speicherverbrauch zu sortieren.)systemd
funktionieren nicht wie SysVinit
. Der frühere Teil dieses Kommentars gibt vor, dass Sie eine 5- oder 10-jährige Linux-Distribution mit einem Old-School-init
Setup ausgeführt haben.) Aber ja Wenn Sie sich von Ihrer X-Sitzung abmelden und X11 / GDM stoppen, werden Ressourcen freigesetzt, insbesondere wenn Sie keinen Auslagerungsspeicher haben oder Ihr Desktop einen Fehler aufweist, der häufig auftritt, selbst wenn Sie sich im Leerlauf befinden.Ich weiß nicht, ob dies insbesondere Ihre Simulation beeinflusst, aber es könnte:
WSL benutzt KEIN RAM für Shared Memory! Es nutzt die Festplatte!
Das bedeutet, wenn Ihre Simulation Shared Memory verwendet (think
/dev/shm
), kann dies langsam sein und / oder Ihr Speichergerät verschleißen! Und die Leistungsminderung kommt aus mehreren Schichten:Der Dateisystemtreiber
Der Speichertreiber
Das Speichermedium
Wenn dies nicht der Fall ist, sollte die Leistung derjenigen von Bare-Metal-Ubuntu ähnlich sein (vorausgesetzt, es werden keine anderen E / A-Vorgänge ausgeführt, wie andere bereits erwähnt haben).
quelle