10.12 Sierra Attribuer un ou plusieurs processeurs à une tâche

Prestige100

Membre junior
13 Juin 2015
20
0
30
Bonjour à tous, j'aimerais savoir comment attribuer la charge de tous les coeurs du processeur à un processus sur macOS ... (malheureusement je n'ai pas accès à une machine plus performante donc je dois donc me débrouiller avec un iMac)

Mais mes recherches sont infructueuses... D'où ma venue sur ce forum qui est ma recherche de la dernière chance.

A l'image de : http://www.mediaforma.com/attribuer-un-ou-plusieurs-processeurs-a-une-tache/ mais pour mac OS.

Je ne sais pas si c’est possible depuis l’interface utilisateur mais je n'ai pas trouvé de commande terminal non plus.

Donc si quelqu'un saurait ?
Merci d'avance pour vos réponses :)
 

mat1696

Membre d’élite
15 Avril 2014
1 247
120
Je n'en ai pas connaissance en tous cas... Cela doit être possible avec certains utilitaires ou cmd terminal peut être (mais j'en connais pas)....

En tous cas, normalement, macOS gère assez bien l'attribution des ressources système et détectant ce qui a besoin du plus de coeurs (si l'app est bien codée ça aide) pour fournir la puissance et ralentir les autres apps...
 
  • J’aime
Réactions: Prestige100

Prestige100

Membre junior
13 Juin 2015
20
0
30
Merci de ta réponse :)

J'ai l'impression qu'on ne peut pas faire ce que je demande avec MacOS pourtant ça semble possible via le terminal car l'on peut déjà utiliser la commande nice qui permet de changer le niveau de priorité d'un processus déterminé.

Donc si quelqu'un connait la réponse, je suis preneur !
 

mat1696

Membre d’élite
15 Avril 2014
1 247
120
Merci de ta réponse :)

J'ai l'impression qu'on ne peut pas faire ce que je demande avec MacOS pourtant ça semble possible via le terminal car l'on peut déjà utiliser la commande nice qui permet de changer le niveau de priorité d'un processus déterminé.

Donc si quelqu'un connait la réponse, je suis preneur !
Plus qu'à espérer qu'un connaisseur passe par là Mais en attendant, qu'est ce que tu aimerais faire exactement (affecter quel processus? Pourquoi?...) ?
 
  • J’aime
Réactions: Prestige100

macomaniac

Ouroboros
Club MacG
20 Septembre 2012
71 622
21 488
Forêt de Fontainebleau
Salut Prestige

En ce qui me concerne > je n'ai que quelques considérations « exotériques » à te proposer.

j'aimerais savoir comment attribuer la charge de tous les coeurs du processeur à un processus sur macOS...
Je ne sais pas si c’est possible depuis l’interface utilisateur
Une indication déjà ancienne d'Apple statuait :
Bloc de code:
OS X does not export interfaces that identify processors or control thread placement
—explicit thread to processor binding is not supported. Instead, the kernel manages all
 thread placement.  Applications expect that the scheduler will, under most circumstances,
 run its threads using a good processor placement with respect to cache affinity.
(OS X n'exporte pas d'interface qui identifie les CPU ou contrôle le placement des fils - une liaison impérative de fil à processeur n'est pas supportée. À la place > le kernel gère tous les placements de fils. Les applications s'attendent à ce que l'échéancier (du kernel) - dans la plupart des cas - exécute leurs fils en utilisant un bon placement aux processeurs, en tenant compte des affinités mises en cache.)

=> ce qui revient à dire que le kernel est maître du jeu en ce qui concerne la distribution de fils aux CPU.

----------

Malgré cette restriction > une bibliothèque Thread Affinity API a été mise à la disposition de créateurs d'applications > implémentant -->
Bloc de code:
A mechanism for an application to express thread affinity hints to the scheduler
as an extension to Mach thread policies.
(Un mécanisme permettant à une application l'expression de suggestions d'affinités fil / processeurs à l'échéancier du kernel - en tant qu'extension aux principes du kernel relatifs au traitement des fils.)

----------

Mais s'il ne s'agit pas d'une implémentation interne d'application > mais d'une préférence a posteriori d'utilisateur > alors j'ai l'impression que les "suggestions prioritaires" qui peuvent être passées à l'«échéancier» (task_scheduler) du kernel relèvent des commandes nice & renice (comme tu l'as évoqué) - nice pour lancer un processus avec telle priorité suggérée > renice pour modifier le statut d'un processus déjà démarré par une suggestion de priorité.

La civilité (niceness) d'un processus consistant dans son effacement devant les autres (valeurs supérieure à 0) > l'incivilité (meanness) d'un processus consistant à se pousser en avant en priorité dans l'emploi du temps des tâches du kernel (valeurs inférieures à 0).

De ce point de vue > à supposer le PID du processus lancé connu (commande TOP ou «Moniteur d'activité») = 485 (par exemple) > je peux par la commande :
Bloc de code:
ps -lp 485
connaître la "valeur de civilité" du processus ciblé (par exemple 18 - politesse équivalant à une extrême urbanité) > et ayant l'intention d'exercer une incivilité maximale > je peux modifier la priorité de ce processus par une commande du type :
Bloc de code:
sudo renice -n -20 -p 485
- un lancement initial en root du processus du type :
Bloc de code:
sudo nice -n -20 [PATH][EXECUTABLE]
étant peut-être susceptible d'une plus grande "force de persuasion" pour l'échéancier du kernel.
 
Dernière édition:
  • J’aime
Réactions: Prestige100

Prestige100

Membre junior
13 Juin 2015
20
0
30
Un très grand merci Mat1696 et évidemment Macomaniac, ça me permet de me confirmer ce que je pensais.

Je vais voir ce que je peux faire :)