Le petit journal du pr0n: l'esclave des amazones numériques (et de marc dorcel..)
Le petit journal du pr0n
Informations et actualités cinématographiques
2010
01:04
Ubuntu Lucid Lynx 9.10: Huge Load Average


Récemment, je viens d’installer la dernière Ubuntu Lucid Lynx 9.10.

J’ai été surpris par pas mal d’évolution, une rapidité au démarrage incroyable, un KDE4 enfin stable et une prise en charge évoluée des périphériques. Mais j’ai été aussi étonné par le load average très conséquent sur un portable

Ma configuration est assez simple:

  • Portable Samsung
  • Processeur Intel Core2 Duo T7100 cadencé à 1.80GHz
  • 2 Go de RAM
  • NVidia GeForce 8400M G
  • Aucune application ne venant perturber le système



Sans Xorg

Le système pouvait loader jusqu’à 0.70 sans aucune raison: la loose quoi.

Sous Xorg

C’est pire, un load approchant les 2.0 sans rien d’actif

C’est pas possible, avec une Ubuntu 8.04, mon système ne loadait pas autant. Que s’est-il passé entre les deux releases ? Et sur les forums, impossible de trouver une put#%$* d’informations sur ce load average aussi haut.



La solution ?


Après une soirée rhum-banana, drogues et prostiputes, j’ai eu une illumination: et si cela venant du nouveau scheduler ? En effet – si ma mémoire est bonne – il y a eu des petites frictions entre kernel hackers sur les nouveaux schedulers. Hop hop, il est temps de tester cette possible voie.

Alors on a soit la méthode bourrine qui consiste a recompiler son kernel Linux avec un nouveau scheduler. Mais bon, si on se plante, va falloir refaire à chaque fois.

Ou bien on va faire un gros bisous au paquetage « linux-image-rt » disponible dans le repository Ubuntu.

 Si drivers nvidia proprio: $ wget http://us.download.nvidia.com/XFree86/Linux-x86/195.36.15/NVIDIA-Linux-x86-195.36.15-pkg1.run -O ~/NVIDIA-Linux-x86-195.36.15-pkg1.run $ apt-get install linux-image-rt $ vi /etc/default/grub             GRUB_DEFAULT=1             #GRUB_HIDDEN_TIMEOUT=0             GRUB_HIDDEN_TIMEOUT_QUIET=false $ update-grub2


On reboote le tout et sur le prompt grub, on selectionne la version « RT« 


Avec les drivers Nvidia

Là, le X devrait planter car pas de drivers nvidia. Sélectionnez « Passer en mode console ».
Sous le terminal, on lance la procédure d’installation du drivers nvidia (sudo sh ./NVIDIA-Linux-x86-195.36.15-pkg1.run )


Avec les drivers nouveau

Rien a faire

On finit l’optimisation en modification les options du schedulers directement:

 echo 100000 > /proc/sys/kernel/sched_min_granularity_ns echo 1000 > /proc/sys/kernel/sched_wakeup_granularity_ns 


Selon Ingo Molnar, kernel hacker sur les schedulers, pour un desktop, il faut que ces chiffres soient aussi bas que possible. ( a contrario, un server doit avoir des chiffres plus élevés)

Si vous voulez que ces options soient fixées, éditez le /etc/sysctl.conf

 vm.swappiness = 0 kernel.sched_min_granularity_ns = 100000 kernel.sched_wakeup_granularity_ns = 1000 


Pour vm.swappiness, reportez-vous à la documentation. Chez moi, cela améliore un peu les performances, mais peut-être que chez vous cela n’aura pas les mêmes effets.

Tip #1:
Modifiez le /proc/sys/kernel/sched_time_avg. Suivant les paramètres, chez moi, j’arrive à des performances améliorées

Tip #2:
J’ai été amené a modifier le lancement kernel en mettant l’option « mem=2048M » sur la ligne GRUB_CMDLINE_LINUX_DEFAULT dans le fichier /etc/default/grub (n’oubliez pas le petit « update-grub2″). Notez que chez mon cobaye (pour valider), cela n’a eu aucune influence.

Tip #3:
N’oubliez pas de vous mettre en performance au niveau du « scaling governor » sur vos processeurs:

 echo "performance" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor echo "performance" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor 




Résultat ?

Mon load average est redescendu fortement. Maintenant avec un VLC en activité, un navigateur, mon lecteur de flux RSS, et plein d’autres stuffs, le load average est entre le 0.02 et 0.20. Je suis même tombé à un load average à 0.00 (avec VLC !). Et surtout: le ventilo ne crache plus ses poumons … ouf!

Cependant, le load average monte assez rapidement pour des raisons parfois étranges. Je ne doute pas que des optimisations doivent être encore effectuées. Que ce soit au niveau kernel (recompilations, changements paramètres, …), modifications paramètres sysfs, modifications paramètres procfs, etc…). Je trouve regrettable ce genre de problème pour une distribution comme Ubuntu. Et je suis encore plus étonné que personne ne soit tombé dessus encore aujourd’hui.

Au passage, si vous trouvez de nouvelles optimisations en ajout, faites péter ;-)

Liens divers:

Vos commentaires
2 commentaire(s)

Comments

  • fidjiflorian dit :

    Ok, j’ai le meme probleme…
    Pas de carte ATI ou NVIDIA, c’est donc la derniere solution pour moi.
    apres les:
    echo 100000 > /proc/sys/kernel/sched_min_granularity_ns
    echo 1000 > /proc/sys/kernel/sched_wakeup_granularity_ns
    c’est mieux la charge est a 1.60-1.10, mais c’est pas encore ca!
    au moins il ne freeze plus! (c’est un vieux pc de 512 de ram et 1.7Ghz)
    Si tu as une idee pour mieux l’optimiser je suis preneur.

    Ps dans mon fichier /etc/sysctl.conf je n’ai pas les lignes dont tu parle. Il faut simplement les rajouter pour que ce soit execute a chaque demarage?

    merci!!!

    (desole pour les accents y en a pas sur ce clavier)

  • Benjamin dit :

    Oui, il faut les rajouter s’ils n’existent pas.
    Pour l’instant je n’ai pas d’autres optimisations mais le problème persiste sur la 10.10 , kernel 2.6.35-14

  • Laisser un commentaire

    *