Sto cercando di esaminare l'utilizzo della memoria di un grande server multi-thread. Secondo mallinfo(), ottengo arena=350M
e fordblks=290M
, il che suggerisce che gran parte dello spazio è effettivamente sprecato all'interno di malloc()
. La funzione malloc_info()
offre una buona struttura dati XML che dovrebbe essere auto-esplicativa. Ancora, qualcuno può spiegarmiGNU malloc_info(): ottiene una memoria veramente allocata?
- È heap
0
speciale? È l'arena principale in cui risiedono tutti gli altri? - Il blocco
<size from=.../>
è assegnato, libero/disponibile o entrambi? - Che cos'è l'elemento
<system>
? Memoria allocata usandommap()/sbrk()
? - Che cos'è l'elemento
<aspace>
? Memoria disponibile? - Che dire di
<aspace type="mprotect" .../>
?
Tanto per cominciare, mi piacerebbe essere in grado di tracciare la memoria totale stanziato l'applicazione, vale a dire, tutto allocato e non ancora liberato, secondo quanto malloc()
pensa.
Passando attraverso la fonte, ho capito che si può calcolare la quantità di memoria liberata e non ancora riutilizzata (disponibile) sommando tutti i campi 'totale' di tutti gli elementi' size' e 'non ordinati'. Questo risponde al mio secondo punto. –
Ulteriori analisi della fonte: ' ' è lo stesso del campo 'mallinfo()' 'arena'. –