2012-05-31 11 views
5

E 'possibile utilizzare ETW per ottenere anche statistiche sulla memoria di tutti i processi e il sistema? Con le statistiche della memoria intendo: ad es. Byte commessi, byte privati, pool di paging, working set, ...È possibile utilizzare ETW (tracciamento degli eventi per Windows) per raccogliere anche le statistiche della memoria?

Non riesco a trovare nulla sull'utilizzo di xperf per ottenere e visualizzare le statistiche della memoria. Si tratta sempre di CPU, disco, rete.

Uno potrebbe probabilmente utilizzare i contatori delle prestazioni per ottenere questo tipo di informazioni, ma come è possibile sovrapporre le statistiche graficamente in un grafico (come correlare/sincronizzare i timestamp)?

risposta

6

La soluzione migliore su Windows 8.1 e versioni successive è il provider Microsoft-Windows-Kernel-Memory, che registra le informazioni di memoria per processo ogni 0,5 s. Vedi https://github.com/google/UIforETW/issues/80 per i dettagli. UIforETW lo abilita di default quando è disponibile.

Si potrebbe anche provare il provider MEMINFO. Fornisce una panoramica a livello di sistema della pressione della memoria. Mostra l'Elenco attivo (memoria attualmente in uso), l'Elenco di attesa (pagine "utili" non attualmente in uso, come la cache del disco) e le liste Zero e Free (memoria veramente libera). Questo almeno ti permette di dire se un sistema sta esaurendo la memoria.

Si potrebbe anche provare MEMINFO_WS e CONTMEMGEN ma questi sono non documentati quindi non so davvero cosa fanno. Si visualizzano in xperf -provider k ma quando registro con loro non riesco a vedere nessun nuovo grafico. Apparentemente Microsoft spedisce questi provider ma non c'è modo di visualizzarli. Sigh ...

Se desideri ulteriori dettagli di memoria su Windows 7, ad esempio i set di lavoro per processo, la soluzione migliore è eseguire un processo che periodicamente interroga questi dati e li emette in eventi ETW personalizzati. Questo è disponibile in un modulo precompilato in UIforETW che può interrogare il working set di un insieme specifico di processi una volta al secondo. Vedere il post dell'annuncio su come ottenere UIforETW: https://randomascii.wordpress.com/2015/04/14/uiforetw-windows-performance-made-easier/

I dati del set di lavoro di Windows 7 di UIforETW vengono visualizzati in Eventi generici in Nome attività == WorkingSet. Su Windows 8.1 i dati di funzionamento del sistema operativo (più dettagliati, registrati in modo più efficiente) vengono visualizzati in Memoria-> Istantanee memoria virtuale.

2

È possibile tracciare l'utilizzo della memoria con il gruppo di kernel ReferenceSet. Esso comprende i seguenti TRACEFLAGS:

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

MEMORIA = Memoria tracciando

IMPRONTA + GRUPPORIF analisi = Supporto impronta

MemInfo = Memory List (attiva, standby e oters che si vede da Resmon)

VIRT_ALLOC = Riserva allocazione virtuale e versione

VAMAP = informazioni file mappati

MEMINFO_WS = working set Info

Come si può vedere xperf può catturare un sacco di dati memoria quando si citare in giudizio le bandiere giuste.

+1

Sì, è in grado di acquisire molti dati, ma come si fa a visualizzarli * o altrimenti estrarli? In particolare non riesco a trovare alcun modo per visualizzare i dati MEMINFO_WS. Nella sezione Memoria di WPA è possibile vedere Utilizzo memoria (elenchi attivi/modificati/ecc.), Guasti gravi, durata di vita VirtualAlloc, grafici pool e set residente. Resident Set sembra il più utile, ma sembra che mostri informazioni REFSET, quindi cosa mostra i dati MEMINFO_WS? –

+1

Resident Set sembra solo catturare un'istantanea alla fine della traccia, quindi è scarsa per rilevare le tendenze nel corso di una traccia. Penso che/abbiamo davvero bisogno dei dati MEMINFO_WS. –

Problemi correlati