Différence de performances entre les distributions / packages Linux compilés et binaires

13

Je cherchais beaucoup sur Internet et je n'ai pas pu trouver de réponse exacte.

Il existe des distributions comme Gentoo (ou FreeBSD) qui ne sont pas fournies avec les binaires mais uniquement avec le code source des packages (ports).

La majorité des distributions utilise des backages binaires (debian, etc.).

Première question: quelle augmentation de vitesse puis-je attendre d'un package compilé? Quelle augmentation de vitesse puis-je obtenir à partir de packages du monde réel comme apache ou mysql? c'est à dire des requêtes par seconde?

Deuxième question: le package binaire signifie-t-il qu'il n'utilise aucune instruction de processeur introduite après le premier processeur AMD 64 bits? Avec les packages 32 bits, cela signifie-t-il que le package fonctionnera sur 386 et n'utilise essentiellement pas la plupart des instructions modernes du CPU?

Information additionnelle:

  • Je ne parle pas de bureau, mais d'environnement de serveur.
  • Je me fiche du temps de compilation
  • J'ai plus de serveurs, donc l'augmentation de la vitesse de plus de 15% vaut pour l'utilisation de packages de code source
  • S'il vous plaît pas de guerres de flammes.
jozko
la source
1
Juste pour corriger une hypothèse erronée: FreeBSD est fourni avec une arborescence de ports (source) et avec des paquets binaires. Voir man (1) pkg_addet ftp://ftp.freebsd.org/pub/FreeBSD/ports/packages/.
Hennes

Réponses:

7

La différence de performances sera dans presque tous les cas minime et sans valeur. Les bonnes raisons d'utiliser les distributions sources (tout en roulant vos propres paquets binaires, comme le permet le système bindist de gentoo) incluent:

  • Déployer vos propres correctifs personnalisés
  • Personnaliser facilement votre noyau
  • Empaqueter vos propres mises à jour

Si vous ne faites aucune de ces choses, vous n'avez pas besoin d'une distribution source. Pour un usage personnel, ils sont très pratiques car ils vous permettent de mettre à niveau les choses progressivement à volonté sans trop vous soucier de la compatibilité binaire, ce qui n'est pas une préoccupation que je vois souvent dans un environnement d'entreprise.

Il convient de noter que vous pouvez également faire ces choses avec une distribution binaire, en créant vos propres packages RPM ou autre chose. Les frais généraux de gestion sont similaires.

Vous ne verrez pratiquement pas d'augmentation de vitesse de 15% en compilant à partir de la source. Je serais réticent à l'estimer à 5% dans tous les cas raisonnables. Compiler à partir de la source vous apporte deux choses:

  • Vous pouvez utiliser votre version de compilateur préférée
  • Vous pouvez demander au compilateur de générer des instructions à partir d'extensions ISA non utilisées dans les packages de distributions binaires, tels que AESNI et AVX

Cependant, le compilateur les génère très rarement de toute façon, et les économies globales de leur utilisation sont généralement très minimes lorsque les performances de l'application sont prises dans leur ensemble. Des choses comme les accès RAM (et la latence) et la latence du disque et du périphérique sont des facteurs beaucoup plus importants, et vous devriez vraiment commencer par là.

Les applications qui pourraient bénéficier d'une compilation personnalisée qui ne fonctionnera que sur un Intel Core i7 ou i5 relativement récent incluent celles qui font beaucoup de calculs vectoriels et celles qui font beaucoup de cryptage et de décryptage AES, ou nécessitent beaucoup de nombres aléatoires. Si vous souhaitez utiliser Intel DRBG, vous devez également le faire actuellement.

Si aucun de ces éléments ne s'applique à vous, vous serez satisfait de l'une des distributions basées sur Debian ou Red Hat, et vous aurez beaucoup moins de frais de maintenance.

Falcon Momot
la source
9

Réponse courte ... De nombreuses applications à grande échelle et sensibles à la vitesse / latence fonctionnent sur des distributions Linux standard. Red Hat, CentOS, Debian, Ubuntu ... Ils fonctionnent tous bien dans la majorité des cas. La plupart des gains proviennent du réglage des applications, des optimisations du noyau et du système d'exploitation et de l'infrastructure.

Gentoo peut offrir certaines optimisations, mais ouvre la porte à plus de problèmes de gestion, à une réduction de la part de l'esprit, à une diminution de la prise en charge des fournisseurs et des pilotes, à des problèmes de stabilité, au ridicule et à des problèmes de sécurité potentiels.

J'ai géré des serveurs basés sur Gentoo dans un environnement de trading financier à haute fréquence. Même s'il y avait de légers avantages en termes de performances sous Gentoo, je suis toujours passé à Red Hat et CentOS. Les avantages de Gentoo sur le papier ont été facilement surmontés par une sélection plus intelligente du matériel, une meilleure prise en charge du fabricant du serveur / de l'intégration matérielle, des correctifs plus intelligents par les ingénieurs de Red Hat et des technologies plus ésotériques comme le contournement du noyau ...

Si vous êtes à un point où l'efficacité des piles d'applications populaires (LAMP) est un problème, assurez-vous d'avoir optimisé le matériel de votre serveur (type de CPU, disposition de la RAM), l'infrastructure réseau, le système de surveillance et être en mesure d'identifier les goulots d'étranglement du système avant en descendant ce chemin.

Êtes-vous confronté à une limitation de performances maintenant ?

ewwhite
la source
5

Tous les arguments avancés sont bien sûr corrects. Je voudrais juste prendre un problème avec l'idée qu'une augmentation de 5% à 15% des performances n'est pas réalisable, en particulier avec les versions modernes de GCC, cela dépend vraiment de l'architecture du processeur et de sa proximité avec la ligne de base utilisée comme cible pour les distributions binaires. GCCs -march = native permettra, en plus d'utiliser les extensions ISA, d'optimiser également les tailles de cache / ligne L1 et L2. Un code correctement aligné (pour votre CPU) peut être beaucoup plus rapide, en particulier lorsque -flto est également utilisé pour que le compilateur sache tout ce dont il a besoin pour prendre en compte. [certains packages sont actuellement rompus avec LTO, malheureusement]

De plus, la compilation de certains packages avec -Ofast, en plus de march = native et LTO peut faire une différence significative.

À l'avenir, si les infrastructures en graphite des pays du CCG se stabilisent un jour, cela pourrait permettre des gains encore plus importants.

Steven Newbury
la source
Anecdote à l'appui de cette réponse: certains benchmarks que j'ai exécutés avec Cairo et Pixman compilés avec -march=nativeun processeur Skylake (client) étaient 5 à 20% plus rapides que la distribution binaire. (Ces packages sont probablement relativement faciles à vectoriser automatiquement pour les compilateurs.) -fno-semantic-interpositionEst un autre bon indicateur à essayer, tel quel -falign-functions.
ZachB
4

Cela dépend de ce que vous voulez dans votre système, et il y a vraiment trois écoles de pensée ici (et cela est vrai pour le matériel et les logiciels)

Tout d' abord, le courant dominant dans la mesure où la plupart des gens sur SF vont - vous voulez quelque chose que vous savez va travailler, vous voulez un soutien et vous voulez qu'il maintenant . Dans ce cas, aller avec des systèmes basés sur redhat (RHEL vous offre un excellent support, et centos est une reconstruction communautaire de la distribution RHEL bien testée). Cependant, vous n'obtiendrez pas la dernière et la meilleure. Dans de nombreux cas, cela vaut également pour le matériel.

Le second est le point de vue du «milieu de la route», qui est le juste milieu - aller avec quelque chose comme ubuntu. Vous voulez de nouveaux packages (au détriment de la stabilité totale), vous voulez un installateur et de belles choses .

Dans certains cas, les gens ont des ennuis, mais vous avez des packages plus récents et les choses sont raisonnablement testées . Bien qu'il y ait beaucoup de haine pour Ubuntu ici, c'est un bon compromis entre la facilité d'installation et des packages raisonnablement nouveaux. Debian est probablement un choix légèrement plus conservateur. De nos jours, vous pouvez même configurer Ubuntu avec un noyau à faible latence prêt à l'emploi. J'ai tendance à sentir ubuntu et debian travailler pour moi, mais ymmv. Beaucoup d'endroits qui déploient beaucoup de serveurs comme Facebook et Google Go pour cette option.

Enfin, il existe des distributions basées sur la source. La configuration initiale dans la plupart des cas est une douleur totale à l'arrière. Vous faites une erreur avec la configuration de votre noyau? Oups, passez quelques heures à recompiler. Vous n'avez pas non plus d'installation - c'est pour n00bs. Vous obtenez souvent des applications de pointe et la possibilité de les compiler selon vos besoins (ce qui inclut la possibilité de choisir des optimisations pour la vitesse ou l'utilisation de la mémoire par exemple) et une version continue. Si vous avez des besoins ésotériques très spécifiques, gentoo est génial. Si vous avez besoin de déployer quelques dizaines de systèmes et que vous souhaitez l'automatiser ... bonne chance. Les distributions basées sur la source ne sont tout simplement pas aussi évolutives. Vous obtenez beaucoup de flexibilité, * une ** vitesse supplémentaire, mais pas de maintenabilité au même niveau qu'une IMO de distribution basée sur un package. Tu n'es pasvous obtiendrez probablement une vitesse supplémentaire de 15%, et vous finirez probablement par perdre du temps à essayer de régler l'indicateur de compilation pour votre matériel, et si vous gâchez quelque chose, passez du temps à déterminer ce qui a échoué exactement .

entrez la description de l'image ici

Les BSD sont une famille distincte d'OS. Certaines personnes ne jurent que par eux (au moins une salle de communication régulière est un utilisateur de freebsd), et différents BSD ont des objectifs différents - par exemple, openbsd est obsédé par la sécurité, et freebsd est le `` grand public ''. Ils peuvent ne pas, dans certains cas, avoir le même type de support matériel que Linux, mais cela dépend de plusieurs facteurs.

Journeyman Geek
la source