W tym artykule wyjaśniono listę danych wyjściowych, które należy zgromadzić w przypadku podejrzenia wycieku pamięci.
Wyciek pamięci w większości przypadków jest procesem bardzo powolnym, a w takich przypadkach wymagana jest szczegółowa analiza dzienników.
Możemy wymagać wielu próbek danych wyjściowych do analizy i do zrozumienia, której części pamięci dotyczy problem.
Narzędzie do monitorowania pamięci
Narzędzie do monitorowania pamięci zostało włączone do wersji S4810, MXL i Z9000 9.1 (0.0P6+). To narzędzie rejestruje szczegółowe wykorzystanie alokacji danych, które są cenne przy rozwiązywaniu problemów z potencjalnymi wyciekami pamięci. Dostęp do narzędzia do monitorowania pamięci można uzyskać za pośrednictwem konsoli lub sesji telnet.
1. Włącz narzędzia do monitorowania pamięci
Aby uruchomić narzędzie do monitorowania pamięci.
Przykład użycia:
remote-exec cp f10mc -i 0x87
Przykład:
Polecenie:
Z9000#remote-exec cp f10mc -i 0x87
Odpowiedź systemu:
f10mc -i 0x87
f10mc: Initialized for malloc, pool, pool_cache, with filter for F10 allocations
SStk-0 #
2. Gromadzenie danych
2a: Gromadzenie okresowych ogólnych danych o pamięci
Gromadź dane okresowo (w interwałach od 4 do 6 godzin) każdego dnia przez kilka dni. Aby gromadzić dane wyjściowe, należy wykonać następujące polecenie. Następujące polecenie wyświetla ogólne informacje o pamięci systemu. Liczba cykli w danych wyjściowych będzie zwiększana o jeden za każdym razem, gdy dane są gromadzone.
Przykład użycia:
remote-exec cp f10mc -r 0
Przykład:
Polecenie:
Z9000#remote-exec cp f10mc –r 0
Odpowiedź systemu:
f10mc -r 0
{
----------------------
#### This cycle: 46176 bytes held by 56 allocations ####
M: 1888(16); +2329280(18371), -2329280(18371)
P: 0(0); +0(0), -0(0)
PC: 44288(40); +3053056(11226), -3053056(11226)
#### Since MCInit: 708902 bytes held by 2112 allocations ####
M: 52006(1338); +110122134(928732), -110070128(927394)
P: 0(0); +0(0), -0(0)
PC: 656896(774); +148369408(548411), -147712512(547637)
}
SStk-0 #
Następujące dane wyjściowe mogą być wymagane oprócz danych narzędzia do monitorowania pamięci.
Powiązane polecenia:
remote-exec cp top -b -o res all
remote-exec cp netstat –m
remote-exec cp vmstat –s
show process memory
show process memory management
show memory
show clock
2b: Gromadzenie szczegółowych danych pamięci
Po zakończeniu okresu gromadzenia dla polecenia „remote-exec cp f10mc –r 0” zostaną zażądane dane wyjściowa następującego polecenia. Następujące polecenie zapewni szczegółowe informacje o pamięci systemu.
Przykład użycia:
remote-exec cp f10mc -r 1
Przykład:
Polecenie:
Z9000#remote-exec cp f10mc -r 1
Odpowiedź systemu:
f10mc -r 1
{
PC:mbpl:0xC71F5200:256:3
PC:mclpl:0xD7C24800:2048:3
PC:mbpl:0xC71F3500:256:3
{dane wyjściowe obcięte}
PC:mbpl:0xCAFC7F00:256:2
PC:mclpl:0xD7C4D000:2048:2
----------------------
#### This cycle: 286144 bytes held by 266 allocations ####
M: 3520(16); +21362(417), -20514(415)
P: 0(0); +0(0), -0(0)
PC: 282624(250); +1129472(2200), -1126912(2197)
#### Since MCInit: 599392 bytes held by 542 allocations ####
M: 5216(20); +67838(1335), -62622(1315)
P: 0(0); +0(0), -0(0)
PC: 594176(522); +3513088(6660), -2918912(6138)
}
SStk-0 #
Inżynierowie dokonają oceny zgromadzonych danych i przekażą szczegółowe informacje na temat sposobu gromadzenia dalszych informacji, które pomogą zidentyfikować źródło wycieku pamięci. Dane wyjściowe będą zażądane dla podejrzanych alokacji pamięci:
Przykład użycia:
remote-exec cp f10mc –c 0x
Przykład:
Polecenie:
Z9000# remote-exec cp f10mc –c 0xCE0DDD00
Odpowiedź systemu:
f10mc -c 0xCE0DDD00
PC:mbpl:0xCE0DDD00:256:2> 0xC0100EAD 0xC033DA54 0xC0137ADE 0xC0136DD0 0xC0142682 0xC013FA17 0xC0148C38 0xC037C808 0xC037BE3F 0xC09B805A
call trace:
0xC0100EAD in Xsoftintr
0xC033DA54 in softint_dispatch
0xC0137ADE in ipintr
0xC0136DD0 in ip_input
0xC0142682 in tcp_input
0xC013FA17 in syn_cache_get
0xC0148C38 in tcp_template
0xC037C808 in m_gethdr
0xC037BE3F in m_get
0xC09B805A in f10MC_pool_cache_get_paddr
SStk-0 #
3: Wyłącz monitorowanie pamięci
Aby wyłączyć narzędzie do monitorowania pamięci po zakończeniu analizowania danych.
Przykład użycia:
remote-exec cp f10mc -i 0x0
Przykład:
Polecenie:
Z9000#remote-exec cp f10mc -i 0x0
Odpowiedź systemu:
f10mc -i 0x0
f10mc: deinitialized
SStk-0 #