Es muy probable que su software de simulación esté vinculado a la CPU o a la memoria . Para tales cargas de trabajo, no se vería ninguna diferencia significativa entre ejecutar el código en "bare metal" o dentro de WSL (o cualquier otra capa de compatibilidad o VM que use ejecución nativa), ya que en cualquier caso el sistema operativo está en su mayoría en espera mientras que el código de simulación se ejecuta directamente en la CPU.
Sin embargo, también es posible que su simulación esté al menos parcialmente vinculada a E / S, y ahí es donde pueden surgir diferencias. Aparentemente, WSL (actualmente) tiene una capa de interfaz de sistema de archivos bastante lenta que puede ralentizar significativamente la E / S del disco. * Dicho esto, mientras que la E / S del disco puede ser el principal cuello de botella para muchos tipos de tareas de procesamiento de datos en masa, una "simulación" por lo general, no debería pasar la mayor parte de su tiempo leyendo y escribiendo archivos. Si lo es, puede considerar ejecutarlo desde un disco RAM (por ejemplo, tmpfs en Linux ** nativo) para evitar el acceso innecesario al disco físico.
En cualquier caso, la única forma de estar seguro es probar su simulación en ambos entornos y determinar el tiempo que tarda en ejecutarse. Sin embargo, antes de hacer eso, es posible que desee echar un vistazo a los puntos de referencia existentes, como este punto de referencia de rendimiento WSL vs.Docker vs.VirtualBox vs.Native Linux de Phoronix a partir de febrero de 2018 , y examinar los resultados para cualquier prueba que enfatice los mismos componentes. del sistema como lo hace tu simulación.
(FWIW, los resultados de Phoronix parecen coincidir en su mayoría con los principios generales que describí anteriormente, aunque hay algunas rarezas notables como VirtualBox que aparentemente superan al Linux nativo en algunos puntos de referencia vinculados de E / S, aparentemente debido a que su disco virtual no siempre sincroniza los datos de inmediato en el disco físico. Un problema potencialmente relevante que no pude notar anteriormente es que los puntos de referencia muestran diferencias significativas en el rendimiento de OpenMP de subprocesos múltiples entre los diferentes entornos host y también entre diferentes distribuciones de Linux, incluso cuando se ejecuta en hardware desnudo. eso no es demasiado sorprendente, ya que el kernel maneja el subprocesamiento y el IPC. Supongo que gran parte de la diferencia entre las distribuciones allí puede deberse a diferentes parámetros de ajuste del kernel en tiempo de ejecución y / o tiempo de compilación).
*) De acuerdo con esta entrada del blog de MSDN a partir de 2016, en realidad hay dos componentes de la interfaz del sistema de ficheros en WSL: volfs, que emula la semántica del sistema de archivos nativo de Linux sobre NTFS y se utiliza para montar por ejemplo, /
y /home
, y DrvFs, que proporciona la mayoría de Windows-como la semántica y se usa para acceder a las unidades de Windows del host a través de /mnt/c
etc. Si su software no requiere específicamente características nativas del sistema de archivos de Linux como múltiples enlaces duros al mismo archivo, configurarlo para almacenar sus archivos de datos en una carpeta DrvFs puede mejorar el rendimiento del acceso a archivos en WSL.
**) Según este hilo de Reddit de mayo de 2017, "tmpfs se emula actualmente usando el disco" en WSL. A menos que algo haya cambiado en el último año, esto presumiblemente significa que el uso de tmpfs en WSL no ofrece ningún beneficio de rendimiento sobre el uso de un sistema de archivos normal en el disco.