Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Forcer l'utilisation d'un seul processeur
Envoyé par: Fanch

Salut tout le monde,

j'ai un petit soucis que je n'arrive pas à résoudre :

On a une appli un peu (beaucoup) vieillotte (antédiluvienne) qui fait du multi-threading un peu pourri.

Bon, du coup, on a pu constater par divers tests sur divers environnement qu'elle était plus lente sur des machines multi-processeurs que sur des machine mono-processeurs. Pour moi, c'est pas forcément traumatique sauf que bon, faut comprendre pourquoi ...

Le soucis c'est que toutes nos conf ne sont pas rigoureusement comparables et l'on voudrait forcer l'appli à ne s'exécuter que sur une seule CPU au lieu de la laisser utiliser les 2 comme elle le fait actuellement ; sauf que là je sais pas faire ça ... ?-(
... et je trouve rien sous google ... ?-( ?-(
... et ça me saoule parce que sous Tru64 c'est avec une commande "runon 1 appli" qu'on solde l'affaire. :,(

une idée ?

------- <br />
La meilleure façon de prédire le futur, c'est de l'inventer ~ Alan Kay

Poste le Friday 24 August 2007 09:33:37
Répondre     Citer    
Re: Forcer l'utilisation d'un seul processeur
Envoyé par: oudoubah

Pour ça, il faut utiliser l'architecture NUMA (Non Uniform Memory Access).

Pour savoir combien de cpu et noeuds mémoire tu as :
egrep -e "Node|present" /proc/zoneinfo

Parmis les commandes utiles, tu as numactl.

Tu dois commencer par créer un cpuset:
mkdir /dev/cpuset
mount -t cpuset none /dev/cpuset

Par défaut, il y a un cpuset de créé (cpuset "/" ) qui contient l'ensemble des cpus (fichier cpus) et la mémoire (fichier mems), et l'ensemble des tâches qui lui sont affectées (fichier tasks).

Pour vérifier l'attachement d'un process à un cpuset, tu peux faire un cat /proc/PID/cpuset

Pour construire un cpuset utilisant le premier processeur et tous les noeuds de mémoire:
mkdir /dev/cpuset/uc1
echo 0 > /dev/cpuset/uc1/cpus
echo 0-1 > /dev/cpuset/uc1/mems

Pour associer une tâche à un cpuset : "/bin/echo PID >> /dev/cpuset/uc1/tasks"
Les tâches enfants seront associées au cpuset.

Je n'ai pas vraiment eu le loisir de tester tout ceci (c'est tiré de "/proc et /sys de chez O'reilly).

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Friday 24 August 2007 11:42:15
Répondre     Citer    
Re: Forcer l'utilisation d'un seul processeur
Envoyé par: Fanch

je m'en vais de ce pas essayer ça ! merci !! :-)

------- <br />
La meilleure façon de prédire le futur, c'est de l'inventer ~ Alan Kay

Poste le Friday 24 August 2007 12:52:40
Répondre     Citer    
Re: Forcer l'utilisation d'un seul processeur
Envoyé par: oudoubah

Quand tu auras réussi ou trouvé, tu pourras poster ce que tu as fais? (je ne suis pas en smp à la maison, donc je ne peux pas tester, et ça peut être sympa d'avoir un retour)

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Saturday 25 August 2007 21:13:37
Répondre     Citer    
Re: Forcer l'utilisation d'un seul processeur
Envoyé par: Fanch

Bon, le kernel de nos serveurs n'est pas "Numa policy aware" ; et pourtant tout ce qui est numa est installé par défaut (sans qu'on puisse choisir de ne pas le mettre).
Je vais pas citer la distro qui fait ça ; mais je vais quand même dire qu'elle commence sérieusement à me les hacher menues et que franchement pour faire des coups pareils faut pas en avoir lourd sous le chapeau !!! @#%!

Bon, je négocie du temps pour recompiler un kernel et je te tiens au jus !!! :-)

------- <br />
La meilleure façon de prédire le futur, c'est de l'inventer ~ Alan Kay

Poste le Monday 27 August 2007 09:19:35
Répondre     Citer    
Re: Forcer l'utilisation d'un seul processeur
Envoyé par: Fanch

BORDEL ! @#%! @#%! @#%!

je suis sur une architecture un peu spéciale et le bootloader n'est pas ce qu'il y a de plus classique. Du coup après avoir recompilé le kernel et l'avoir installé, y'a plus la moindre image qui boot (c'est trop fort ...).
Bref, j'ai pas le droit de passer plus de temps dessus au bureau du coup je vais tester ça @home parce que ça m'intéresse bien, que je peux en avoir besoin et qu'au moins j'ai une VRAIE distro (pas une merde qui commence à franchement ressembler à une fenêtre bien fermée sur un serveur de merde qui coûte 4 fois mon pc et qui se traine lamentablement).

brrrr, je suis de mauvais poil dès le matin angry smiley)

------- <br />
La meilleure façon de prédire le futur, c'est de l'inventer ~ Alan Kay

Poste le Thursday 30 August 2007 08:29:40
Répondre     Citer    
Re: Forcer l'utilisation d'un seul processeur
Envoyé par: Raph__

Salut Fanch,

Tu peux aussi utiliser vmware pour selectionner tes unités CPU.
A tester peut-être...

A Ciao.

Poste le Thursday 30 August 2007 14:44:16
Répondre     Citer    
Re: Forcer l'utilisation d'un seul processeur
Envoyé par: Fanch

Alors petit bilan :
1/ Ca n'a jamais voulu fonctionner @home ; faut dire que ma cpu est un dual core et pas réellement 2 cpu. Du coup je me dis que c'est peut-être lié ?-( Enfin, en gros, je n'ai jamais vu le filesystem cpuset (malgré le support dans le kernel et tout et tout).

2/ Un collègue m'a prêté un bi-proc qui avait déjà un kernel supportant le filesystem cpuset. Et là c'est chico bonheur, ça marche du tonnerre de Zeus comme t'as dis. Je ne comprends toutefois pas du tout pourquoi il y a aussi peu de doc à ce sujet sur le net.
Bref, en gros ce que je faisais c'était de balancer un shell dans la task et de lancer mes tests depuis ce shell (c'est probablement pas ce qu'il y a de plus malin ; mais c'est assurément ce qu'il y a de plus rapidement mis en place).


@Raph__ : oh que non, pas de vmware ! Autant je trouve ça (très) pratique pour maintenir des environnements de dev et d'intégration, autant j'irais pas mettre ça sur un serveur d'acquisition temps réel en prod (enfin, bon, c'est pas moi qui décide ça). Et puis quand on a une vraie solution performante, ce serait dommage d'utiliser un workaround qui coute un paquet de licences inutiles.

------- <br />
La meilleure façon de prédire le futur, c'est de l'inventer ~ Alan Kay

Poste le Monday 10 September 2007 09:22:33
Répondre     Citer    
Re: Forcer l'utilisation d'un seul processeur
Envoyé par: oudoubah

Citation
Fanch
Alors petit bilan :
1/ Ca n'a jamais voulu fonctionner @home ; faut
dire que ma cpu est un dual core et pas réellement
2 cpu. Du coup je me dis que c'est peut-être lié
Enfin, en gros, je n'ai jamais vu le filesystem
cpuset (malgré le support dans le kernel et tout
et tout).
u

Comme tu l'as dit, ce n'est qu'un seul processeur. Autant il est "facile" de forcer l'utilisation d'un processeur ou d'un autre, autant je ne sais pas si les processeurs multi-coeurs ont des instructions pour forcer l'utilisation d'un certain coeur.

Citation
Fanch
2/ Un collègue m'a prêté un bi-proc qui avait déjà
un kernel supportant le filesystem cpuset. Et là
c'est chico bonheur, ça marche du tonnerre de Zeus
comme t'as dis. Je ne comprends toutefois pas du
tout pourquoi il y a aussi peu de doc à ce sujet
sur le net.

Les cas où on a besoin de dédier un processus à une tache ou un ensemble de taches sont relativement peu nombreux. Généralement, on a de meilleures performances avec un système SMP.
Cela permet de faire fonctionner une appli qui supporte mal le multithreads (et on peut garder le reste du système en multithreads), ou de faire fonctionner ton système sur 1 proc et d'avoir une grosse unité de calcul qui ne sera utilisé que pour une appli.

Citation
Fanch
@Raph__ : oh que non, pas de vmware ! Autant je
trouve ça (très) pratique pour maintenir des
environnements de dev et d'intégration, autant
j'irais pas mettre ça sur un serveur d'acquisition
temps réel en prod (enfin, bon, c'est pas moi qui
décide ça). Et puis quand on a une vraie solution
performante, ce serait dommage d'utiliser un
workaround qui coute un paquet de licences
inutiles.

vmware peut être pratique, mais je n'aime pas du tout pour de la prod, pour des questions de performances.
Ceci dit, sur une architecture de test, c'est très utile.

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Monday 10 September 2007 13:00:12
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Forcer l'utilisation d'un seul processeur
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons