18 votes

Différence de performance entre les distributions/paquets linux compilés et binaires

J'ai beaucoup cherché sur Internet et je n'ai pas trouvé de réponse exacte.

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

La majorité des distros utilisent des backages binaires (debian, etc.).

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

Deuxième question : Un paquet binaire signifie-t-il qu'il n'utilise pas les instructions du processeur qui ont été introduites après le premier processeur AMD 64 bits ? Avec les paquets 32 bits, cela signifie-t-il que le paquet fonctionnera sur 386 et n'utilisera pas la plupart des instructions modernes du CPU ?

Informations supplémentaires :

  • Je ne parle pas du bureau, mais de l'environnement du serveur.
  • Je ne me soucie pas du temps de compilation
  • J'ai plus de serveurs, donc une augmentation de la vitesse de plus de 15% vaut la peine d'utiliser des paquets de code source.
  • S'il vous plaît, pas de guerre de mots.

1 votes

Juste pour corriger une supposition erronée : FreeBSD est livré avec un arbre des ports (source) et avec des paquets binaires. Voir man (1) pkg_add y ftp://ftp.freebsd.org/pub/FreeBSD/ports/packages/ .

11voto

ewwhite Points 193555

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

Gentoo peuvent offrir certaines optimisations, mais ouvrent la porte à davantage de problèmes de gestion, à une diminution de la notoriété, à une diminution du support des fournisseurs et des pilotes, à des problèmes de stabilité, moquerie et les 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 quand même 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, un meilleur support des fabricants de serveurs/de l'intégration du matériel, un Parcheando plus intelligent des ingénieurs de Red Hat et des technologies plus ésotériques comme 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 d'être capable d'identifier les goulots d'étranglement du système avant de vous engager dans cette voie.

Vous vous heurtez à une limite de performance maintenant ?

9voto

Falcon Momot Points 24815

La différence de performance sera dans la plupart des cas minime et sans intérêt. 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éploiement de vos propres correctifs personnalisés
  • Personnalisez facilement votre noyau
  • Conditionnement de vos propres mises à jour

Si vous ne faites aucune de ces choses, vous n'avez pas besoin d'une distribution des sources. Pour un usage personnel, elles sont très pratiques car elles vous permettent d'effectuer des mises à jour incrémentales à volonté sans trop vous soucier de la compatibilité binaire, ce qui n'est pas une préoccupation que je vois souvent dans un contexte d'entreprise.

Il est important de noter que vous pouvez également faire ces choses avec une distribution binaire, en créant vos propres paquets RPM ou autre. Les frais de gestion sont similaires.

Vous ne verrez pas une augmentation de vitesse de 15% en compilant à partir des sources. Je n'oserais même pas l'estimer à 5 % dans un cas raisonnable. Compiler à partir des sources vous apporte deux choses :

  • Vous pouvez utiliser la version du compilateur de votre choix
  • Vous pouvez demander au compilateur de générer des instructions à partir d'extensions ISA non utilisées dans les paquets des distributions binaires, comme AESNI et AVX.

Cependant, le compilateur ne les génère que très rarement, et les économies globales réalisées grâce à leur utilisation sont généralement minuscules si l'on considère les performances de l'application dans son ensemble. Des éléments tels que les accès à la RAM (et leur latence) et la latence des disques et des périphériques sont des facteurs beaucoup plus importants, et vous devriez vraiment commencer par là.

Applications qui puede Les applications qui bénéficient d'une compilation personnalisée et qui ne fonctionnent que sur un noyau Intel i7 ou i5 relativement récent sont celles qui font beaucoup de mathématiques vectorielles et celles qui font beaucoup de cryptage et de décryptage AES, ou qui nécessitent beaucoup de nombres aléatoires. Si vous voulez utiliser le DRBG d'Intel, vous devrez également le faire, actuellement.

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

6voto

Journeyman Geek Points 6949

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

Tout d'abord, le courant dominant pour la plupart des gens sur SF - vous voulez quelque chose que vous connaissez. sera travail, vous voulez soutien et vous le voulez maintenant . Dans ce cas, il est préférable d'opter pour des systèmes basés sur Redhat (RHEL vous offre un excellent support et Centos est une reconstruction communautaire de la distribution RHEL, qui a fait ses preuves). Vous n'obtiendrez cependant pas le dernier et le meilleur. Dans de nombreux cas, c'est également vrai pour le matériel.

Le deuxième point de vue est celui du "milieu de la route", c'est-à-dire le juste milieu, en optant pour quelque chose comme Ubuntu. Vous voulez de nouveaux paquets (au détriment d'une stabilité à toute épreuve), vous voulez un installateur et vous voulez un système de gestion des paquets. jolies choses .

Dans certains cas, les gens ont des problèmes, mais vous avez des paquets plus récents et les choses sont raisonnablement testé . Bien qu'il y ait beaucoup de haine pour Ubuntu ici, c'est un bon compromis entre la facilité d'installation et des paquets raisonnablement nouveaux. Debian est probablement un choix un peu plus conservateur. De nos jours, vous pouvez même configurer Ubuntu avec un noyau à faible latence. J'ai tendance à penser qu'ubuntu et debian me conviennent, mais ymmv. Beaucoup d'endroits qui déploient un lot de serveurs comme facebook et google optent pour cette option.

Enfin, il y a les distributions basées sur les sources. Dans la plupart des cas, la configuration initiale est une véritable plaie. Vous faites une erreur dans la configuration de votre noyau ? Oups, passez quelques heures à recompiler. Vous n'avez pas non plus d'installateur - c'est pour les n00bs. Vous obtenez souvent des applications de pointe, et l'option de les compiler comme vous en avez besoin (ce qui inclut la possibilité de choisir des optimisations pour la vitesse ou l'utilisation de la mémoire par exemple), et une version roulante. Si vous avez des besoins très spécifiques et ésotériques, Gentoo est parfait. Si vous avez besoin de déployer quelques dizaines de systèmes et que vous voulez l'automatiser... bonne chance. Les distributions basées sur les sources ne s'adaptent tout simplement pas aussi bien. Vous obtenez beaucoup de flexibilité, *quelques** vitesses supplémentaires, mais pas une maintenabilité au même niveau qu'une distribution basée sur des paquets. Vous êtes no Vous perdrez probablement du temps à essayer d'adapter le drapeau de compilation à votre matériel, et si vous vous trompez, vous perdrez du temps à essayer de trouver ce que vous devez faire. genau échoué.

enter image description here

Les BSD constituent un famille des OS. Certaines personnes ne jurent que par eux (au moins un habitué de la salle de conférence est un utilisateur de freebsd), et les différents BSD ont des centres d'intérêt différents - par exemple openbsd est obsédé par la sécurité, et freebsd est le système "grand public". Ils peuvent ne pas avoir, dans certains cas, le même type de support matériel que linux, mais cela dépend d'un certain nombre de facteurs.

6voto

Steven Newbury Points 61

Tous les points soulevés sont bien sûr corrects. Je voudrais juste m'inscrire en faux contre l'idée que 5%-15% d'augmentation des performances est irréalisable, surtout avec les versions modernes de GCC, cela dépend vraiment de l'architecture du CPU et de sa proximité avec la ligne de base utilisée comme cible pour les distributions binaires. Le paramètre -march=native de GCC, en plus d'utiliser les extensions ISA, optimisera également les tailles de cache/ligne L1 et L2. Un code correctement aligné (pour votre CPU) peut être beaucoup plus rapide, surtout si -flto est également utilisé afin que le compilateur puisse savoir tout ce qu'il doit prendre en compte. [Malheureusement, certains paquets ne fonctionnent pas actuellement avec LTO].

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

À l'avenir, si les infrastructures de graphite du CCG se stabilisent, les gains potentiels seront encore plus importants.

0 votes

Anecdote à l'appui de cette réponse : certains benchmarks que j'ai exécutés avec Cairo et Pixman compilés avec -march=native sur un processeur Skylake (client) étaient de 5 à 20 % plus rapides que la distribution binaire. (Ces paquets sont probablement relativement faciles à vectoriser automatiquement par les compilateurs). -fno-semantic-interposition est un autre drapeau à essayer, tout comme -falign-functions .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X