2012-05-31 2 views
5

Est-il possible d'utiliser ETW pour obtenir également des statistiques sur la mémoire de tous les processus et du système? Avec les statistiques de mémoire, je veux dire: par ex. octets, Commited octets privés, paginée, jeu de travail, ...Est-ce que ETW (traçage d'événement pour Windows) peut être utilisé pour rassembler aussi des statistiques de mémoire?

Je ne peux pas trouver quoi que ce soit sur l'utilisation XPerf pour obtenir et voir les statistiques de mémoire. Il s'agit toujours de CPU, de disque, de réseau.

On pourrait probablement utiliser des compteurs de performance pour obtenir ce genre d'information, mais comment peut-on superposer graphiquement les statistiques dans un graphique (comment corréler/synchroniser les horodatages)?

Répondre

6

Votre meilleur pari sur Windows 8.1 et versions ultérieures est le fournisseur mémoire Microsoft-Windows Kernel, qui enregistre des informations de mémoire par processus toutes les 0,5 s. Voir https://github.com/google/UIforETW/issues/80 pour plus de détails. UIforETW le permet par défaut quand il est disponible.

Vous pouvez également essayer le fournisseur de MemInfo. Il donne une vue d'ensemble du système de la pression de la mémoire. Il montre la liste active (mémoire actuellement utilisée), la liste en attente (pages «utiles» non utilisées actuellement, telles que le cache disque) et les listes Zéro et Libre (mémoire réellement libre). Cela vous permet au moins de savoir si un système manque de mémoire.

Vous pouvez également essayer MEMINFO_WS et CONTMEMGEN mais ceux-ci sont en situation irrégulière, donc je ne sais vraiment pas ce qu'ils font. Ils apparaissent dans xperf -providers k mais quand j'enregistre avec eux je ne vois pas de nouveaux graphes apparaissant. Apparemment Microsoft expédie ces fournisseurs, mais aucun moyen de les voir. Si vous voulez plus de détails sur Windows 7 - tels que les jeux de travail par processus - votre meilleur pari est d'avoir un processus qui interroge périodiquement ces données et les émet dans les événements ETW personnalisés. Ceci est disponible sous une forme pré-emballée dans UIforETW qui peut interroger l'ensemble de travail d'un ensemble spécifié de processus une fois par seconde. Voir le message d'annonce pour obtenir UIforETW: https://randomascii.wordpress.com/2015/04/14/uiforetw-windows-performance-made-easier/

Les données de l'ensemble de travail Windows 7 de UIforETW s'affichent dans Événements génériques sous le nom de tâche == WorkingSet. Sous Windows 8.1, les données du jeu de travail du système d'exploitation (plus détaillées, plus efficacement enregistrées) apparaissent sous Mémoire -> Instantanés de mémoire virtuelle.

2

Vous pouvez suivre l'utilisation de la mémoire avec ReferenceSet groupe noyau. Il comprend les TraceFlags suivants:

PROC_THREAD+LOADER+HARD_FAULTS+MEMORY+FOOTPRINT+VIRT_ALLOC+MEMINFO+VAMAP+SESSION+REFSET+MEMINFO_WS 

mémoire = mémoire traçage

EMPREINTE + REFSET = analyse de l'empreinte du support

MemInfo = Liste mémoire d'informations (actif, veille et oters vous voyez de resmon)

VIRT_ALLOC = Réserve d'allocation virtuelle et libération

VAMAP = informations sur les fichiers mappés

MEMINFO_WS = Jeu de travail Infos

Comme vous pouvez le voir XPerf peut capturer un grand nombre de données de mémoire lorsque vous réclamez les drapeaux droite.

+1

Oui, il peut capturer beaucoup de données, mais comment pouvons-nous à * * affichage que les données, ou autrement extraire? En particulier, je ne trouve aucun moyen d'afficher les données MEMINFO_WS. Dans la section Mémoire de WPA je peux voir Utilisation de la mémoire (actifs/modifiés/etc listes.), Défauts durs, VirtualAlloc Comit, Piscine Lifetimes Graphiques et Set résident. Resident Set semble le plus utile, mais il semble afficher info REFSET, donc ce qui affiche des données MEMINFO_WS? –

+1

Resident Set semble que de saisir un instantané à la fin de la trace, il est faible pour remarquer les tendances au cours d'une trace. Je pense que je/nous avons vraiment besoin de données MEMINFO_WS. –

Questions connexes