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.