¿Cuánto importa la elección del sistema operativo para el rendimiento del código informático científico?


8

Es común decir que Linux es más rápido y por buenas razones. Pero como se indica en el título, ¿cuánto importa la elección del sistema operativo para el rendimiento del código de computación científica? Para algo en lo que el sistema operativo está más directamente involucrado (como jugar juegos o renderizar videos), seguro que puede haber una diferencia. Pero si ejecuto algunos códigos en MATLAB, resuelvo PDE en Julia, o estoy haciendo un poco de álgebra lineal en una GPU usando CUDA: ¿existe realmente una diferencia de rendimiento medible entre Windows, MacOS y Linux?

Me pregunto si alguien ha realizado puntos de referencia para ver si existe tal diferencia. ¿Quizás existen diferencias al usar algún software como MATLAB debido a las diferencias en los compiladores que usan? ¿O tal vez los controladores CUDA son mucho más rápidos para un sistema operativo que el otro? ¿O a veces los sistemas operativos interfieren mucho como el problema WDDM CUDA ?

Nota: Sé que hay otras razones para elegir un sistema operativo que está más allá del alcance de esta pregunta. Me pregunto específicamente sobre el rendimiento.


66
Las diferencias de rendimiento entre los sistemas operativos suelen estar en la programación del proceso, el rendimiento del disco y la red (lo que manejaría un núcleo del sistema operativo). Dado que el código informático científico generalmente está vinculado a la CPU o la memoria, probablemente solo haga una pequeña diferencia. Para CUDA y los gráficos, también sería una cuestión de cuánto esfuerzo pone el proveedor en sus controladores para cada sistema operativo, pero para el código de cómputo probablemente tampoco importará demasiado.
Kirill

Eso es lo que supongo que es el caso, pero me pregunto si alguien ha hecho algunos experimentos para asegurarse de que sea así. Puedo configurar un arranque triple de Windows / MacOS / Linux y comparar los mismos scripts para ver si ese es el caso. Pero si alguien más con un arranque múltiple ha hecho esto antes, entonces puede que no haya necesidad de invertir ese tiempo.
Chris Rackauckas

2
Ampliando lo que @Kirill mencionó, los diferentes sistemas operativos pueden tener una granularidad de control diferente para administrar, por ejemplo, la prioridad del proceso o los nodos NUMA (por ejemplo, controlar la memoria y la afinidad de la CPU), lo que a su vez puede afectar el rendimiento de la aplicación.
njuffa

Si bien aclaró que se deben evitar otras razones para la elección del sistema operativo, lo cual es comprensible, debe permitir la estabilidad del sistema operativo como respuesta. Si el OS1 falla después de 20 horas al 99% del cálculo y todos los cálculos tienen que repetirse, puede considerarlo menos eficiente que un cálculo un poco más lento pero estable en el sistema operativo 2.
Jan Hackenberg

Respuestas:


2

En principio, debería haber poca diferencia, ya que los kits de herramientas subyacentes son generalmente similares, si no iguales: bibliotecas, compiladores (y hardware). En la práctica, puede haber una mejora al usar nodos 'delgados'. Eso no es GUI, no hay correo electrónico ejecutándose en segundo plano o cualquiera de los otros procesos que un sistema operativo puede tener para facilitar la experiencia del usuario. Puede ser más fácil configurar un sistema operativo 'servidor' en Linux directamente desde una distribución estándar que puede resultar en una máquina mucho más ágil para ejecutar un código intensivo de coma flotante. Incluso entonces, las ventajas no serían muy notables siempre que no haya actividad del usuario aparte del código en ejecución.


2

Recuerdo haber leído hace dos o tres años estadísticas sobre la distribución del sistema operativo para la Lista de las 500 computadoras más rápidas del mundo. El número de computadora en ejecución basado en Linux / Unix era 498, basado en Windows 2 y sin MacOS. Lamentablemente no pude volver a las estadísticas. Wikipedia artículo SuperComputer 's simplemente afirma:

"Aunque la mayoría de las supercomputadoras modernas usan el sistema operativo Linux, cada fabricante tiene su propio derivado específico de Linux, y no existe ningún estándar de la industria, en parte debido al hecho de que las diferencias en las arquitecturas de hardware requieren cambios para optimizar el sistema operativo para cada diseño de hardware" .

Incluso si este artículo no da los números de la distribución, da al menos una tendencia clara a las computadoras basadas en Linux. En un campo donde cada bit de rendimiento cuenta (y el dinero necesario para adaptar el sistema a la especificación de la supercomputadora probablemente no, así que no asumo que la naturaleza de código abierto es el mayor beneficio aquí).

En una estación de trabajo bastante normal, Linux también tiende a tener una mejor gestión de recursos, por ejemplo, menos uso de memoria, y tiende a ser más estable. Sin embargo, esta es una experiencia personal mía sin estadísticas detrás de ella y no debe generalizarse sin confirmación (Win 7 vs Ubuntu 14.04).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.