9 votes

Comment exécuter une commande terminale sur les cœurs économes en énergie de la puce M1 ?

Je veux exécuter un processus nodejs sur E cœurs, mais lorsque je l'exécute, je vois qu'il utilise P cœurs même s'il y a une tâche de 0,3 seconde.

13voto

Jose Chavez Points 645

Ce que vous voulez faire est techniquement connu comme la mise en place d'une "affinité de CPU", c'est-à-dire laisser le planificateur du système d'exploitation savoir sur quel noyau de CPU un processus devrait être autorisé à fonctionner.

Pour autant que je sache, MacOS n'est pas livré avec une interface graphique ou un programme de ligne de commande pour définir directement l'affinité du processeur. Ceci est différent de certains autres systèmes d'exploitation, comme par exemple Linux, qui dispose d'une simple interface graphique. taskset à cette fin.

Toutefois, MacOS dispose d'un outil en ligne de commande permettant de définir, entre autres, les politiques de programmation, notamment la qualité de service (QoS) souhaitée. Cela signifie que vous pouvez indiquer que vous préférez fonctionner sur les cœurs les plus économes en énergie en lançant cet outil en ligne de commande :

taskpolicy -c background mycommand

Apple fournit une API aux programmeurs qui leur permet de définir directement l'affinité du processeur.

Comme vous indiquez vouloir définir l'affinité du CPU pour divers processus nodejs, il semble probable que vous développiez un logiciel ou que vous exécutiez un logiciel open-source dont vous pouvez modifier le code source. Dans ce cas, vous pouvez définir l'affinité du CPU au moyen de la fonction thread_policy_set() fonction.

Par exemple, si vous avez un thread Mach nommé filetage que vous voulez programmer uniquement sur le noyau #7, vous pouvez le faire comme ceci :

thread_affinity_policy_data_t policy = { 7 };
thread_policy_set(thread, THREAD_AFFINITY_POLICY, (thread_policy_t)&policy, 1);

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X