To pytanie jest uzasadnione moim szokiem, gdy odkryłem, że jądro Mac OS X zużywa 750 MB pamięci RAM .
Używam Linuksa od 20 lat i zawsze „wiedziałem”, że użycie pamięci RAM jądra jest zmniejszone przez X (czy to prawda? Czy to kiedykolwiek prawda?).
Więc po jakimś googlowaniu spróbowałem, slabtop
co powiedziało mi:
Active / Total Size (% used) : 68112.73K / 72009.73K (94.6%)
Czy to oznacza, że moje jądro używa teraz ~ 72 MB pamięci RAM?
(Biorąc pod uwagę, że top
raporty zawierają Xorg
RSS jako 17M, jądro obecnie karła X, a nie na odwrót).
Jakie jest „normalne” użycie pamięci RAM (zakres) jądra dla laptopa?
Dlaczego MacOS używa o rząd wielkości więcej pamięci RAM niż Linux?
PS. Brak odpowiedzi tutaj dotyczy ostatniego pytania, więc proszę zobaczyć powiązane pytania:
echo 3 > /proc/sys/vm/drop_caches
, mam tylko 80 MB.Odpowiedzi:
Jądro jest trochę mylące. Jądro Linux składa się z kilku procesów / wątków + modułów (
lsmod
), więc aby uzyskać pełny obraz, musisz spojrzeć na całą piłkę, a nie tylko na jeden komponent.Nawiasem mówiąc, moje pokazy
slabtop
:Strona podręcznika man
slabtop
również miała następującą informację:Upuszczanie skrzynek
Upuszczenie moich pamięci podręcznych zgodnie z sugestią @derobert w komentarzach pod Twoim pytaniem ma dla mnie następujące znaczenie:
Wysłanie 3 wykonuje następujące czynności: darmowy pagecache, dentries i i-węzły. Omawiam to więcej w tym pytaniu U&L zatytułowanym: Czy istnieją sposoby lub narzędzia do zrzucania pamięci podręcznej i bufora pamięci? ". Więc 110 MB mojej przestrzeni zostało wykorzystane tylko przez utrzymanie informacji o pagecache, dentries i i-węzłach.
Dodatkowe informacje
slabtop
nieco więcej szczegółów. Nosi tytuł: Linux dnia: slabtop .Ile pamięci RAM używa moje jądro?
To zdjęcie jest dla mnie trochę bardziej zamglone, ale oto rzeczy, które „myślę”, że wiemy.
Płyta
Za pomocą tej techniki możemy uzyskać migawkę użycia płyty. Zasadniczo możemy wyciągnąć te informacje
/proc/meminfo
.Moduły
Możemy również uzyskać wartość rozmiaru dla modułów jądra (niejasne, czy jest to ich rozmiar na dysku, czy w pamięci RAM), pobierając te wartości z
/proc/modules
:Slabinfo
Wiele szczegółów na temat SLAB jest dostępnych w tej strukturze proc
/proc/slabinfo
:Dmesg
Po uruchomieniu systemu pojawia się wiersz, który informuje o zużyciu pamięci przez jądro Linuksa zaraz po załadowaniu.
Bibliografia
źródło
grep Slab /proc/meminfo
./proc/slabinfo
który wydaje się być źródłemslabtop
, więc można obliczyć kwoty stąd, aby uzyskać dokładniejszą całkowitą liczbę./proc/modules
większym prawdopodobieństwem załaduje rozmiar modułu do pamięci, ponieważ moduły na dysku są normalnie skompresowane (np. w Fedorze 27 to xz), sprawdziłemtg3
sterownik karty sieciowej, rozmiar na dysku (skompresowany lub oryginalny rozmiar pliku) nie pasuje do rozmiaru bajtu wyświetlanego w/proc/modules
.Co powiesz na to:
To na świeżo uruchomionej, bardzo małej maszynie bezgłowej z normalnym jądrem. Więc nie wymaga wiele.
Jak sugeruje derobert, jądro wykorzysta dostępną pamięć do buforowania i to wiele z tego, co widzisz
slabtop
. Oprócz pamięci podręcznej plików ma to związek z pamięcią współdzieloną z procesów przestrzeni użytkownika, która nie jest już używana. Jądro pozostawia je tam, dopóki znów nie będzie wymagane to samo, lub coś aktywnie potrzebuje pamięci RAM, w którym to przypadku zostanie zapomniane. Analogią byłoby zdejmowanie książki z półki i otwieranie jej do czytania na stole: kiedy skończysz czytać, możesz zostawić książkę otwartą na stole na wypadek, gdybyś musiał ponownie na nią spojrzeć.źródło
Na tym 512 GB pamięci RAM z systemem Solaris jądro używa 25 GB:
Ten mniejszy ma ponad połowę pamięci RAM używanej przez jądro:
Nie martw się, i tak nieużywana pamięć RAM to zmarnowana pamięć RAM.
źródło
echo ::memstat | mdb -k
na niektórych serwerach produkcyjnych Solaris 10, które poprzedzają aktualizację 10/09.