Co to znaczy, że pod koniec dnia pracy mam dużo „nieaktywnej” pamięci?

21

Po całym dniu pracy na moim MacBooku Pro z systemem Mac OS X 10.6.5, Monitor aktywności pokazuje, że większość 8 GB pamięci mojego komputera jest „Nieaktywna”, a tylko niewielki fragment wykresu kołowego jest „Wolny”. Dzieje się tak nawet wtedy, gdy zamknąłem wszystkie aplikacje, z uruchomioną tylko Finderem.

Co to znaczy? Czy pamięć „nieaktywna” jest przez coś przejmowana? Czy może jest nadal dostępny dla aplikacji? Dzięki.

hpy
źródło

Odpowiedzi:

27

OS X, podobnie jak większość nowoczesnych systemów operacyjnych, wykorzystuje system pamięci wirtualnej do zarządzania pamięcią. Między innymi pozwala to systemowi operacyjnemu traktować komputer jako posiadający nieograniczoną pulę pamięci. Aby to osiągnąć, system operacyjny wysyła nieużywane części pamięci RAM do magazynu dysków zwanego plikiem wymiany .

Oczywiście pamięć RAM nie jest nieograniczona, więc OS X grupuje pamięć RAM na cztery kategorie: przewodowa, aktywna, nieaktywna i bezpłatna. Pamięć przewodowa jest wymagana przez system operacyjny i nigdy nie może być stronicowana z pamięci. Pamięć aktywna to pamięć używana przez aktualnie uruchomione programy. Nieaktywna pamięć była ostatnio używana przez programy, które zostały zakończone (lub nie były nieużywane przez długi czas). Wolna pamięć to, jak sama nazwa wskazuje, pamięć RAM, która nie jest używana.

Po uruchomieniu program jest ładowany do aktywnej pamięci. Jednak po wyjściu z programu nie jest on usuwany z pamięci RAM; raczej wpada w nieaktywną pamięć. Dlatego często ponowne uruchomienie programu jest szybsze - wciąż jest w pamięci RAM (spróbuj tego z dużym programem, takim jak Firefox).

Po wykorzystaniu całej pamięci (wolna pamięć wynosi 0), system operacyjny wypisze nieaktywną pamięć do pliku wymiany, aby zrobić więcej miejsca w aktywnej pamięci.

Jeśli program zostanie przeniesiony na plik wymiany i ponownie go uruchomisz, zostanie on wyciągnięty z pliku wymiany do aktywnej pamięci.

Krótko mówiąc, tak naprawdę nie powinieneś się przejmować, czy wolna pamięć jest za mała. W rzeczywistości chcesz, aby była niska - wolna pamięć jest marnowaną pamięcią (ponieważ system operacyjny nie używa jej do niczego).

Podczas sprawdzania ilości pamięci używanej przez komputer, naprawdę chcesz zwrócić uwagę głównie na wykorzystaną funkcję wymiany , która określa rozmiar pliku wymiany pamięci wirtualnej, oraz informacje na temat stron , które informują, jak często system operacyjny musi pobierać pamięć z pliku wymiany w aktywną pamięć.

mipadi
źródło
2
Uważam, że wyjścia strony są lepszym wskaźnikiem wykorzystania zamiany niż wejścia strony, ponieważ wejścia strony obejmują ładowanie programów, a także ładowanie z pliku wymiany.
Gordon Davisson
1
W monitorze aktywności mój rozmiar maszyny wirtualnej wynosi ponad 160 GB! Czy na moim komputerze jest jakiś plik wymiany, który jest tak duży ?!
hpy
1
@penyuan: Nie. To teoretycznie, jak duży może być plik wymiany, ale rzeczywisty rozmiar pliku wymiany jest oznaczony jako Zamień używany w Monitorze aktywności.
mipadi
1
Nieaktywna pamięć jest częściowo taka, jak mówisz, chociaż konkretnie pamięć podręczna systemu plików lub bibliotek, do których aplikacja może uzyskać dostęp, ale także bloki pamięci z aktualnie uruchomionych aplikacji, które przydzieliły, ale nie uzyskały dostępu w pewnym okresie czasu (nie jestem pewien dokładnego czasu). Jądro oznacza je jako Nieaktywne , aby nadać im priorytet przy wysyłaniu na dysk, jeśli ilość wolnej pamięci spadnie zbyt nisko.
drfrogsplat
2
@deceze: Nieaktywna pamięć zostaje stronicowana. Aktywna pamięć zostaje przeniesiona do nieaktywnej, gdy nie jest już potrzebna. Przypuszczam, że jeśli masz tak mało pamięci, że nie ma miejsca na pamięć nieaktywną, pamięć aktywna zostałaby przywołana bezpośrednio na dysk, ale jest to szczególna okoliczność. Rzeczywiście, plik wymiany teoretycznie rośnie w nieskończoność (dopóki nie będzie już miejsca na dysku), ale to również jest niezwykle rzadkie zjawisko.
mipadi
9

Najprawdopodobniej nie stanowi to problemu, a w rzeczywistości może przyspieszyć działanie komputera.

Wszystkie (większość?) Systemy operacyjne wykorzystują pamięć podręczną dysku, która przechowuje niektóre ostatnio otwierane pliki w pamięci, aby można było przyspieszyć powtarzalny dostęp do tych plików. Pamięć podręczna dysku w systemie OS X ma zmienny rozmiar i będzie wyświetlana jako „Nieaktywna pamięć”.

Jeśli jakikolwiek program potrzebuje więcej pamięci, OS X wyczyści pamięć podręczną dysku (pliki ostatnio używane), aby zwolnić miejsce na uruchomienie / rozszerzenie programu.

Uważam, że jeśli wykonam dużo kompilacji lub sortowania zdjęć (tj. Uzyskuję dostęp do tysięcy plików po kolei), pamięć podręczna dysku powiększy się i zużyje dużo nieaktywnej pamięci. Pod warunkiem, że to właśnie ta pamięć podręczna dysku, nie ma się czym martwić.

Jeśli jest to proces działający w tle lub aplikacja, która zwiększa wykorzystanie pamięci (ale jej strony są oznaczane jako nieaktywne), będziesz mógł to stwierdzić, sprawdzając programy o bardzo wysokim zużyciu „pamięci rzeczywistej” w monitorze aktywności. Jeśli nie ma tam nic wyraźnie dużego (tj. Suma jest znacznie mniejsza niż 8 GB), to będzie pamięć podręczna plików.

Powinieneś zobaczyć, że użycie zamiany jest niewielkie, a jeśli otworzysz program intensywnie korzystający z pamięci, ilość nieaktywnej pamięci zmniejszy się bez konieczności zamiany na dysk.

(Wydaje mi się, że w 10.4 lub 10.5 był błąd, przez który nie zawsze bardzo skutecznie zwalniał tę pamięć i powodowałby zamianę pomimo posiadania dużej pamięci podręcznej dysku, ale z mojego doświadczenia wynika, że ​​jest to rozwiązane w 10.6).

drfrogsplat
źródło
Nieaktywna pamięć to tak naprawdę pamięć RAM, a nie pamięć stronicowana na dysk.
mipadi
3

Pamięć „nieaktywna” jest dostępna do użytku przez inne programy - to tylko buforowanie programów lub danych, których ostatnio używałeś, na wypadek, gdyby były potrzebne ponownie. Jeśli uruchomisz różne programy lub potrzebujesz różnych danych, pamięć podręczna zostanie wyczyszczona i udostępniona w razie potrzeby dla nowego obciążenia.

W każdym razie taka jest teoria i uważam, że to jest solidne. Jednak znalazłem to odniesienie do narzędzia „wyczyść”, które ktoś napisał, ponieważ nie sądził, że nieaktywna pamięć jest uwalniana wystarczająco szybko.

Aby uzyskać oficjalną dokumentację na ten temat, przeczytaj to (i wyszukaj „nieaktywne”).

Michael H.
źródło
Dla przypomnienia, mój MBP mówi obecnie: wolne 58 MB, przewodowe 239 MB, aktywne 1,84 GB, nieaktywne 900 MB - a system działa całkiem nieźle.
Michael H.
1
Uważam, że polecenie oczyszczenia zostało wysłane przez boga. Posiadanie Photoshop + Firefox + Illustrator + Netbean + SmartGit może łatwo spowodować, że iMac 4Gb zaindeksuje na śmierć. Oczywiście, Firefox jest głównym winowajcą, ale jeśli chcesz nieco przyspieszyć, zamknij Firefoksa i ponownie wydaj polecenie „oczyść” i „Dobry jak nowy”
Antony
2
Strona podręcznika Purge faktycznie mówi, że została napisana tylko do opróżniania pamięci podręcznej dysku (nie anonimowej pamięci: stosu, sterty lub kopiowania podczas zapisu) w celu analizy wydajności (właśnie dlatego, że pamięć podręczna dysku przyspiesza system). Nie został napisany w celu szybszego wydania, ponieważ jego wykonanie jest wolniejsze niż jądro, które w razie potrzeby dynamicznie odzyskuje pamięć. Zamknięcie aplikacji całkowicie usuwa wszystkie przydzielone memy, a po wyczyszczeniu powoduje to wolniejsze ładowanie aplikacji, zobacz linuxatemyram.com/play.html . Myślę, że w oczyszczaniu jest coś psychologicznego, podobnie jak kompulsywne opróżnianie śmieci.
Jano,
1

Począwszy od systemu OS X 10.5 występują oczywiste problemy z zarządzaniem pamięcią w systemie MAC OS X.

W końcu udało mi się odtworzyć problematyczny scenariusz, więc uruchomiłem test i nagrałem ekran na wideo.

Problem z wydajnością MAC OS X Lion - zepsute zarządzanie pamięcią

Uruchamiam komendę tar + bzip, która jest podstawową rzeczą uniksową, na dużej liczbie plików obrazów w moim folderze Pictures /. Tuż przed uruchomieniem uruchamiam polecenie „purge”, aby usunąć nieaktywne / buforowane dane programu.

Na filmie widać, że wolna pamięć zaczyna spadać bardzo szybko, a nieaktywność stale rośnie. Jeśli spojrzysz na polecenie „bsdtar”, zajmuje to tylko fragment pamięci RAM, więc problem nie występuje w tym procesie. Nie można powiedzieć, że jest to wyciek pamięci programu, ponieważ wtedy problemem nie byłby nieaktywny RAM, a raczej aktywny / przewodowy.

Gdy wolna pamięć spadła poniżej 100 MB, uruchomiłem niektóre aplikacje, takie jak Safari, iPhoto i MS Word, i widać na filmie, że uruchomienie aplikacji zajmuje nawet minuty, gdy normalnie (gdy jest wolna pamięć RAM), to ładowanie zajmie około 3-5 sekund.

W moim Linux Centos 6 uruchamiam ten sam scenariusz i te same polecenia, nie ma problemu! Zużycie pamięci wynosi około 10-20 MB, bez problemów z pamięcią podręczną / buforem.

Zarządzanie pamięcią musi być bardzo zepsute w Mac OS X!

egremyl
źródło
1
Część tego, co opisujesz, może stanowić podstawę innego pytania, ale nie jest to odpowiedź na to pytanie.
Graham Perrin
2
Powiedziałbym, że twój opis wolnej pamięci gwałtownie spada do wartości zadanej, a system gromadzący resztę nieaktywnej i przewodowej pamięci RAM jako nieaktywny wskazuje, że system działa dokładnie tak, jak został zaprojektowany. To, że zarządzanie pamięcią różni się w zależności od systemu operacyjnego, nie oznacza, że ​​jest zepsute. Opcje optymalizacji zawsze mają swoje wady.
bmike
0

Ta dyskusja ma sens tylko wtedy, gdy stwierdzenie, że „komputer będzie działał szybciej, gdy ilość wolnej pamięci będzie niska” - była prawdziwa. O ile mój komputer stacjonarny Mac nie jest dziwnie okablowany, w chwili, gdy moja wolna pamięć (monitorowana) zacznie się wyczerpywać, dowolny program, który uruchomię w tym czasie, zaczyna spadać do punktu, w którym nie mogę nic zrobić, dopóki sam się nie wróci lub przez moją interwencję Wolnej Pamięci. Mam iMaca 2118 (2006 lub nowszy), który ma maksymalnie 3 GB pamięci RAM, więc staram się nim zarządzać, kiedy tylko mogę, ale jest to bardzo frustrujące. jakieś pomysły?

webbglider
źródło