2009-05-28 29 views
5

Come si calcola la larghezza di banda della memoria (RAM) utilizzata? Quali contatori di prestazioni sono richiesti?Utilizzo della larghezza di banda di memoria

Mi sono imbattuto in uno strumento che era in grado di farlo, il "Test di memoria multi-thread di segno di destra". Ma a differenza del resto dei test di Rightmark, non ho trovato il codice sorgente per questo, solo i binari

+0

Perché è codificato come C#, C++ e c? – unwind

risposta

1

È molto difficile calcolare l'utilizzo della larghezza di banda della memoria. Ci sono molti problemi di cache e MMU non banali da affrontare. L'unico vero modo per farlo è attraverso l'uso di simulazioni o misurazioni del mondo reale.

È possibile ottenere un'idea "approssimativa" eseguendo il debug del codice e contando il numero di carichi di memoria e le operazioni di memorizzazione eseguite. Tuttavia, sapere se si tratta di un cache hit/miss è un altro problema.

Dipende dal tuo scopo. Se si desidera ottenere una stima approssimativa, è possibile utilizzare la regola generale che circa il 30% del codice di uso generale è carico di memoria e negozi. Se stai cercando di ottenere il caso peggiore, puoi supporre che i cache perdano tutto il tempo e risolvono il problema.

Una potenziale cosa che potresti fare è guardare alla virtualizzazione. Ci sono diverse opzioni open source (mi viene in mente QEMU). Potrebbe essere possibile esportare determinate misure hardware da loro.

1

Per coincidenza, l'articolo CLR Inside Out del numero di giugno di MSDN Magazine riguarda la profilazione dell'utilizzo della memoria nelle applicazioni .NET.

http://msdn.microsoft.com/en-us/magazine/dd882521.aspx

+1

Ma la domanda riguardava/larghezza di banda/(nel senso della velocità di trasferimento dei dati), non il consumo di memoria. – Frank

1

Se il codice può essere eseguito su Linux, usare Cachegrind:

Cachegrind è un profiler cache. Lo strumento esegue una simulazione dettagliata delle cache I1, D1 e L2 nella CPU e così può individuare con precisione le fonti di errori di cache nel codice. Lo standard identifica il numero di mancate cache, i riferimenti di memoria e le istruzioni eseguite per ogni riga del codice sorgente, con riepilogo per programmi, per modulo e per interi programmi. È utile con programmi scritti in qualsiasi lingua. Cachegrind esegue programmi su 20--100x più lenti del normale.

È possibile utilizzare lo KCacheGrind GUI.

Problemi correlati