> > Bonjour à tous,
> >
> > une question bête : j'ai un serveur Bi Processeur (Bi Ppro 200), et
> > j'aimerais que certaines taches s'effectuent sur un processeur, et
> > d'autre sur l'autre, pour repartir la charge du système. Qu'en
pensez-vous ?
>
> Je ne pense pas que ça soit plus efficace que de laisser faire le
> scheduler - surtout celui du 2.6 qui est assez efficace.
Je ne suis pas tout à fait du même avis : Dans le cas d'un process
faisant des calculs en continus et assez petit pour tenir dans la cache
d'un CPU, on doit pouvoir gagner quelques pourcentages de vitesse en le
faisant tourner tout seul sur un seul CPU. C'est a mon vis spécialment
intéressant pour les processeurs qui ont un mécanisme de synchronisation
de cache pas très optimisé. Je pense notament aux Athlons montés sur des
CM à chipsets MP et non MPX.
Cela peut être aussi intéressant si on veut limiter l'augmentation
de température d'un des CPU. Sur mon bi-athlon par exemple, le processeur
situé le plus près du centre de la machine est 5 degrès plus chaud que
celui situés sur le bord, ce qui représente 10% d'écart quand même... Dans
le même registre des observations, lorsque je lance un calcul important et
suffisament long, je vois nettement que le process passe successivement
d'un processeur à l'autre au bout d'une durée variable assez longue (une
trentaine de seconde par exemple).
Il existe un patch du kernel qui a été developpé afin de régler
l'affinité (c'est le terme employé pour ce problème là) d'un process sur
l'un ou l'autre des CPU :
http://linux-diag.sourceforge.net/Cpu_affinity.html . Il se présente sous
la forme d'un module du kernel, avec qui on dialogue dans le user-space
via un programme. Pour des raisons évidentes, il faut avoir les droits
root pour utiliser ce programme.
Je l'ai essayé l'année dernière, et il marche plutôt bien. D'après
le site web, il est maintenant intégré dans le kernel 2.5 et a été rétro
porté dans le le 2.4.
Olivier