Me gustaría hacer una pregunta sobre cómo probar una simulación CAE grande en la misma computadora en las siguientes dos situaciones.
- Sistema Ubuntu puro
- Sistema Ubuntu en Windows 10 (WSL)
¿Las velocidades de cálculo en ambos casos son casi iguales o son diferentes?
Respuestas:
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.
fuente
-O3 -march=haswell
o algo así. No sé qué Clear Linux realmente usa para construir sus núcleos, pero tal vez BMI2 /popcnt
/ lo que sea podría hacer una diferencia medible en glibc y el núcleo. (El núcleo ganó Sin embargo, no se beneficie de AVX, porque el núcleo evita tocar registros de FPU excepto en un código específico como los datos de corrección de errores RAID5 / 6 del software.)Ubuntu en Windows (WSL - 2017 Fall Creators Update) es definitivamente más lento que Ubuntu "puro" en el entorno Linux.
Por ejemplo, la pintura de pantalla tarda muchas veces más en Windows 10 en comparación con Ubuntu 16.04, es decir, puede ver el movimiento del cursor en Windows 10:
La pantalla de inicio de WSL Bash tarda unos 5 segundos en pintarse. En comparación, es aproximadamente 1 1/2 segundos para la misma pantalla de inicio en Ubuntu 16.04:
Benchmarking de CPU
La primera sección muestra cuán lenta es la E / S de pantalla, pero ¿qué pasa con el benchmarking de CPU?
A partir de esta Pregunta y Preguntas de Ubuntu: Utilidad de evaluación comparativa de CPU para Linux , ejecuté pruebas en Ubuntu 16.04 en Linux y Windows. En Linux unos 24 segundos en Windows 10 versión 1709 unos 31 segundos. Linux es 6 segundos más rápido o aproximadamente un 25% más rápido. Sin embargo, acabo de actualizar Windows 10 a la versión 1803 (actualización de Redstone 4, también conocida como Spring Creators April 2018) y tardó 24 segundos, lo mismo que Linux.
Ubuntu 16.04 en Linux
Ubuntu 16.04 en Windows 10 compilación 1709
Ubuntu 16.04 en Windows 10 compilación 1803
NOTA: La actualización de primavera de Windows 10 para 2018 (denominada Redstone 4 ) salió el 9 de mayo (hace 4 días) y la instalaré pronto para ver las mejoras. Sin duda hay muchos. Una de las que sé que me interesa es la capacidad de ejecutar
cron
trabajos en el inicio. Lo necesito para copias de seguridad diarias automáticas en gmail.com.NOTA 2: Acabo de instalar Windows 10 Build 1803 (actualización de Spring Creators de abril de 2018 AKA Redstone 4) y la pintura de la pantalla es mucho más rápida. Ahora son solo 3 segundos en lugar de 5 segundos para mostrar la pantalla de bienvenida de Bash. El punto de referencia de la CPU está a la par con Linux ahora.
fuente
Piénselo: en WSL su computadora está ejecutando el sistema gráfico completo de Windows (que en primer lugar es una fuente de recursos horrible) más el subsistema Ubuntu. En Ubuntu nativo solo ejecuta Ubuntu.
fuente
pstree
ops auxw
, es obvio que todos los procesos siguen vivos. (Otop
y presione M para ordenar por consumo de memoria).systemd
no funciona como SysVinit
. La parte anterior de este comentario es pretender que estabas ejecutando una distribución Linux de 5 o 10 años con unainit
configuración de la vieja escuela ). Pero sí , cerrar sesión en su sesión X y detener X11 / GDM liberará recursos, especialmente si no tiene espacio de intercambio, o si su escritorio tiene basura que se activa con frecuencia incluso cuando está "inactivo".No sé si esto afectará su simulación en particular, pero podría:
¡WSL NO usa RAM para la memoria compartida! ¡Utiliza el disco!
Esto significa que si su simulación usa memoria compartida (piense
/dev/shm
), ¡puede ser lenta y / o desgastar su dispositivo de almacenamiento! Y la penalización de rendimiento proviene de varias capas:El controlador del sistema de archivos
El controlador de almacenamiento
El medio de almacenamiento
Pero si no hace esto, entonces el rendimiento debería ser similar al de Ubuntu desnudo (suponiendo que no haya otras E / S, como han mencionado otros).
fuente