Performance Counter

by sandro 5. January 2009 10:09

Qest'anno (2008) a giugno, durante l'ultima Windows Mobility Conference di Milano, ho presentato con Alessandro Pilotti una sessione riguardante il Compact Famework 2.0, in cui analizzavamo alcuni dettagli poco conosciuti sulla parte managed dei dispositivi embeddd. Con Alessandro abbiamo deciso di pubblicare degli approfondimenti aventi per tema gli argomenti dell'intervento. In questo post analizzerò una funzionalità che permette di monitorare le performance di un'applicazione .net. Nell'esempio di questo post, prenderemo in esame un'applicazione tra quelle presenti nella directory samples nell' SDK di Windows Mobile 6.0 e più precisamente C:\Programmi\Windows Mobile 6 SDK\Samples\Common\CS\RingtoneManager. Questa applicazione contiene del codice .net abbastanza significativo e inoltre si interfaccia con delle Dll native tramite Platform/Invoke, dovendo gestire la riproduzione di suoni da file .wav o .mp3.

Preparazione

Questa funzionalità è talmente potente e precisa per quanto semplice da implementare. E' sufficiente fare il deploy dell'applcazione .net, impostare una chiave di registro, avviare l'applicazione e dopo essere usciti dalla stessa, consultare il file .stat contenente i valori di alcuni parametri estremamente significativi. Andiamo per ordine. Facciamo il build della solution e succesivamente il deploy. Connettetevi con il remote tool per l'impostazione del registry e create la chiave di registro [HKEY_LOCAL_MACHINE\Software\Microsoft\.NETCompactFramework\PerfMonitor]. Qui va creata una voce di tipo DWORD con valore 0x01 di nome Counters. Alla fine il risultato dovrà essere questo:

 

Poi facciamo partire l'applicazione. Questa dovrà prima trovare un pò di file di tipo .wav o .mp3, dopodichè ne selezioniamo qualcuno e lo eseguiamo:

 

A questo punto usciamo dall'applicazione e vediamo che è stato creato un file con nome RingToneManager.stat. Facciamo l'upload del file sul computer desktop (tramite sempre remote tools) e apriamolo con notepad (qui ne vediamo per motivi di spazio solo una parte):

 

I Valori statistici 

Notiamo davvero un numero incredibile di voci. Proviamo ad analizzarne qualcuna.Managed Bytes Allocated, Managed Objects Allocated, Peak Bytes Allocated (native + managed)

Un alto numero di oggetti allocati non indica necessariamente un cattivo andamento dell'applicazione, comunque sia sppiamo bene che maggiore è il numero di oggetti allocati e maggiore sarà il tempo che la CPU dedicherà per l'eliminazione degli oggetti non più referenziati tramite l'attività del Garbage Collector.

Collections (Simple, Compact, Full)

Facendo riferimento ad un mio post dove spiego il funzionamento del Garbage Collector nei dispositivi embedded, con tali parametri ci possiamo rendere conto dell'attività del GC, quanto abbiamo ottimizzato la creazione di oggetti nello Heap Gestito e dove si annidano le potenziali aree di miglioramento. Per esempio in una situazione ideale no dovrebbero esserci delle full collection ed in ogni caso, qualora se ne presentassero alcune, il loro numero dovrebbe essere sempre inferiore aò numero degli altri due tipi di collection. Il rapporto tra Full Collections e Simple+Compact tende ad essere > 1 quando la memoria è sottoposta ad eccessivo stress.

GC Latency Time

E’ il totale in millisecondi del tempo di sospensione di un’applicazione dovuto alla garbage collection.
E’ direttamente collegata al Numero di Ogetti (altro parametro) e da il polso di quanto tempo impiegano le collezioni per fare il loro lavoro. E' da tenere sott’occhio quando le applicazioni sembrano inchiodarsi senza apparente motivo e riprendere successivamente.

Bytes Pitched, Number of Methods Pitched

Nel .NET Compact Framework c’è il concetto del “code pitching” e rappresenta l'azione di rimuovere il codice compilato (da MSIL a nativo) quando c’è bisogno di memoria altrimenti non disponibile. Questo causerà una successiva ricompilazione nel momento in cui ci sarà bisogno nuovamente del codice. Un parametro troppo elevato di questo tipo indica un rallentamento dell'applicazione in cui va ottimizzata la creazione di oggetti. Un’alta incidenza di pitching indica un grande utilizzo della memoria e forse che l’applicazione mantiene inutilmente vivi troppi oggetti. Possibili soluzioni possono consistere nel decrementare se possibile il numero di live objects, modificare eventualmente il device aggiungendo memorie oppure controllare se ci sono altre applicazioni che consumano troppa memoria.

Native Bytes Jitted, Number of Methods Jitted

E' il totale di codice complato in nativo. Se il numero è molto elevato, per certe aree della nostra applicazione, controllare se eventualmente non esiste un’altra successione di chiamate che fa lo stesso lavoro, con un numero minore di call

Mi riprometto di analizzare i meccanismi per migliorare le performance di applicazioni basate sul compact framework in successivi post

 

 

Comments

12/18/2009 4:25:19 PM #

t cards

This seems like the most comprehensive blog on this niche

Regards
Blackman


t cards United States | Reply

12/18/2009 10:52:00 PM #

buy wine online

I was looking for crucial information on this subject. The information was important as I am about to launch my own portal. Thanks for providing a missing link in my business.



Regards
Ortiz






buy wine online United States | Reply

12/26/2009 5:30:27 AM #

Maggie

Me and my friend were arguing about an issue similar to this! Now I know that I was right. lol! Thanks for the information you post.

Maggie United States | Reply

12/26/2009 4:19:40 PM #

Madisyn

You had great positive ideas there. I did a search on the issue and found nearly all peoples will agree with your blog.

Madisyn United States | Reply

12/27/2009 8:28:26 PM #

Caiden

That is some inspirational stuff. Never knew that opinions could be this varied. Thanks for all the enthusiasm to offer such helpful information here.

Caiden United States | Reply

12/29/2009 8:00:51 PM #

Logan

Great detailed information, I ll be visiting you more frequently, here is very interesting information.

Logan United States | Reply

1/4/2010 4:39:33 PM #

Caitlin

I like your blog curently we are looking for a part time article writer would you be interested?

Caitlin United States | Reply

1/15/2010 8:30:52 PM #

Walter

You gave great points here. I made a research on the subject and found nearly all peoples will agree with your blog.

Walter United States | Reply

4/7/2010 8:24:18 AM #

Kris Wuensch

One of my friends already told me about this place and I do not regret that I found this article.

Kris Wuensch United States | Reply

4/8/2010 11:11:48 PM #

cheese balls recipe

It amazes me how infrequently this topic is discussed, and that finding the answer takes a lot of digging on Google.

cheese balls recipe People's Republic of China | Reply

4/9/2010 9:04:20 PM #

Julee Krantz

Took me time to read all the comments, but I really enjoyed the article. It proved to be Very helpful to me and I am sure to all the commenters here! It's always nice when you can not only be informed, but also entertained! I'm sure you had fun writing this article.

Julee Krantz People's Republic of China | Reply

4/19/2010 5:19:41 PM #

bicycle storage rack

c

bicycle storage rack United States | Reply

4/21/2010 9:44:52 PM #

outdoor step lighting

c

outdoor step lighting People's Republic of China | Reply

9/10/2011 12:40:39 PM #

Gay

Extraordinarily helpful many thanks, There's no doubt that your subscribers will probably want a lot more blog posts similar to this continue the good work.

Gay United States | Reply

9/17/2011 9:08:21 AM #

Angela

I must have seen hundreds but it deems me to say how informative your website is. Without a word of a lie I haven’t stumbled upon   well written articles along these lines keep up the great content.

Angela United States | Reply

11/7/2011 3:30:30 PM #

sejour Marrakech

Merely wanna input that you enjoy a same clean locale, I charity the intent furthermore fad it really stands external.

sejour Marrakech France | Reply

11/13/2011 2:45:10 PM #

Guide Marrakech

Enjoyed reading through this, very good stuff, thanks .

Guide Marrakech France | Reply

11/16/2011 6:10:32 AM #

credit immobilier au maroc

Too stimulating info !Unerring true what I was searching for!

credit immobilier au maroc France | Reply

12/19/2011 2:40:12 PM #

Garnett Lascola

Documentation les actus de mutuelle directeur g�n�ral de mutuelle la de mutuelle vous reconnecter.

Garnett Lascola France | Reply

Add comment


(Will show your Gravatar icon)

  Country flag

biuquote
Click to change captcha
  • Comment
  • Preview
Loading



Sandro Vecchiarelli

MeLaureato in Scienze dell'informazione a Pisa, si è occupato di analisi e progettazione software per istituti bancari e pubbliche amministrazioni, approfondendo inoltre gli aspetti della programmazione ad oggetti sin dai primi esordi del web in Italia. Certificato MCSE e MCT si occupa anche di elementi legati al networking e alla sicurezza. Svolge un' importante attività di docenza su argomenti riguardanti la piattaforma .NET, XML e Web services. E' autore di 2 corsi di successo: "Windows Server Security"(MIE1311), riguardante gli aspetti legati alla sicurezza della piattaforma Windows Server, e "Ingegneria del software: tecniche per la costruzione di software di qualità" (MIEAU36) dove vengono affrontate le tecniche per scrivere codice il più possibile robusto, riusabile e performante. Negli ultimi anni ha acquisito anche importanti competenze riguardanti prodotti molto complessi quali Microsoft Biztalk Server, oltre ad aver affrontato l'analisi e lo sviluppo di applicazioni in ambienti embedded quali Windows CE e Pocket PC. Nel 2008 è stato nominato MVP Microsoft Windows Mobile, riconfermato nel 2009, 2010 e 2011.

1 2 3 4 5 6 7 8

Tag cloud

Page List