Question

Je soupçonne qu'une de mes applications consomme plus de cycles de processeur que je ne le souhaite. Le problème est le suivant: cela se produit par rafales et le simple fait de regarder le gestionnaire de tâches ne m'aide pas, car il ne montre qu'une utilisation immédiate.

Existe-t-il un moyen (sous Windows) de suivre l’historique de la CPU & amp; Utilisation de la mémoire pour certains processus. Par exemple. Je vais commencer à suivre "firefox", et au bout d’une heure environ, je verrai un graphique de son processeur & amp; utilisation de la mémoire pendant cette heure.

Je recherche un outil prêt à l'emploi ou une méthode programmatique pour y parvenir.

Était-ce utile?

La solution

Tapez simplement perfmon dans Démarrer > Exécutez et appuyez sur entrée. Lorsque la fenêtre Performances est ouverte, cliquez sur le signe + pour ajouter de nouveaux compteurs au graphique. Les compteurs sont différents aspects du fonctionnement de votre PC et sont regroupés par similarité en groupes appelés "Performance Object".

Pour vos questions, vous pouvez choisir le "Processus", "Mémoire". et " Processeur " objets de performance. Vous pouvez alors voir ces compteurs en temps réel

Vous pouvez également spécifier l'utilitaire pour enregistrer les données de performance pour votre inspection ultérieurement. Pour ce faire, sélectionnez "Journaux et alertes de performance". dans le panneau de gauche. (C’est sous la console System Monitor qui nous fournit les compteurs mentionnés ci-dessus. Si ce n’est pas le cas, cliquez sur "Fichier" > "Ajouter / supprimer un composant logiciel enfichable", cliquez sur Ajouter et sélectionnez "Journaux et alertes de performance". ; dans la liste "). Dans" Journaux et alertes de performance ", créez une nouvelle configuration de surveillance sous" Journaux de compteur ". Ensuite, vous pouvez ajouter les compteurs, spécifier le taux d'échantillonnage, le format du journal (texte binaire ou brut) et l'emplacement du journal.

Autres conseils

Explorateur de processus peut afficher le temps CPU total pris par un processus, ainsi qu'un graphique d'historique par processus.

À l'aide de perfmon.exe, j'ai essayé d'utiliser les "octets privés". compteur sous "Processus" compteurs pour suivre l'utilisation de la mémoire et cela fonctionne bien.

Peut-être que vous pouvez utiliser ceci. Cela devrait fonctionner pour vous et signaler le temps de traitement du processus spécifié.

@echo off
: Rich Kreider <rjk@techish.net>
: report processor time for given process until process exits (could be expanded to use a PID to be more
: precise)
: Depends:  typeperf
: Usage:  foo.cmd <processname>

set process=%~1
echo Press CTRL-C To Stop...
:begin
for /f "tokens=2 delims=," %%c in ('typeperf "\Process(%process%)\%% Processor Time" -si 1 -sc 1 ^| find /V "\\"') do (
if %%~c==-1 (
goto :end
) else (
echo %%~c%%
goto begin
)
)

:end
echo Process seems to have terminated.

Je suis d'accord, perfmon.exe vous permet d'ajouter des compteurs (clic droit sur le panneau de droite) pour tout processus que vous souhaitez surveiller.

Objet de performance: processus Vérifier "Sélectionner les instances dans la liste" et sélectionnez Firefox.

WMI est Windows Management Instrumentation, intégré à toutes les versions récentes de Windows. Il vous permet de suivre par programme des éléments tels que l'utilisation du processeur, les entrées / sorties de disque et l'utilisation de la mémoire.

Perfmon.exe est une interface graphique frontale pour cette interface. Il peut surveiller un processus, écrire des informations dans un journal et vous permettre d'analyser le journal ultérieurement. Ce n'est pas le programme le plus élégant au monde, mais il fait le travail.

Process Lasso est davantage conçu pour l’automatisation des processus et l’optimisation des classes de priorité que pour les graphiques. Cela dit, il offre un historique d'utilisation du processeur par processus (tracé blanc sur le graphique), mais NOT offre un historique d'utilisation de la mémoire par processus.

CLAUSE DE NON-RESPONSABILITÉ: Je suis l’auteur de Process Lasso, mais je ne l’approuve pas vraiment ici, car il existe de meilleures solutions (perfmon étant le meilleur).

L’analyseur de ressources et de performances de Windows Vista + constitue la meilleure chose qui soit. Il peut suivre l'utilisation des accès processeur, mémoire, réseau et disque par processus au fil du temps. C'est un excellent utilitaire global d'informations système qui aurait dû être créé depuis longtemps. Sauf erreur de ma part, il peut suivre l'utilisation du processeur et de la mémoire par processus au fil du temps (parmi les autres éléments répertoriés).

Vous pouvez également essayer d'utiliser un script C # / Perl / Java pour obtenir les données d'utilisation à l'aide de commandes WMI. Vous trouverez ci-dessous les étapes à suivre.

Nous devons exécuter 2 requêtes de sélection WMI et appliquer la formule d'utilisation% du processeur

1. Pour récupérer le nombre total de processus logiques

select NumberOfLogicalProcessors from Win32_ComputerSystem

2. Pour récupérer les valeurs de PercentProcessorTime, TimeStamp_Sys100NS (la formule d'utilisation de l'UC doit être appliquée, obtenez le pourcentage d'utilisation réel) et WorkingSetPrivate (RAM) au minimum 2 fois avec un intervalle de veille de 1 seconde

select * from Win32_PerfRawData_PerfProc_Process where IDProcess=1234

3. Appliquer la formule d'utilisation% du processeur

CPU%= ((p2-p1)/(t2-t1)*100)/NumberOfLogicalProcessors

p2 a indiqué PercentProcessorTime récupéré pour la deuxième fois et p1 a indiqué que PercentProcessorTime était récupéré pour la première fois, t2 et t1 étaient pour TimeStamp_Sys100NS.

Vous trouverez un exemple de code Perl dans le lien http://www.craftedforeveryone.com/cpu-and-ram-utilization-of-an-application-using-perl-via-wmi/

Cette logique s'applique à tous les langages de programmation prenant en charge les requêtes WMI

Bien que je n’aie pas essayé, ProcDump semble être une meilleure solution.

Description du site:

  

ProcDump est un utilitaire de ligne de commande dont le but principal est de surveiller une application pour détecter les pointes de processeur et de générer des vidages sur incident au cours d'une pointe qu'un administrateur ou un développeur peut utiliser pour déterminer la cause de cette pointe. ProcDump inclut également la surveillance des fenêtres bloquées (utilisant la même définition de blocage des fenêtres que celle utilisée par Windows et le gestionnaire de tâches), la surveillance des exceptions non gérées et peut générer des vidages basés sur les valeurs des compteurs de performance du système. Il peut également servir d’utilitaire de vidage de processus général que vous pouvez intégrer à d’autres scripts.

Hmm, je vois que Explorateur de processus peut le faire, bien que ses graphiques ne soient pas trop pratiques. Toujours à la recherche de solutions de rechange / meilleures.

Perfmon.exe est intégré à Windows.

Vous pouvez consulter le Process Lasso .

Sous Windows 10, le gestionnaire de tâches peut vous montrer le nombre cumulé d’heures de processeur. Rendez-vous simplement dans " Historique des applications " onglet et "Supprimer l'historique d'utilisation". Laissez maintenant les choses en marche pendant une heure ou deux:

 Temps CPU cumulé de Windows 10

Ce que cela ne fait PAS, c’est de ventiler l’utilisation des navigateurs par onglet. Très souvent, les onglets inactifs feront énormément de travail. Chaque onglet ouvert consomme de l’énergie et ralentit votre PC.

J'utilise taskinfo pour l'historique graphique de la vitesse du processeur, de la mémoire vive et des entrées / sorties. http://www.iarsn.com/taskinfo.html

Mais les rafales de non-réponse sonnent plus comme du temps d'interruption dû à un disque dur HD / SS.

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