Je n'ai pas trouvé la réponse en cherchant sur Google. Je me pose la question car je n'arrive pas à comprendre ce que je vois sur mon Macbook Air M1 lorsque je lui donne une charge importante de travaux BOINC sur batterie ou branché. Les captures d'écran montrent que MacOS attribue les quatre tâches aux mêmes quatre cœurs, quelle que soit la source d'alimentation ; je m'attendais naïvement à une différence. Quoi que j'essaie, BOINC ne fonctionne que sur les quatre cœurs de droite, jamais sur les quatre de gauche, même lorsque je lui donne huit tâches. Mais que sont les MenuMeters gauche et droit, performance ou efficacité ? BOINC fait-il le choix ?
Réponses
Trop de publicités?En général, le développeur du logiciel peut choisir (ou du moins indiquer fortement au système d'exploitation) le type de noyau à utiliser. Le développeur fixe une attente en matière de qualité de service et le système d'exploitation s'y conforme généralement.
En plus des attentes du développeur en matière de qualité de service, le système d'exploitation surveille la charge de travail de l'application sur une période donnée, ainsi que la charge de travail de l'ensemble du système sur une période donnée, et utilise des heuristiques pour prendre une décision globale quant à la planification d'un thread spécifique sur un cœur P (performance) ou E (énergie).
Notez que les applications et les processus d'arrière-plan sont traités différemment à cet égard. Par exemple, une application GUI peut être traitée différemment selon que sa ou ses fenêtres sont au premier plan ou en arrière-plan. Pour les processus d'arrière-plan (comme les calculs BOINC), cela ne s'applique pas.
Vous pouvez lire un aperçu relativement peu technique de son fonctionnement ici :
https://developer.apple.com/news/?id=vk3m204o
Et un peu plus de détails (mais toujours des informations générales) sur les classes de QoS ici :
Notez qu'il est souvent possible pour vous, en tant qu'utilisateur, de remplacer la classe QoS définie par le développeur. Obtenez le PID (process ID) de la tâche BOINC que vous souhaitez affecter (en utilisant par exemple Activity Monitor) - et utilisez ensuite la fonction taskpolicy
pour définir une nouvelle classe de qualité de service.
Par la charge que vous avez fixée.
Plus il y a de programmes ou plus il y a de chances qu'un algorithme examine la charge du processeur en fonction des activités en cours, ce qui fait intervenir plus ou moins de cœurs selon les besoins pour atteindre un niveau de performance donné.
La plupart des processeurs atteignent leur maximum lorsqu'ils sont alimentés par le secteur et sont bridés lorsqu'ils sont sur batterie pour une plus grande longévité.