Próbuję sprawdzić wykorzystanie pamięci dużego serwera wielowątkowego. Według mallinfo(), otrzymuję arena=350M
i fordblks=290M
, co sugeruje, że większość przestrzeni jest faktycznie marnowana wewnątrz malloc()
. Funkcja malloc_info()
zapewnia ładną strukturę danych XML, która powinna być zrozumiała. Mimo to, czy ktoś może mi wytłumaczyć, żeGNU malloc_info(): uzyskać naprawdę przydzieloną pamięć?
- Czy sterty
0
są specjalne? Czy to jest główna arena, na której rezydują wszyscy inni? - Czy przydział jest przydzielany jako wolny, dostępny czy oba?
- Co to jest element
<system>
? Pamięć przydzielona przy użyciummap()/sbrk()
? - Co to jest element
<aspace>
? Dostępna pamięć? - Co z numerem
<aspace type="mprotect" .../>
?
Tylko na początku, chciałbym móc wykreślić całkowitej pamięci przydzielonej przez aplikację, to znaczy wszystko i nie przydzielono jeszcze uwolniony, zgodnie z tym co malloc()
myśli.
Przechodząc przez źródło, doszedłem do wniosku, że można obliczyć ilość uwolnionej i jeszcze nie wykorzystanej pamięci (dostępnej), sumując wszystkie pola "total" wszystkich elementów "size" i "unordered". To odpowiada na mój drugi punkt. –
Więcej analizy źródła: ' ' jest taki sam jak pole 'mallinfo()' 'arena'. –