Il software di simulazione è probabilmente associato alla CPU o alla memoria . Per tali carichi di lavoro, non si farebbe eccezione per vedere alcuna differenza significativa tra l'esecuzione del codice su "bare metal" o all'interno di WSL (o qualsiasi altro livello di compatibilità o VM che utilizza l'esecuzione nativa), poiché in entrambi i casi il sistema operativo è principalmente in attesa mentre il codice di simulazione viene eseguito direttamente sulla CPU.
Tuttavia, è anche possibile che la simulazione sia almeno in parte legata all'I / O, ed è qui che possono emergere differenze. Apparentemente, WSL (attualmente) ha un livello di interfaccia del filesystem piuttosto lento che può rallentare significativamente l'I / O del disco. * Detto questo, mentre l'I / O del disco può essere il principale collo di bottiglia per molti tipi di attività di elaborazione di dati in blocco, una "simulazione" di solito non dovrebbe passare la maggior parte del tempo a leggere e scrivere file. Se il tuo è, potresti prendere in considerazione la possibilità di eseguirlo da un disco RAM (ad esempio tmpfs su ** Linux nativo) per evitare l'accesso al disco fisico inutile.
In ogni caso, l'unico modo per essere sicuri è testare la simulazione in entrambi gli ambienti e il tempo necessario per l'esecuzione. Prima di farlo, tuttavia, potresti voler dare un'occhiata ai benchmark esistenti, come questo benchmark delle prestazioni WSL vs. Docker vs. VirtualBox vs. Linux nativo di Phoronix da febbraio 2018 , ed esaminare i risultati di eventuali test che sottolineano gli stessi componenti del sistema come fa la tua simulazione.
(FWIW, i risultati di Phoronix sembrano corrispondere per lo più ai principi generali che ho delineato sopra, anche se ci sono alcune stranezze notevoli come VirtualBox che apparentemente ha sovraperformato Linux nativo in alcuni benchmark legati all'I / O, apparentemente a causa del suo disco virtuale che non sincronizza sempre immediatamente i dati al disco fisico. Un problema potenzialmente rilevante che non ho notato sopra è che i benchmark mostrano differenze significative nelle prestazioni OpenMP multi-thread sia tra i diversi ambienti host sia anche tra diverse distribuzioni Linux anche quando si esegue su hardware nudo. non è troppo sorprendente, dal momento che il threading e IPC sono gestiti dal kernel. Immagino che gran parte della differenza tra le distro potrebbe dipendere da diversi parametri di ottimizzazione del kernel di runtime e / o tempo di compilazione.)
*) Secondo questo post del blog MSDN del 2016, in realtà ci sono due componenti dell'interfaccia del filesystem in WSL: VolFs, che emula da vicino la semantica del filesystem Linux nativo su NTFS e viene utilizzato per montare eg /
e /home
, e DrvFs, che fornisce principalmente semantica simile a Windows e viene utilizzato per accedere alle unità Windows host tramite /mnt/c
ecc. Se il software in uso non richiede specificatamente funzionalità di filesystem Linux native come più collegamenti fissi allo stesso file, la configurazione per archiviare i propri file di dati in una cartella DrvFs può migliorare le prestazioni di accesso ai file su WSL.
**) Secondo questo thread Reddit di maggio 2017, "tmpfs è attualmente emulato usando il disco" su WSL. A meno che qualcosa non sia cambiato nell'ultimo anno, ciò significa presumibilmente che l'uso di tmpfs su WSL non offre alcun vantaggio in termini di prestazioni rispetto all'utilizzo di un normale filesystem su disco.