Diferencia de rendimiento entre distribuciones / paquetes compilados y binarios de Linux

13

Estaba buscando mucho en Internet y no pude encontrar una respuesta exacta.

Hay distribuciones como Gentoo (o FreeBSD) que no viene con binarios sino solo con código fuente para paquetes (puertos).

La mayoría de las distribuciones usan backages binarios (debian, etc.).

Primera pregunta: ¿Cuánto aumento de velocidad puedo esperar del paquete compilado? ¿Cuánto aumento de velocidad puedo obtener de paquetes del mundo real como apache o mysql? es decir, consultas por segundo?

Segunda pregunta: ¿El paquete binario significa que no utiliza ninguna instrucción de CPU que se introdujo después de la primera CPU AMD de 64 bits? Con los paquetes de 32 bits, ¿significa que el paquete se ejecutará en 386 y, básicamente, no utiliza la mayoría de las instrucciones modernas de la CPU?

Información adicional:

  • No estoy hablando del escritorio, sino del entorno del servidor.
  • No me importa el tiempo de compilación
  • Tengo más servidores, por lo que el aumento de velocidad de más del 15% vale para usar paquetes de código fuente
  • Por favor, no llamas.
jozko
fuente
1
Solo para corregir una suposición incorrecta: FreeBSD viene con un árbol de puertos (fuente) y con paquetes binarios. Ver man (1) pkg_addy ftp://ftp.freebsd.org/pub/FreeBSD/ports/packages/.
Hennes

Respuestas:

7

La diferencia de rendimiento será en casi todos los casos mínima y no valdrá la pena. Entre las buenas razones para usar distribuciones de origen (al rodar sus propios paquetes binarios, como lo permite el sistema bindist de gentoo) se incluyen:

  • Implementar sus propios parches personalizados
  • Personalizando tu kernel fácilmente
  • Empaquetando sus propias actualizaciones

Si no está haciendo ninguna de estas cosas, no necesita una distribución fuente. Para uso personal son muy convenientes porque le permiten actualizar las cosas de forma incremental a voluntad sin preocuparse demasiado por la compatibilidad binaria, lo cual no es una preocupación que veo a menudo en un entorno empresarial.

Vale la pena señalar que también puede hacer estas cosas con una distribución binaria, haciendo sus propios paquetes RPM o lo que sea. Los gastos generales de gestión son similares.

Básicamente no verá un aumento de velocidad del 15% compilando desde la fuente. Sería detestable estimarlo incluso en un 5% en cualquier caso razonable. Compilar desde la fuente te da un par de cosas:

  • Puedes usar tu versión de compilador preferida
  • Puede ordenar al compilador que genere instrucciones a partir de extensiones ISA que no se utilizan en paquetes de distribuciones binarias, como AESNI y AVX

Sin embargo, el compilador rara vez genera estos de todos modos, y los ahorros generales de usarlos son generalmente muy minúsculos cuando el rendimiento de la aplicación se toma en su conjunto. Cosas como los accesos de RAM (y la latencia) y la latencia de disco y dispositivo son factores mucho más importantes, y realmente debería comenzar allí.

Las aplicaciones que podrían beneficiarse de una compilación personalizada que solo se ejecutará en un Intel Core i7 o i5 relativamente reciente incluyen las que hacen muchos cálculos vectoriales y las que hacen mucho cifrado y descifrado AES, o requieren muchos números aleatorios. Si desea utilizar Intel DRBG, también debería hacerlo en la actualidad.

Si nada de esto se aplica a usted, estará muy contento con cualquiera de las distribuciones basadas en Debian o Red Hat, y tendrá una carga de mantenimiento mucho menor.

Falcon Momot
fuente
9

Respuesta corta ... Muchas aplicaciones sensibles a la velocidad / latencia a gran escala se ejecutan en distribuciones estándar de Linux. Red Hat, CentOS, Debian, Ubuntu ... Todos funcionan bien en la mayoría de los casos. La mayoría de las ganancias provienen del ajuste de aplicaciones, el núcleo estándar y las optimizaciones e infraestructura del sistema operativo.

Gentoo puede ofrecer algunas optimizaciones, pero abre la puerta a más problemas de gestión, menos recursos compartidos, menor asistencia del proveedor y del conductor, problemas de estabilidad, burlas y posibles problemas de seguridad.

He administrado servidores basados ​​en Gentoo en un entorno de comercio financiero de alta frecuencia. A pesar de que hubo algunos beneficios leves de rendimiento en Gentoo, todavía me mudé a Red Hat y CentOS. Las ventajas de Gentoo en papel se superaron fácilmente mediante una selección de hardware más inteligente, un mejor soporte de integración de hardware / fabricante del servidor, parches más inteligentes por parte de los ingenieros de Red Hat y más tecnologías esotéricas como el bypass del kernel ...

Si se encuentra en un punto donde la eficiencia de las pilas de aplicaciones populares (LAMP) es un problema, asegúrese de haber optimizado el hardware de su servidor (tipo de CPU, diseño de RAM), infraestructura de red, sistema de monitoreo y poder identificar cuellos de botella del sistema antes siguiendo este camino

¿Estás llegando a una limitación de rendimiento ahora ?

ewwhite
fuente
5

Todos los puntos hechos son, por supuesto, correctos. Solo me gustaría tener algún problema con la idea de que el aumento del rendimiento del 5% -15% es inalcanzable, especialmente con las versiones modernas de GCC, realmente depende de la arquitectura de la CPU y de lo cerca que esté de la línea base utilizada como objetivo para las distribuciones binarias. Los GCC -march = native, además de utilizar las extensiones ISA, también se optimizan para los tamaños de línea / caché L1 y L2. El código correctamente alineado (para su CPU) puede ser mucho más rápido, especialmente cuando también se usa -flto para que el compilador pueda saber todo lo que necesita tener en cuenta. [algunos paquetes están actualmente rotos con LTO, desafortunadamente]

Además, compilar paquetes seleccionados con -Ofast, además de march = native y LTO puede marcar una diferencia significativa.

En el futuro, si la infraestructura de grafito de los CCG alguna vez se estabiliza, tendrá el potencial de obtener ganancias aún mayores.

Steven Newbury
fuente
Anécdota en apoyo de esta respuesta: algunos puntos de referencia que ejecuté con Cairo y Pixman compilados -march=nativeen una CPU Skylake (cliente) fueron de 5 a 20% más rápidos que la distribución binaria. (Esos paquetes son probablemente relativamente fáciles de compilar para que los compiladores se auto-vectoricen). -fno-semantic-interpositionEs otro buen indicador para probar, como es -falign-functions.
ZachB
4

Depende de lo que desee en su sistema, y ​​realmente hay tres escuelas de pensamiento aquí (y esto es cierto tanto para hardware como para software)

En primer lugar, la corriente principal en lo que respecta a la mayoría de las personas en SF: quieres algo que sabes que funcionará, quieres soporte y lo quieres ahora . En este caso, ir con sistemas basados ​​en redhat (RHEL le brinda un excelente soporte, y centos es una reconstrucción comunitaria de la distribución RHEL bien probada). Sin embargo, no obtendrás lo último y lo mejor. En muchos casos, esto también es cierto para el hardware.

El segundo es el punto de vista del 'medio del camino', que es el término medio, que va con algo como ubuntu. Desea nuevos paquetes (a costa de una estabilidad sólida), quiere un instalador y cosas buenas .

En algunos casos, las personas se encuentran con problemas, pero usted tiene paquetes más nuevos y las cosas se prueban razonablemente . Si bien hay mucho odio por Ubuntu aquí, es un buen compromiso entre la facilidad de configuración y los paquetes razonablemente nuevos. Debian es probablemente una opción un poco más conservadora. En estos días, incluso puede configurar Ubuntu con un núcleo de baja latencia fuera de la caja. Tiendo a sentir que Ubuntu y Debian funcionan para mí, pero mmm. Muchos lugares que implementan muchos servidores como Facebook y Google optan por esta opción.

Finalmente hay distribuciones basadas en fuente. La configuración inicial en la mayoría de los casos es un absoluto dolor en la parte trasera. ¿Comete un error al configurar su núcleo? Vaya, pasa unas horas recompilando. Tampoco obtienes un instalador, eso es para n00bs. A menudo, obtienes aplicaciones innovadoras y la opción de compilarlas cuando las necesites (que incluye la posibilidad de elegir optimizaciones para la velocidad o el uso de memoria, por ejemplo) y una versión continua. Si tienes necesidades esotéricas muy específicas, gentoo es genial. Si necesita implementar algunas docenas de sistemas y desea automatizarlo ... buena suerte. Las distribuciones basadas en la fuente simplemente no se escalan también. Obtendrá mucha flexibilidad, * algo de ** velocidad extra, pero no mantenimiento en el mismo nivel que un IMO de distribución basado en paquetes. Usted es noes probable que obtenga un 15% de velocidad adicional, y probablemente terminará perdiendo el tiempo tratando de ajustar el indicador de compilación para su hardware, y si arruina algo, perderá tiempo resolviendo qué falló exactamente .

ingrese la descripción de la imagen aquí

Los BSD son una familia separada de sistemas operativos. Algunas personas juran por ellos (al menos una sala de comunicaciones regular es un usuario de freebsd), y diferentes BSD tienen diferentes enfoques, por ejemplo, openbsd está obsesionado con la seguridad, y freebsd es el 'mainstream'. Es posible que, en algunos casos, no tengan el mismo tipo de soporte de hardware que Linux, pero eso depende de varios factores.

Journeyman Geek
fuente