Comment la désactivation d'un noyau affecte-t-elle les processus en cours d'exécution?

StackOverflow https://stackoverflow.com/questions/306705

  •  08-07-2019
  •  | 
  •  

Question

J'ai cette application installée sur mon Macbook Pro qui me permet de désactiver un noyau sur mon processeur. Cela m’a amené à me demander: comment la désactivation d’un noyau affecte-t-elle les processus en cours?

Je suis également intéressé par le fait que la désactivation d’un noyau affecte les éléments suivants

  • Durée de vie de la batterie
  • Génération de chaleur
  • Augmentation des performances lorsque le processeur utilise normalement moins de 40% des deux cœurs?
Était-ce utile?

La solution

Comment la désactivation d'un noyau affecte-t-elle les processus en cours?

Ce n’est pas le cas, à moins que le programme que vous utilisez soit extrêmement mal écrit. Le planificateur de système d'exploitation sera averti que le processeur n'est plus disponible et arrêtera simplement les processus de planification dans ce processeur. Mettre un processus à partir de " en cours d'exécution " dans " en attente " microsecondes, le commutateur apparaîtra instantanément. Le processus continuera à s’exécuter sur l’autre cœur dès qu’il sera disponible et que la priorité le permettra.

Comment la désactivation d'un noyau affecte-t-elle la vie de la batterie

Cela aura un effet mesurable mais non significatif - dans certains cas, il augmentera. En d’autres termes, vous ne devriez pas voir diminuer la consommation d’énergie de plus de 5%, car les processeurs modernes utilisent déjà des techniques d’économie d’énergie agressives. Les processeurs n'utilisent pas de boucles inactives - ils s'arrêtent lorsqu'il n'y a pas de processus prêt à être exécuté. Si la charge globale du système est faible, le système d'exploitation ralentit les processeurs plutôt que de les arrêter, ce qui a un effet d'économie similaire.

Dans certains scénarios d'utilisation très spécifiques, la consommation d'énergie augmentera en raison de la façon dont le système d'exploitation utilise les processeurs (plus de commutation de tâches, ce qui entraîne une baisse des performances et une utilisation accrue du processeur).

Comment la désactivation d'un noyau affecte-t-elle la production de chaleur

Comme avec le pouvoir, il sera mesurable, mais non perceptible sans une mesure minutieuse. Encore une fois, le processeur dispose déjà d’un contrôle de puissance exceptionnel et modère les horloges, la tension et son temps d’inactivité en fonction de la charge, quel que soit le nombre de processeurs actifs.

Comment la désactivation d'un coeur affecte-t-elle les performances (en supposant que le processeur utilise moins de 40% des deux cœurs)

Les processus sont très "pointus". Lorsque vous appuyez sur une touche ou que vous déplacez la souris, des dizaines de processus d’attente sont lancés et vous souhaitez rester à 100% pendant une très courte période.

En obligeant le processeur à les exécuter un par un au lieu du parallèle, la moyenne d’utilisation n’est que de 80%, mais elle sera lente, non seulement à cause de nombreux processus d’attente, mais aussi du fait du changement de tâche. - chaque fois qu'un processus est modifié (en raison de sa priorité, de sa fin, de son interruption, etc.), le processeur charge la tâche du système d'exploitation, qui exécute ensuite le planificateur, qui charge ensuite la tâche suivante.

Vous doublez la charge de commutation de tâches sur un processeur, ce qui signifie que vous exécutez le code du système d'exploitation (planificateur, gestionnaire d'événements, etc.) beaucoup plus fréquemment pour répondre à la demande.

Cela représente un gaspillage et la diminution des performances peut en réalité être perceptible. Ce travail supplémentaire ne devrait pas nécessairement être effectué si le système d'exploitation avait la possibilité d'exécuter les deux processeurs à 40% de leur vitesse normale, par exemple.

-Adam

Autres conseils

Question intéressante. Cela devient quelque peu impliqué. Vous n’êtes pas très précis sur ce que vous entendez par "application qui désactive un coeur". et exactement ce que cela fait, mais je suppose de votre question et du commentaire à un autre que cette application désactive le noyau de façon conviviale pour le noyau du système d’exploitation.

Ainsi, normalement, lorsque OS X est en cours d'exécution, il existe de nombreux threads / processus possibles (je dirai des threads à partir de maintenant) qui sont en concurrence pour les ressources de processeur dans le planificateur. Lorsque les deux cœurs de votre processeur Core 2 Duo sont activés, le noyau peut exécuter deux threads simultanément, ce qui permet de faire pivoter les deux cœurs à travers tout ce qui doit être exécuté. Lorsque vous désactivez l'un des cœurs, le noyau va revenir à la répartition du travail sur un seul cœur. Bien sûr, cela ne modifie pas la quantité de travail à effectuer ... cela réduit simplement de moitié vos performances d'exécution potentielles .

Vous n’allez peut-être pas penser que c’est important si vos cœurs étaient occupés à moins de 50% en moyenne, n’est-ce pas? Eh bien, cela compte dans de nombreuses circonstances et la raison est la latence pour exécuter des tâches. S'il n'y a qu'un seul thread exécutable à la fois, le second noyau est toujours inutile, même s'il est toujours activé. Cependant, dans toute situation où deux ou plusieurs threads deviennent exécutables .... il est possible de tirer parti des deux cœurs et si l’un d’eux est désactivé, le travail à effectuer sur le second thread ne peut même pas démarrer avant le précédent thread. s'exécute pendant un certain temps puis est échangé. En supposant que deux threads avec un travail égal soient exécutés, il est clair que le second thread mettra deux fois plus de temps à parvenir à son terme que l’affaire dual core. Vous ne remarquerez peut-être pas cela, selon le travail dont nous parlons ici, mais il est clair que la latence (réactivité) au moins en théorie va être réduite de moitié. De toute évidence, à mesure que le système se remplira de plus en plus de threads devant fonctionner ou de plus en plus chargés, il deviendra de plus en plus évident que tout fonctionne à mi-vitesse.

Tout cela était plutôt simple.

Alors, qu'est-ce que cela signifie par rapport à la dissipation thermique et à la durée de vie de la batterie?

Ne vous avancez pas ici ou pas ... parce que, en fait, même si vous êtes enclin à penser que vous tirez deux fois moins de puissance, le travail prend en fait deux fois plus de temps.

La conclusion est que la désactivation d’un cœur n’aura au final que très peu d’incidence sur la durée de vie de la batterie, car le système d’exploitation et le processeur travaillent déjà ensemble pour réduire les horloges et arrêter efficacement un cœur qui n’est pas nécessaire. Autrement dit, il n’ya vraiment pas ou peu de frais généraux à avoir un noyau dans l’attente prêt à être utilisé lorsque vous en avez besoin. En fait, un système peut avoir une batterie plus courte avec un seul cœur, car tous les autres périphériques de la carte mère doivent rester actifs plus longtemps, car le processeur met plus de temps à faire le travail nécessaire.

En ce qui concerne la dissipation de chaleur, l’effet est similaire. Il est clair que la dissipation thermique maximale en WATTS est considérablement réduite avec un seul noyau ... car un seul des deux noyaux est réellement actif. Cependant, encore une fois, ce noyau fonctionnera plus longtemps et la production d’énergie totale nette (JOULES ou WATT SECONDS) sera approximativement la même ... c’est pourquoi la durée de vie de votre batterie n’est en grande partie pas affectée dans son boîtier.

Je présumerai que lorsque vous désactivez " En gros, vous dites vraiment à OS X de ne plus traiter en parallèle.

Je suppose également que le système d'exploitation est suffisamment intelligent pour déplacer les processus après les avoir désactivés:)

Je ne pense toutefois pas que vous constateriez une nette amélioration de la consommation d'énergie ou de la durée de vie de la batterie, mais c'est une hypothèse: le processeur est toujours alimenté, mais une partie seulement n'est pas utilisée.

De plus, et ceci n’est qu’une question théorique, l’exécution d’un seul cœur ne peut-elle pas augmenter les chances d’épuisement de la CPU, à moins de veiller à ce que les propriétés thermiques soient constantes? Juste une pensée.

Cela n’affectera pas vraiment vos processus en cours. Le planificateur effacera le processus en cours d'exécution du cœur et ne lui dédiera aucun autre processus.
Et maintenant, votre planificateur n'a plus qu'à trouver une belle stratégie pour trouver une juste répartition des processus entre le noyau restant.

  1. batterie: marginal
  2. heat-diff: négligeable ... avec une charge de 2x40%
  3. inexistant ou légèrement pire
    • pire car maintenant tous les processus doivent être basculés sur le seul et unique noyau
    • avant qu'un processus (et son contexte!) puisse rester tout le temps sur un noyau
    • donc cela va ajouter des E / S ... et votre seul noyau doit attendre (vidage du TLB et du tableau de page)

Je ne connais pas la consommation d'énergie, mais je m'attends à ce que vous épargniez de la marge. Cela dépend du pourcentage d’énergie utilisé par le CPU dans le MBP.

En ce qui concerne l’impact sur la puissance de traitement brute, cela dépend de la nature des applications que vous exécutez. La plupart des applications ne sont pas conçues pour utiliser plusieurs cœurs, contrairement à la plupart des applications haut de gamme. Ainsi, si vous utilisez Photoshop ou un logiciel de montage vidéo, vous remarquerez une réduction significative des performances de pointe dans les cas où le goulot d'étranglement des performances est lié au processeur (et non à une entrée / sortie réseau ou à une entrée / sortie sur disque).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top