Rozwiązanie społecznościowe

ZimaOS 1.6: wysokie zużycie pamięci — znajdź prawdziwego konsumenta

An 8 GB ZimaOS system showed higher memory use after the 1.6 beta and still looked high after upgrading to the stable release.

Podsumowanie: „ZimaOS zużywa więcej pamięci RAM po wersji 1.6” to zbyt mało precyzyjne stwierdzenie — znajdź proces lub kontener

System z 8 GB pamięci nadal wykazywał wysokie zużycie pamięci po przejściu z wersji 1.6.0-beta2 na wydanie stabilne. Wyklucza to proste wyjaśnienie, że chodziło wyłącznie o narzut wersji beta. Kolejnym przydatnym krokiem jest ustalenie źródła: który kontener, pamięć podręczna lub proces systemu głównego zajmuje pamięć oraz czy system rzeczywiście jest przeciążony.

wynik polecenia docker stats przedstawiający zużycie pamięci przez Paperless, Immich, Dockhand i inne kontenery ZimaOS
Drugi zrzut ekranu rozbija całkowite zużycie pamięci na poszczególne kontenery, co daje więcej praktycznych informacji niż sam procent wyświetlany w panelu.

Zacznij od dostępnej pamięci, a nie tylko od wartości procentowej w panelu

free -h
docker stats --no-stream
ps aux --sort=-%mem | head -20
dmesg | grep -i -E 'oom|out of memory'

Linux wykorzystuje nieużywaną pamięć RAM jako pamięć podręczną. Wysoka wartość „used” przy prawidłowej ilości pamięci available i braku presji związanej z OOM lub pamięcią wymiany różni się od wycieku. Rozliczanie pamięci w systemie Linux jest dokumentacją referencyjną projektu nadrzędnego.

Sumy dla kontenerów wyjaśniają tylko część zużycia hosta

Na zrzucie ekranu widać kilka kontenerów zużywających po setki megabajtów, ale ich suma nie musi odpowiadać całkowitemu zużyciu pamięci hosta. Statystyki pamięci Dockera, pamięć podręczna jądra, pamięć stron oraz usługi spoza kontenerów są rozliczane w osobnych warstwach. Dokumentacja statystyk kontenerów Dockera wyjaśnia widok dotyczący kontenerów.

Nie zakładaj, że stabilna wersja 1.6.0 zawierała ogólną poprawkę wycieku pamięci

Aktualne informacje o wydaniu 1.6.0 wymieniają poprawki dotyczące pamięci masowej, uruchamiania Dockera, plików i sieci, ale nie opisują ogólnej poprawki wycieku pamięci. Dlatego aktualna diagnoza powinna opierać się na dowodach, zamiast zakładać, że „aktualizacja rozwiązuje problem”.

Zmiany w ZimaOS 1.6 przedstawiają aktualny kontekst wydania.

Co można uznać za rzeczywisty wyciek

Obserwuj ten sam proces przez kilka godzin. Wyciek jest bardziej prawdopodobny, gdy zużycie pamięci przez jeden proces rośnie monotonicznie, ilość dostępnej pamięci maleje, rośnie użycie pamięci wymiany lub jądro zaczyna kończyć procesy. Jeśli zużycie pamięci stabilizuje się, a system pozostaje responsywny, może to po prostu oznaczać większy stabilny zestaw roboczy.

Wymagania aplikacji ZimaOS pomagają ustalić, czy zestaw zainstalowanych aplikacji nie jest po prostu zbyt duży dla hosta z 8 GB pamięci.