Enregistrer% CPU par processus dans le temps

40

Existe-t-il un moyen simple de consigner dans le fichier% de temps processeur par processus dans un fichier pour une analyse ultérieure?

D'aussi loin que je puisse voir...

  1. Le gestionnaire de tâches me montre le% de CPU par processus mais uniquement visuellement - aucun moyen de sauvegarder dans un fichier.
  2. Perfmon me laissera sauvegarder dans un fichier et créera en outre un fichier temporel (prenant des instantanés à des intervalles de temps spécifiés) - ce qui est presque ce que je veux, sauf que, autant que je sache, il ne peut pas décomposer le% CPU par processus.
  3. Process Explorer me laissera décomposer par processus, mais il enregistrera uniquement le fichier en tant que capture instantanée d'un seul point dans le temps.

Donc, rien de tout cela ne correspond à ce dont j'ai besoin: je dois obtenir un fichier contenant quelque chose comme "10 processus par processeur, toutes les 15 secondes, jusqu'à ce que j'arrête la surveillance". La raison pour laquelle j'ai besoin de cela parce que j'ai une machine sur laquelle certains processus causent parfois de brèves pointes d'utilisation du processeur plusieurs fois par jour et je dois déterminer quel processus est responsable.

Est-ce que quelque chose peut faire cela, ou ai-je oublié une fonctionnalité de perfmon ou de l'explorateur de processus?

PhantomDrummer
la source

Réponses:

37

Process Monitor peut le faire pour vous.

Vous voudrez peut-être tout d'abord activer la collecte des événements de profilage:

entrez la description de l'image icientrez la description de l'image ici

Ensuite, collectez simplement les données aussi longtemps que vous le souhaitez (vous pouvez éventuellement configurer des filtres et activer l' option Supprimer les événements filtrés si vous prévoyez de les collecter pendant de longues périodes). Ensuite, allez dans Outils -> Résumé de l'activité de processus:

entrez la description de l'image ici

Vous obtiendrez maintenant une liste de tous les processus actifs que vous avez enregistrés, avec leur activité au fil du temps. entrez la description de l'image ici

Vous pouvez ensuite ouvrir les détails d'un processus unique (en double-cliquant dessus) et inspecter l'horodatage de certains événements dans le graphique:

entrez la description de l'image ici

Der Hochstapler
la source
1
Merci. C'est visuellement assez impressionnant (je crains de penser à la quantité de mémoire qu'il utilise si vous le laissez fonctionner longtemps). C'est certainement utile pour pouvoir voir à l'écran ce que les processus faisaient. Cependant, si je clique sur "Enregistrer" dans l'écran de résumé de l'activité du processus, ce qui est enregistré reste un instantané à un seul point dans le temps, pas de données dépendant du temps.
PhantomDrummer
@PhantomDrummer: La sauvegarde et le chargement de fichiers PML fonctionnent parfaitement pour moi. Tous les événements précédemment enregistrés sont restaurés et disponibles pour analyse après le chargement d'une PML. Assurez-vous de sélectionner Tous les événements lorsque vous enregistrez le fichier. Si cela ne veut tout simplement pas fonctionner, faites-le moi savoir et j'inclurai plus de détails dans ma réponse. Bonne chance :)
Der Hochstapler
1
@PhantomDrummer: Allez dans Options -> Evénements de profilage. Là, vous pouvez définir l’intervalle sur 1s ou 100ms. C'est tout ce que ça va. Si le fichier devient toujours trop volumineux, vous devez configurer des filtres plus stricts et activer les événements filtrés.
Der Hochstapler le
1
@Pacerier One est un gestionnaire de tâches, l'autre enregistre les opérations effectuées par les tâches.
Der Hochstapler
6
N'y a-t-il pas quelque chose de plus simple? Cela ressemble à ce que vous devez apprendre à utiliser. Pour un petit contrôle, je veux juste connaître les temps d'utilisation du processeur lorsque son utilisation est supérieure à X%
Darius.V