Pourquoi mon processeur ne fonctionne-t-il pas à son potentiel maximum même lorsque mon application (qui utilise les ressources du processeur) est à la traîne?


30

Pourquoi mon processeur ne fonctionne-t-il jamais au maximum, même lorsque mon application, qui consomme 40% du processeur (mais 30 à 40% du processeur reste inactif), est en retard?

Cela signifie t-il:

  1. Il existe un moyen de forcer le CPU à fonctionner à 100%
  2. Les processeurs sont fabriqués de cette façon et la seule chose que je puisse faire est d'acheter du nouveau matériel.
  3. La limitation réside dans l'application et le décalage ne s'améliorera pas même avec un meilleur processeur. (En supposant que l'application est parfaite, ce que je demande, c'est si le logiciel fonctionne de cette façon?)
  4. Autre chose.

4
Je comprends ce que l'OP veut dire, je méprise comment quand un antivirus ou une mise à jour de Windows est en cours d'exécution, il bloque complètement mon système, maximisant ce seul cœur ... laissant les autres faire quoi? Je reste assis pendant 12 minutes jusqu'à ce que je puisse retourner au travail.

10
Toute application qui exploite au maximum une des ressources partagées d'un ordinateur (processeur, stockage, mémoire ou réseau) peut ralentir l'ensemble du système, malgré le fait que les ressources partagées restantes ont une capacité inutilisée.
Je dis Rétablir Monica

78
Je programme depuis 25 ans. Et je peux vous assurer - ce n'est pas un complot. Il est rare de trouver des applications où le CPU est le goulot d'étranglement, la plupart du temps, les applications attendent d'autres choses comme le disque dur, la RAM ou le réseau.
Contango

10
Supposons que vous effectuez un travail de calcul - faites vos impôts, disons. Si vous ne faites aucun travail pendant que vous attendez que vos formulaires fiscaux arrivent par la poste, vous ne ferez aucun travail pendant très longtemps. Les applications laggy sont souvent mal écrites; ils bloquent le thread d'interface utilisateur sur les opérations à latence élevée comme le disque ou les E / S réseau qui n'ont rien à voir avec le CPU, et donc le CPU est inactif et l'application ne répond pas. Obtenir un processeur plus rapide n'aide pas; qui vous permet de bloquer plus rapidement les opérations à latence élevée .
Eric Lippert

3
@TwistyImpersonator: C'est une bonne analogie pour les programmes multithread à fort conflit. Nous voyons parfois qu'un programme multithread s'exécutera plus lentement sur un processeur plus rapide car le processeur obtient plus de threads dans un état bloqué plus rapidement qu'un processeur plus lent. Si chaque conducteur de New York recevait une voiture 10 fois plus rapide demain, les temps de trajet ne s'amélioreraient pas . Ils allaient empirer.
Eric Lippert

Réponses:


94

Vous exécutez probablement des applications monothread qui ne peuvent maximiser qu'un seul cœur de processeur. Étant donné que 100% d'un cœur est inférieur à 100% de la capacité du processeur multicœur, l'utilisation totale du processeur n'atteint pas 100%.

Vous pouvez le confirmer en affichant l'utilisation de base individuelle dans le Gestionnaire des tâches. Recherchez les cœurs uniques qui approchent de l'utilisation maximale.


24
En raison de la commutation, vous ne verrez que l'utilisation distribuée qui résume l'utilisation d'un seul cœur. Fondamentalement, l'application utilise exactement un cœur, mais elle sautille entre les cœurs, donc chacun fait en moyenne 1 / n.
Aganju

62
Je dirais également qu'il est possible que le processeur ne soit pas réellement le goulot d'étranglement.

16
Je me souviens vaguement que Dwarf Fortress avait étranglé un noyau à 100%, alors il a commencé à bifurquer d'autres bits dans un deuxième thread, conduisant au thread "principal" verrouillé à 100% et au thread "d'arrière-plan" oscillant entre 20 et 60%. Sur un quad core, c'est ... 30-40%.
Mooing Duck

3
N'oubliez pas le mode Turbo sur les CPU. Taskmanager ne prend pas cela en compte lors du calcul du pourcentage de charge. Sur mon i5-4570S, je vois souvent une charge d'environ 30%. C'est un cœur (25%) avec 2,9 GHz standard turbo à 3,4 GHz. 25 * 3,4 / 2,9 est près de 30%. Avec un écart plus élevé entre la fréquence normale et la fréquence Turbo, nous pouvons augmenter.
Sunzi

7
@AytAyt - Je voudrais aller plus loin et dire que ce n'est pas seulement possible, c'est presque certain . À moins que l'application de l'OP ne fasse de la compression des nombres (ou utilise des verrous rotatifs partout), il est en fait assez difficile de charger complètement un CPU, même avec un programme multithread. N'importe quel disque ou réseau d'E / S laissera des cycles inactifs, et étant donné la mention par l'OP d'une application "en retard", il semble probable qu'il y ait une communication réseau en jeu.
2017

49

Vous n'avez pas spécifié votre système d'exploitation. La réponse sera donc commune comme.

Les demandes peuvent être limitées pour diverses raisons. Le goulot d'étranglement peut être dans:

  • CPU
    • faible vitesse
    • applications à thread unique / faible (pas capable d'utiliser tous les cœurs / threads)
  • E / S
    • débit de disque
    • latence du disque
    • débit réseau
    • la latence du réseau
  • Mémoire
    • capacité
    • throuthput
    • latence
    • cache insuffisant
    • localité (NUMA)
    • échange

Et il y a plus de raisons, qui ne sont pas si courantes.

Jetez donc un œil à vos ressources système et essayez d'analyser votre système pour d'autres goulots d'étranglement, que la charge totale du processeur.


9
En outre: la carte vidéo a un GPU, des E / S et une mémoire séparés, l'un de ceux-ci pourrait également être le problème.
Mooing Duck

2
@MooingDuck True, mais ce ne serait généralement un problème que si l'application en question utilise réellement le GPU (c'est-à-dire un jeu 3D ou une application CUDA / OpenCL ou quelque chose de ce genre.)
reirab

13

En général, lorsque les gens disent que leur ordinateur est lent, je parle de poussière. En tant qu'ancien technicien en informatique avec 15 ans d'expérience professionnelle, j'ai découvert que le simple fait de souffler de la poussière peut améliorer considérablement les performances.

Je ne parle pas d'une quantité de poussière mince, presque imperceptible, mais plutôt de grosses touffes ou même des tapis qui empêchent un flux d'air normal. J'ai vu des dissipateurs de chaleur qui avaient essentiellement un filtre sur eux qui était de la poussière, plutôt qu'un véritable filtre. Cela empêche une quantité très importante d'air de refroidir le processeur. L'élimination de la poussière comme celle-ci aura tendance à calmer instantanément les ventilateurs et à permettre à vos composants de survivre plus longtemps. La chaleur avait tué de nombreux ordinateurs qu'on m'a demandé de réparer.

En accord avec l'idée de problème de chaleur, vous pouvez également essayer une meilleure pâte thermique. Le cr @ p blanc que la plupart des processeurs proposent est comme le Yugo de pâte thermique. J'utilise Arctic Silver, mais il y a même mieux que ça. Arctic Silver concerne une Porche (en utilisant l'échelle de notation des voitures), mais il existe des variétés de Ferrari et de supercar.

Les processeurs ont tendance à ralentir en cas de surchauffe. C'est une chose physique ainsi qu'une "auto-préservation" programmée dans de nombreux processeurs. Je ne sais pas s'il affichera toujours 100% sur le Gestionnaire des tâches ou s'il affichera 40% (comme vous le voyez), mais cela peut être un ralentissement important pendant que le CPU essaie de laisser le dissipateur de chaleur et le ventilateur " rattraper."

Une autre chose qui pourrait ralentir votre processeur est le GPU. Si vous exécutez des jeux ou des utilitaires à forte intensité graphique (comme la CAO), votre GPU peut retenir votre processeur. Obtenir une meilleure carte vidéo pourrait être quelque chose à regarder. En outre, l'utilisation de la mauvaise carte peut vous retenir. Les cartes de jeu ne sont pas (généralement) conçues pour fonctionner avec la CAO ainsi que les cartes de poste de travail, et les cartes de poste de travail (généralement) ne joueront pas très bien non plus. Certains le font, mais la plupart ne le font pas.

Comme @Jaroslav Kucera l'a mentionné, cela pourrait être lié au disque. Frapper beaucoup le (s) HD peut ralentir considérablement. J'exécute normalement plusieurs disques. Un dédié au système d'exploitation et d'autres pour les logiciels, les fichiers de page Windows, les fichiers personnels, etc. La lecture et l'écriture sur le même disque en même temps peuvent sérieusement ralentir la HD. L'utilisation de SHD peut atténuer cela, mais pas entièrement. Photoshop et les logiciels de montage vidéo sont connus pour frapper durement les HD. La lecture à partir d'un HD puis la sortie vers un 2ème HD est la voie à suivre. Cela aide également la vie de vos disques durs. Je fais également du refroidissement actif sur mes disques durs. Je n'ai pas tué de disque dur depuis que j'ai installé un ventilateur et un dissipateur thermique il y a +15 ans. Google eux, ce sont des assurances bon marché.

Croyez-le ou non, votre alimentation peut également vous ralentir. Si vous n'avez pas assez de puissance (ou que votre bloc d'alimentation est ancien ou un PDV chinois bon marché et surévalué), vous pouvez avoir des problèmes de performances. J'ai vu de première main quels problèmes de système d'exploitation étranges un bloc d'alimentation feuilleté peut faire. Vous recherchez la tension ainsi que les amplis, alors assurez-vous qu'ils correspondent tous aux spécifications de l'alimentation, si vous suivez cette voie, et assurez-vous également qu'ils répondent ou dépassent vos besoins en alimentation. Si vos composants totalisent 500 watts et que vous leur en donnez même 475, c'est mauvais. Je recommande de dépasser vos besoins d'environ 20%, donc à mesure que votre bloc d'alimentation vieillit (et diminue la puissance) et que vos autres composants vieillissent (et nécessitent une alimentation mote), vous n'êtes pas obligé d'acheter un nouveau bloc d'alimentation si rapidement.

En incluant les autres réponses ici, il y a encore plus de raisons pour lesquelles votre ordinateur fonctionne lentement. À l'exception de l'option PSU, ce dont j'ai parlé a été très souvent vu lorsque j'étais technicien en informatique. Faire un test de référence et d'autres tests est le seul moyen de comprendre les choses. L'échange de pièces pourrait même ne pas résoudre le problème s'il s'agit d'un combo de plusieurs pièces provoquant le ralentissement.

Et, AFAIK, il n'y a aucun moyen de forcer votre ordinateur à utiliser 100% du processeur. Le processeur et le système d'exploitation savent ce qu'ils doivent faire et sont généralement très bons dans leur travail. :-) Je ne pense pas que quiconque ait encore trouvé un moyen de forcer l'alimentation d'un processeur pour le faire fonctionner à 100% alors que vous le pensez. Du moins pas sans le nourrir d'ordure supplémentaire pour que le pourcentage "paraisse bien".

Avec vous voyant 40% et non et une division entière de 100% (comme 25%, 33% ou 50%), j'ai l'impression que ce n'est pas un problème de filetage unique. C'est possible, mais ce n'est pas là où va mon esprit. +1 à @Twisty Impersonator pour l'avoir soulevé tout de suite, cependant.

Bonne chance pour essayer de comprendre celui-ci! J'ai passé des jours à essayer de comprendre ce genre de chose, pour finir par remplacer la plupart des tripes en «dernier recours».


1
+1 pour avoir signalé la possibilité qu'une application se bloque sur un GPU épuisé.
Je dis Rétablir Monica

6
J'ai oublié de mentionner que fumer près de votre ordinateur est l'une des pires choses que vous puissiez faire. Il laisse un désordre collant désagréable, dégueulasse et dégoûtant (ne peut pas insister assez) qui ne peut pas être nettoyé. La poussière devient durcie et impossible à nettoyer. Vous pourriez être en mesure de le retirer avec un bain d'huile pour pièces automobiles ou un bain d'eau sonique, mais je n'ai jamais traversé ce problème. Même nettoyer le boîtier est un effort futile.
computercarguy

2
Du point de vue du développeur, le processeur fera tout ce que vous lui direz. Si ce n'est pas au maximum à 100%, c'est parce que votre programme attend que d'autres choses se produisent (disque IO, réseau, entrée utilisateur, messages système, etc.). Si vous avez quelque chose à faire pour le CPU, il utilisera automatiquement 100% (en supposant une application multithread) pour faire ce dont votre programme a besoin - vous n'avez pas à "faire" utiliser 100% ou le déverrouiller ou quelque chose.
JPhi1618

2
@ JPhi1618: Vous oubliez la chaleur. Indépendamment de ce que vous lui demandez de faire, si le processeur surchauffe, il se réduira pour fonctionner à bien moins de 100%.
Mooing Duck

9
@ Les processeurs JPhi1618 sont généralement limités par la mise à l'échelle de leur fréquence (underclocking), donc au lieu de fonctionner à, disons au lieu de 3,0 GHz, ils fonctionnent à 2,0 GHz. Ainsi, le processeur étranglé thermiquement peut toujours signaler une charge de 100%, car chaque «emplacement de travail» est occupé, il y a juste moins de «emplacements de travail» en unité de temps disponible.
el.pescado

3

Il peut s'agir de paramètres d'économie d'énergie dans le BIOS ou le système d'exploitation. De nombreux processeurs et cartes mères modernes ont des paramètres permettant au processeur d'être plus économique avec la consommation d'électricité, (en particulier pour les ordinateurs portables qui souhaitent que la batterie dure). Vous pouvez probablement désactiver un tel paramètre, mais assurez-vous de savoir ce que vous faites car à côté du paramètre, il y a généralement d'autres choses qui peuvent affecter les fonctionnalités de l'ordinateur d'autres manières importantes.


2

J'atteins régulièrement 100% d'utilisation lors des tâches de rendu et de calcul. Je vais vérifier que l'hyperthreading atteindra 100%, et l'ordre des instructions est un gros problème. Intel et AMD ont tous deux de grandes quantités de matériel dédié à la réorganisation des instructions pour remplir autant de cœurs d'exécution que possible. Si vous obtenez 30% sur une machine moderne, vous pouvez

  • Vérifiez Temps - Intel et AMD à la fois quand ils deviennent chauds et cela apparaît comme des bégaiements et des pointes.
  • Ne pas faire grand-chose avec lui .... des exemples sont:
    1. Navigation sur le Web
    2. Email
    3. Jeux les plus simples
    4. Je garantirais presque que votre problème est l'un ou l'ensemble des éléments suivants, en commençant par le haut:
  • Obtenez un SSD
  • Obtenez un SSD
  • Obtenez votre système d'exploitation sur le SSD et déplacez les données normales vers un disque traditionnel de plusieurs To. Windows a besoin de plus d'accès à ses fichiers locaux qu'autre chose.
  • Bonazai Buddy?
  • Gardez tous les disques à une capacité supérieure à 10% au moins. NTFS est un système de fichiers de journalisation et les performances diminuent au fur et à mesure que le disque est plein.
  • Vous avez besoin d'un lecteur / SSD NVMe pour votre lecteur de système d'exploitation dès que possible (oui, je l'ai répété). Les performances sont incroyables, et cela se poursuit dans la deuxième partie de cela ... Un grand détaillant vendait des disques Samsung 961 NMVe 512 Go pour 300 $ aujourd'hui, ce qui est largement suffisant pour une utilisation normale.
  • Windows 10 est lourd en GPU. Une carte vidéo dédiée bon marché peut alléger la mémoire et le processeur. Vous pouvez toujours utiliser l'APU en combinaison avec la carte vidéo, mais vous économiserez de la RAM et la VRAM est généralement beaucoup plus rapide.
  • Les CPU à nombre de cœurs inférieur sont également liés à la mémoire. Si vous regardez les i7, ils exécutent tous un DDR à quatre canaux dans 4 banques. Les puces Epyc d'AMD seront DDR5 à 8 canaux avec 64 cœurs. N'aide pas. Enfin, et je ne saurais trop insister sur celui-ci, videz l'argent sur autant de RAM que votre machine le prendra. J'ai 32 Go et j'en achète 32 de plus plus tard cette année. Windows fait quelque chose de similaire à superfetch qui est un peu plus récent qui compresse la mémoire dans la RAM qui n'est pas utilisée afin que les programmes et les données puissent être décompressés en cas de besoin. Comme autre exemple, je lance une machine virtuelle Linux pour le développement, alloué 6/12 cœurs et 16 Go de RAM, et après le premier chargement du SSD, il démarre en ~ 3 secondes. Le CPU est considéré comme très bon marché de nos jours par des optimisations comme ça ...

Tout cela semble exagéré jusqu'à ce que je sois coincé à compiler un projet de fichiers de 70k ou à faire évoluer des fichiers bruts d'appareil photo géant à 17 "x26" x600 dpi en couleur 16 bits. Même à 100% d'utilisation, les ressources sont tellement exagérées que vous ne subissez pas de ralentissement. L'autre soir, j'ai réalisé que j'avais deux VM et un Wolf 2 chargés avec 2 IDE (je suis distrait, poursuivez-moi) et je n'ai pas remarqué de ralentissement. Il s'agit d'une machine d'environ 1500 $ BTW, rien de spécial, et achetée le plus lentement au fil des ans. La moitié de cela est l'un des Radeon RX64 car ma carte vidéo avait 6 ans. Énorme différence de rendu et autres. La mise à niveau vous permettra probablement de mieux utiliser votre matériel que de supposer que votre utilisation de 30% est tout ce que vous obtiendrez.

Si je jetais un disque dur à 5400 tr / min dans cette machine pour OS, cela fonctionnerait comme une merde totale.

TL; DR, il semble que vous soyez lié au processeur en ce moment. Dépensez quelques centaines sur au moins un SSD de 256 Go pour le système d'exploitation, 8 Go de RAM et une carte de joueur bas de gamme et l'ordinateur durera des années. Celui-ci a survécu pendant 6 ans avant de finalement faire un processeur et un rafraîchissement Mobo et je compilais une suite complète de compilateurs croisés environ 25 fois par jour avec l'ancien équipement.

Appelez-moi exagéré, mais je ne recommande pas 8 cartes Tesla ou quoi que ce soit. :-) Faites des mises à jour mineures quand vous le pouvez et je pense que vous résoudrez beaucoup de ces problèmes. Je l'ai fait il y a des années en ajoutant un SSD à un système Q6600 et en regardant les performances tripler.


1

Sans connaître les spécificités de votre programme, c'est difficile à dire, mais comme une autre réponse examine la possibilité que l'application soit monothread, je vais regarder l'application comme si elle utilisait le multithreading approprié.

Une chose courante qui est négligée est les cœurs physiques par rapport aux «cœurs hyperthreadés». L'hyperthreading excelle dans de nombreuses tâches courtes avec des goulots d'étranglement autres que le processeur. Pour les tâches goulot d'étranglement du processeur en boucle serrée, vous êtes toujours limité par votre nombre de cœurs physiques, qui est généralement la moitié de votre nombre de cœurs hyperthreadés. Dans le pire des cas, votre gestionnaire de tâches peut afficher seulement 50% d'utilisation car il compte les cœurs hyperthreadés dans ses graphiques, alors qu'en réalité, vos cœurs physiques peuvent être à 100% d'utilisation. En règle générale, vous afficheriez plus que cela, car votre système d'exploitation pourra utiliser l'hyperthreading pour d'autres tâches non liées.


Un «multithreading approprié» ne signifierait-il pas avoir un thread avec du travail à faire pour chaque noyau logique plutôt que pour chaque noyau physique ? Si vous exécutez une boucle étroite sur chaque noyau logique, le Gestionnaire des tâches doit signaler 100% avec hyperthreading. AFAIK, le "pourcentage d'utilisation" dans le Gestionnaire des tâches est basé sur la durée pendant laquelle le thread en question était à l'état exécutable et planifié sur un noyau logique, pas nécessairement la durée, disons, de faire quelque chose sur une ALU . Le système d'exploitation ne le saurait probablement même pas (seul le microcode du processeur le saurait.)
reirab

1
Le code machine "normal" n'utilise que 2 à 3 des 6 ports d'instruction ou plus sur les processeurs modernes. Sans parler de tous les décrochages de pipelines causés par des échecs de branche et de cache. L'hyperthreading aide à combler ces lacunes. C'est presque toujours une victoire de l'utiliser. Certains types de code ne fonctionnent pas bien avec, comme l'encodage / décodage vidéo ou les mathématiques matricielles fortement optimisées. Mais ce sont inhabituels.
Zan Lynx
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.