web-dev-qa-db-fra.com

Comment attribuer différents cœurs de processeur à différents processus?

J'utilise Ubuntu Server Edition 11.10 et deux programmes très gourmands en ressources processeur s'exécutent sur le même noyau. Aucun de ces processus n'a été programmé pour le traitement multicœur. Existe-t-il un moyen de dire au processus A de s'exécuter sur le Core 1 et au processus B de l'exécuter sur le Core 2?

7
Otoris

La réponse acceptée peut être un bon conseil, mais ce n’est certainement pas une réponse à votre question. Votre question ne m'indique pas non plus que vous n'êtes pas qualifié pour entendre la réponse. En fait, cela semble être un bon exemple de situation dans laquelle vous voudriez indiquer spécifiquement quels processeurs doivent faire quoi.

Pour en venir au fait, ce que vous voulez, ce sont des ensembles de processeurs. Ils sont supportés dans la version 11.10 d’Ubuntu, car elle utilise un noyau Linux assez récent. Je crois que Linux 2.6 est requis.

Vous pouvez lire la page de manuel de cpuset ici: http://www.kernel.org/doc/man-pages/online/pages/man7/cpuset.7.html

Voici une autre page de lecture générale: http://www.bullopensource.org/cpuset/

Linux peut être "génial" pour décider comment allouer le temps processeur, mais ce n'est pas parfait.

6
GoldenNewby

J'espère que cela ne vous paraît pas impoli, mais si vous posez cette question, vous ne devriez même pas y penser. C’est l’une de ces choses que Linux est vraiment capable de résoudre seul. Si vous agissiez ainsi, cela aurait probablement un impact très négatif sur les performances. Même si le programme n'est pas conçu pour utiliser plus de processeurs, Linux les déplacera dans différents cœurs selon les besoins. Le programme ne le remarquera pas.

Vous voudrez peut-être leur attribuer les deux valeurs Nice basses avec la commande Nice pour leur attribuer des priorités plus élevées.

2