CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Compiler son noyau

Pseudo supprimé
Pseudo supprimé 14 janvier 2009 à 21:59:22

Bonsoir à vous!

Je souhaiterai savoir si il existe un kernel propre à mon Intel Celeron à 2Ghz ancienne génération.

Pensez-vous que cela puisse ajouter au confort d'utilisation (tout en sachant que ma config est vieille)?

chris_27
chris_27
Niveau 10
14 janvier 2009 à 22:04:54

si il existe un kernel propre à mon Intel Celeron :d) il n'y a qu'un seul noyau... c'est justement ce noyau qui s'appelle "Linux" à la base.

Tu peux t'amuser à le compiler toi-même, mais à moins d'avoir une idée précise en tête sur une/des options permettant d'améliorer les performances sur ta machine, tu ne gagneras rien du tout. :(

En général, la raison qui pousse les gens à recompiler eux-même le noyau est plutôt l'activation d'une option propre à la marque de la machine pour corriger un bogue ou l'ajout/le patchage d'un driver.

Pseudo supprimé
Pseudo supprimé 14 janvier 2009 à 22:09:58

Donc il n'y rien qui permet de coller au plus de près des caractérisque de mon cpu?

Je pensais en fait qu'on pouvait avoir un noyau qui s'executerait de sorte à mieux utilisé les cycles de tel ou tel cpu.

chris_27
chris_27
Niveau 10
14 janvier 2009 à 22:11:49

Que dit la commande :
$ uname -m
?

Pseudo supprimé
Pseudo supprimé 14 janvier 2009 à 22:24:55

i686

Pentium pro quoi

Moi j'ai un Celeron x86 sur socket 478

chris_27
chris_27
Niveau 10
14 janvier 2009 à 23:25:04

"j'ai un Celeron x86 sur socket 478" :d) Oui, tu as un beau i686 avec un beau noyau pour i686. :-)

Ne va pas croire qu'il existe du code optimisé pour chaque machine au monde. C'est déjà un travail bestial que de supporter une dizaine de cpu générique... :(

godrik
godrik
Niveau 30
14 janvier 2009 à 23:54:28

il y a bien les options -march et -mtune de gcc qui sont cense generer des codes compatible et optimiser pour tel ou tel architecture (en faisant des choix qui dependent des taille de pipeline et cie, des latences des instructions...), mais je ne suis pas bien sur que ca fonctionne vraiment.

Regler la taille des buffers systemes, le scheduling des applications, en utilisant les bon drivers, en utilisant intelligement ses applications (etc), on obtiendra probablement de bien meilleur performances qu'en changeant les parametres de son compilateur.

Pseudo supprimé
Pseudo supprimé 14 janvier 2009 à 23:55:28

D'accord, je vous remercie tout cela est très instructif.

:ok:

On va pas toucher pour le moment hein :hap:

Pseudo supprimé
Pseudo supprimé 15 janvier 2009 à 23:06:18

godrik
"il y a bien les options -march et -mtune de gcc qui sont cense generer des codes compatible et optimiser pour tel ou tel architecture (en faisant des choix qui dependent des taille de pipeline et cie, des latences des instructions...), mais je ne suis pas bien sur que ca fonctionne vraiment."

Bien sur que ça fonctionne c'est pas juste fait pour faire beau lol. D'où le fait que l'industrie liée aux processeurs à pas mal changé ses dernières années, maintenant on optimise l'architecture du processeur au lieu de monter "betement" en fréquence en suivant la loi de moore.
Dans les distributions "classiques" ton kernel est optimisé pour une famille d'architecture, après tu peux pousser un peu plus loin en optimisant pour un processeur en particulier, je pense que tu peux jeter un coup d'oeil directement à gentoo qui est spécialement conçue pour ça.

Gentoo, Wikipedia
"Sa particularité est la compilation complète (ou en partie) d'un système GNU/Linux à partir des sources, à la manière de Linux From Scratch mais automatisée.

Ses outils de gestion de paquets s'inspirent des ports des BSD. Ce processus permet une optimisation et une personnalisation complète du système mais prend un certain temps pour compiler tous les logiciels nécessaires.

Ce type d'installation permet de tirer parti au mieux de l'architecture de la machine. En effet, le code source sera compilé en tenant compte des optimisations possibles du jeu d'instructions du processeur. La majeure partie des distributions sont compilées avec un jeu d'instructions générique et non pas pour un processeur plus récent, ceci afin de conserver un fonctionnement sur le maximum de machines. Les processeurs plus récents fonctionnent alors de façon minimale sans utiliser les optimisations du fondeur."

Ça résume mieux la chose.

Sankukai
Sankukai
Niveau 10
16 janvier 2009 à 09:45:17

Effectivement ça fonctionne dans le sens où le code généré tire partie au mieux de l'architecture en ordonnant spécifiquement le code et en tirant partie des instructions spécifiques au processeur. Après dans les faits, gagner quelques ticks sur une machine destiné à faire principalement de la bureautique, c'est complètement invisible.
J'avais fait le test sur une machine équipée d'un dual core intel avec 3 stages gentoo :
-- stage x86 avec aucune optimisation
-- stage x86 avec diverses optimisations (march + diverses options de linkage)
-- stage amd64 avec haut niveau d'optimisation (march, O2, gnu-hash pour le linkage,...)

Au final, je n'ai constaté aucune différence de perfs.

Je vois que tu bosses dans l'embarqué temps réel, donc sans doute sur des systèmes critiques qui ont besoin de fortes optimisations, où chaque cycle cpu est précieux. À ce niveau, je ne doute pas que le tunning de code est nécessaire. Sur la machine de l'individu lambda, je doute beaucoup plus.

godrik
godrik
Niveau 30
16 janvier 2009 à 15:59:13

Sankukai, exactement ce que je voulais dire.
Evidement que ces options d'optimisation font quelque chose.
Cependant mes test sur du calcul numerique ont montre que ca ne servait a rien. Dans le sens ou modifier legerement le code pour eviter quelques appels de fonction critiques ou changer les parametres de deroulement de boucle (et cie), sont beaucoup plus efficace que d'optimiser le code pour une architecture.
basiquement, la seul chose que ca fait, c'est reordonnancer les instructions assembleur pour gagenr sur l'utilisation du pipeline.
90% de ton temps de calcul n'est pas dans le pipeline mais dans des appels de fonctions, des default de cache/de page des entre/sortie, des descente en espace noyaux...
ca ton compilo il n'y peut rien
Alors oui, ces options -march -mtune font quelques chose, mais qudn j'ai du code a faire tourner plus vite, ce n'est definitivement pas par la que je commence!

Pseudo supprimé
Pseudo supprimé 16 janvier 2009 à 20:46:09

Et concernant la gestion de l'Hyper-Threading (j'envisage de trouver un P4), il faut un noyau SMP?

chris_27
chris_27
Niveau 10
16 janvier 2009 à 20:59:10

Bon, on va faire tout d'un coup :

Que dit la commande :
$ uname -a
?

Pseudo supprimé
Pseudo supprimé 16 janvier 2009 à 21:17:40

Linux localhost 2.6.22.19-desktop586-2mdv #1 SMP Mon May 5 20:45:47 EDT 2008 i686 Intel(R) Celeron(R) CPU 2.00GHz GNU/Linux

Il me spécifie bien "SMP", donc c'est cool

chris_27
chris_27
Niveau 10
16 janvier 2009 à 21:40:17

Voilà. :-)

Pseudo supprimé
Pseudo supprimé 17 janvier 2009 à 17:17:09

@Sankukai

Tu ne peux pas affirmer avec une seule machine de test que ça n'apporte rien sans même expliquer la manière avec laquelle tu as fait tes mesures.
Après je n'ai jamais dit qu'il suffisait de compiler avec certaines options pour gagner 10s au démarrage non plus, et puis tout dépend de ton archi s'il y a vraiment des choses supplémentaires à exploiter "mieux". J'ai simplement répondu à la question, si ça l'intéresse de voir ce que ça fait je ne vois pas ou est le problème.

@godrik
Pour le pipeline je crois que tu le sous estime énormément le temps que ça fait gagner quand c'est utilisé "au mieux". D'ailleurs il n'y à qu'a voir les recherches sur les algo pour les optimiser, il y a énormément d'efforts mis en œuvre par Intel de ce coté quand ils sortent une nouvelle architecture.
De même, tu sous estime l'importance du compilo, suivant le compilo et les options utilisés tu n'auras pas les mêmes temps d'exécutions. Donc tant qu'a faire autant ne pas se mettre une balle dans le pied.

"Alors oui, ces options -march -mtune font quelques chose, mais qudn j'ai du code a faire tourner plus vite, ce n'est definitivement pas par la que je commence! "
Oui mais la on parle de code déjà fait.

Sankukai
Sankukai
Niveau 10
17 janvier 2009 à 17:46:07

Oui bien sûr, je n'ai jamais parlé de benchmark fiable. Je me suis placé dans la situation de l'individu lambda qui se fie plus à son ressenti qu'à un bench qui va montrer qu'en calant un -march=i686 -O3 à gcc on gagne 0,1ms au lancement de firefox. :)

J'ai simplement répondu à la question, si ça l'intéresse de voir ce que ça fait
je ne vois pas ou est le problème.

Il n'y en a aucun, ne te sens pas agressé. :p
Je répondais plus à la question, qu'à ta remarque. Le point de vue que j'ai avancé est partagé même par les plus gros ricers gentoo, j'ai exprimé cet état de fait afin d'aider l'op dans sa décision. Effectivement, s'il veut mettre les mains dans les options de compilation pour « s'amuser » et apprendre grand bien lui fasse, si au contraire il se casse les dents une semaine sur un truc qui l'emmerde pour aucun bénéfice, il vaut mieux qu'il ait entendu mon point de vue.

godrik
godrik
Niveau 30
19 janvier 2009 à 19:42:18

subwarez, je ne sous estime pas les options de compilations.
Ce que je dis c'est que:
-gcc est un mauvais compilateur qui genere du code assez peu efficace
-la qualite du pipelining est assez peu importante quand on fait des entres/sortie ou de la descente en espace noyaux. Ce qui represente l'utilisation moyenne d'un ordinateur.
-gcc en -O3 est parfois moins efficace qu'en -O2 (a cause de certaine strategie d'allocation memoire qui foutent le bordel quand on fait trop d'indirection)
-recompiler un noyau est assez chiant. Il faut le maintenir a jour, maintenir la coherence entre le compilo des modules et le compilo du noyau.
-Les problemes de performances dans linux sont des bugs ou des problemes d'architecture et de driver et certainement pas des problemes de compilations
-L'activation des -march et cie sert beaucoup a l'utilisation des instructions vectorielles (mmx et generation superieur) qui sont tres pratiques quand on fait de l'imagerie ou de la compression, mais qui le sont beaucoup moins quand on gere des tables de pages ou des interruptions.

L'utilisation de ces options pour un noyaux me semble relativement inutile.
Apres j'ai fait ce genre d'optimisation sur vlc, mplayer, gzip. Sur ces logiciels, c'est important de bien utiliser l'utilisation du processeur parceque c'est lui qui est critique. Ce n'est pas le cas dans le noyaux ou dans ton window manager.

chris_27
chris_27
Niveau 10
19 janvier 2009 à 20:19:32

Je précise pour ceux qui lisent ce thread que gcc -O3 c'est dangereux. Si vous avec le moindre problème avec un soft compilé avec cette option, commencez par le recompiler avec -02. Le niveau d'optimisation n°2 préserve la sémantique du code au moins... :sarcastic:

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment