Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Retourner aux forums || Retourner au forum Linux.general

Linux.general : SMP & lancement de processus

Posté par Lol Zimmerli (Jabber id, page perso, ) le 19 décembre 2005
Hello,

je me demandais s'il était possible, sur une machine avec 2 processeurs réels (avec en plus l'hyperthreading) de lancer une application afin qu'elle ne puisse se servir que d'un seul processeur. Je m'explique: je voudrais par exemple que apache ne puisse se servir que du #1 (ou #0 & #1 avec HT) et que mon gestionnaire de base de données ne puisse se servir que du #2 (ou #2 & #3).

Je ne trouve rien dans les configuration de ces applications qui puisse permettre une telle spécification. De plus, les how-to traitant du SMP semblent tous dater du kernel 2.2 au mieux. Est-ce réelement impossible (car le noyau règne là en maître) où y'a-t-il des solutions, plus ou moins faciles?

merchix!

--
En fait, Bernardo n'était pas muet; c'est Zorro qui était sourd.
> Lire le message (5 commentaires, moyenne: 3).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

"cpu affinity" et éventuellement "cpusets"...

Posté par tgl () le 20/12/2005 à 00:24. (lien). Évalué à 4.

...sont deux mots clefs qui devraient te mettre sur la voie. Je m'avancerai pas trop parceque, faute de SMP ici, j'y connais pas grand chose, m'enfin bon ça te donne toujours qqch à googler. Tu peux jeter un oeil sur /usr/src/linux/Documentation/cpusets.txt aussi.

Ah ouais, et puis enfin, tu dois pouvoir te servir de l'utilitaire "schedtool" pour changer le "masque d'affinité" de tes processus, et puis pourquoi aussi pas de "schedtoold" pour automatiser un peu tout ça (jamais testé pour cet usage ceci dit) :
http://freequaos.host.sk/schedtool/
http://www.darav.de/schedtoold.html

hum ...

Posté par Moun's (page perso, ) le 20/12/2005 à 01:12. (lien). Évalué à 4.

Le SMP impose que les processeurs ne partagent pas grand chose. une des choses qu'ils ne partagent pas est le code en cours d'execution.

Reformulé, il n'y a qu'un code en cours d'execution par processeur, et il ne peut y avoir qu'un seul processeur par bout de code.

Donc, la réponse est cela ne peut pas etre autrement.

Maintenant par bout de code, cela consiste en "thread"/"processus"/"programme"/"tache" selon la granularité des processus.

si tu parallelise un programme sur 2 processeurs, tu auras necessairement besoin d'IPC assez complexe. donc, tres peu de programme, le font. donc, ne t'inquietes aucunement ( sauf si plein de threads ou plein de fils ).

  • [^]Re: hum ...

    Posté par welty () le 20/12/2005 à 13:39. (lien). Évalué à 2.

    je pense que apache et les gestionnaires de base de donnees sont tout de meme multithreades, donc la question se pose !

sched_setaffinity

Posté par welty () le 20/12/2005 à 13:44. (lien). Évalué à 2.

Bonjour,

A ma connaissance, il n'existe pas d'outil standard pour modifier l'affinite des processus sur les processeurs. (mais outil existant cite plus haut).

Sinon, petit code en C avec sched_setaffinity. Tu donnes un masque des processeurs sur lesquels tu autorises ton processus peut s'executer et le scheduler fait le reste.

Dans le cas de multiprocesseurs, l'hyperthreading peut apporter un baisse de performance, verifie que ce ne soit pas le cas : Linux les voit comme des processeurs a part entiere, et donc peut executer deux taches sur les deux premiers processeurs (meme core) alors que rien ne tourne sur les deux autres (deuxieme core). Mais si effectivement, tu affectes des processeurs a tes taches a la main, c'est ok.

Welty

  • [^]Re: sched_setaffinity

    Posté par Lol Zimmerli (Jabber id, page perso, ) le 20/12/2005 à 15:48. (lien). Évalué à 3.

    Oui, j'ai vu ça et taskset, mais apparemment ça ne passe qu'avec un noyau 2.6, non?

    Le seul truc que j'ai trouvé et qui passe avec le 2.4 c'est modifier les assignations CPU/IRQ (/proc/irq/*/smp_affinity), mais irqbalance le fait certainement mieux que moi à la main.

    --
    En fait, Bernardo n'était pas muet; c'est Zorro qui était sourd.

Revenir en haut de page || Retourner aux forums || Retourner au forum Linux.general