Dlaczego często pojawia się błąd „Nie można przydzielić pamięci”?

29

Używam Ubuntu 12.10 z Gnome-Classic. Ten błąd pojawia się często i prawie we wszystkich programach, dużych i małych. Kiedy próbuję je otworzyć, nie uruchamiają się, a zamiast tego pojawia się komunikat o błędzie Could not launch 'Program' - Failed to fork child process (Cannot allocate memory). To nie był problem, dopóki w ciągu ostatnich kilku tygodni.

Nie można przydzielić pamięci

Nie widzę podobieństwa między programami, które powodują ten błąd. Wydaje się, że to bardziej kwestia czasu. Po pewnym czasie działania komputera, od jednego dnia do kilku dni, nie mogę uruchomić żadnych nowych programów.

Jedynym sposobem, jaki znam, aby zapobiec temu błędowi, jest ponowne uruchomienie komputera.

Dlaczego dostaję ten błąd i co mam zrobić, aby go nie dopuścić?


Uruchomiłem memtest dostępny z menu GRUB i nie zgłasza on żadnych błędów, więc nie sądzę, aby była to awaria sprzętowa.

Uruchomiłem też sudo apt-get checki nie znaleziono błędów.

Oto niektóre dane wyjściowe wiersza polecenia:

$ free -m
             total       used       free     shared    buffers     cached
Mem:          3945       3753        191          0        181        475
-/+ buffers/cache:       3096        848
Swap:         3813         60       3753

$ swapon -s
Filename                Type        Size    Used    Priority
/dev/sda6                               partition   3905532 61648   -1

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31421
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 31421
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

To jest wynik ps --sort -rss -eo rss,pid,command | headpo pojawieniu się błędu:

$ ps --sort -rss -eo rss,pid,command | head
  RSS   PID COMMAND
1963400 2953 gnome-panel
155496 4029 banshee /usr/lib/banshee/Banshee.exe --redirect-log --play-enqueued
104944 15765 /opt/google/chrome/chrome --type=renderer --lang=en-US --force-fieldtrials=ForceCompositingMode/disable/GlobalSdch/global_enable_sdch/InfiniteCache/No/OmniboxDisallowInlineHQP/Standard/OmniboxHUPCreateShorterMatch/Standard/OmniboxHUPCullRedirects/Standard/OmniboxSearchSuggestTrialStarted2012Q4/2/OneClickSignIn/Standard/Prerender/PrerenderEnabled/SBInterstitial/V2/SpdyCwnd/cwndMin10/SpeculativePrefetching/Disabled/Test0PercentDefault/group_01/UMA-Dynamic-Binary-Uniformity-Trial/default/UMA-Session-Randomized-Uniformity-Trial-5-Percent/default/UMA-Uniformity-Trial-1-Percent/group_09/UMA-Uniformity-Trial-10-Percent/group_08/UMA-Uniformity-Trial-20-Percent/group_03/UMA-Uniformity-Trial-5-Percent/group_06/UMA-Uniformity-Trial-50-Percent/group_01/WarmSocketImpact/last_accessed_socket/ --enable-crash-reporter=ECE9000094D279FD3B14B35A74BF72CC,Ubuntu 12.10 --renderer-print-preview --disable-accelerated-2d-canvas --disable-accelerated-video-decode --channel=15654.5.89177240
78164 15654 /opt/google/chrome/chrome       
74912 19890 /usr/bin/python /usr/share/oneconf/oneconf-service
65476 12419 /usr/bin/perl /usr/bin/shutter
61096 19626 /usr/bin/python3.2 /usr/sbin/aptd
57832 15708 /opt/google/chrome/chrome --type=renderer --lang=en-US --force-fieldtrials=ForceCompositingMode/disable/GlobalSdch/global_enable_sdch/InfiniteCache/No/OmniboxDisallowInlineHQP/Standard/OmniboxHUPCreateShorterMatch/Standard/OmniboxHUPCullRedirects/Standard/OmniboxSearchSuggestTrialStarted2012Q4/2/OneClickSignIn/Standard/Prerender/PrerenderEnabled/SBInterstitial/V2/SpdyCwnd/cwndMin10/SpeculativePrefetching/Disabled/Test0PercentDefault/group_01/UMA-Dynamic-Binary-Uniformity-Trial/default/UMA-Session-Randomized-Uniformity-Trial-5-Percent/default/UMA-Uniformity-Trial-1-Percent/group_09/UMA-Uniformity-Trial-10-Percent/group_08/UMA-Uniformity-Trial-20-Percent/group_03/UMA-Uniformity-Trial-5-Percent/group_06/UMA-Uniformity-Trial-50-Percent/group_01/WarmSocketImpact/last_accessed_socket/ --enable-crash-reporter=ECE9000094D279FD3B14B35A74BF72CC,Ubuntu 12.10 --extension-process --renderer-print-preview --disable-accelerated-2d-canvas --disable-accelerated-video-decode --channel=15654.2.1555888673
42108  3030 /var/lib/dropbox/.dropbox-dist/dropbox

Na podstawie sugestii w komentarzach i odpowiedziach wydaje się, że problem może dotyczyć panelu Gnome lub jego apletów. Oto aplety, które mam uruchomione:

Aplety panelu

Aplety są Indicator Applet 12.10.1, System Monitor 3.5.92i „powiadomienie Area”. oraz „data i godzina”, dla których nie mam dostępu do numeru wersji.

Oto kilka bardziej pożądanych danych wyjściowych z wiersza poleceń:

$ df -h
Filesystem                             Size  Used Avail Use% Mounted on
/dev/sda5                               19G   12G  6.4G  64% /
udev                                   2.0G  4.0K  2.0G   1% /dev
tmpfs                                  790M  1.1M  789M   1% /run
none                                   5.0M     0  5.0M   0% /run/lock
none                                   2.0G   84K  2.0G   1% /run/shm
none                                   100M     0  100M   0% /run/user
/dev/sda7                              384G  306G   59G  84% /home
[email protected]:/home/mythbuntu  437G  360G   55G  87% /home/dave/Mythbuntu
$ sudo du -csh /var/log
15M /var/log
15M total
Indagator
źródło
Ok, dołączyłem swoją odpowiedź poniżej z kilkoma „następnymi krokami”.
Leland Kristie
Jak długo biegałeś memtest? Błędy często pojawiają się tylko w późniejszych testach.
guntbert
@guntbert: Pozwoliłem memtesturuchomić, dopóki na dole ekranu nie pojawił się komunikat, że wszystkie testy zostały zakończone.
PYTAJĄCY
Ok, po raz kolejny dołączyłem swoją odpowiedź z kilkoma „kolejnymi krokami”.
Leland Kristie
1
@AlistairBuxton: Hmmm ... po siedmiu godzinach, z apletem godziny / daty z powrotem na panelu, wydaje się, że nie ma więcej pamięci. Jedną rzeczą, która się różni, jest brak wyświetlania pogody. W aplecie czas / data istnieje opcja wyświetlania pogody, ale mimo że ją wybrałem, nie pojawia się ikona pogody. Co wydaje się dziwne i może potwierdzać, że problem jest konkretnie związany z funkcjami pogodowymi w aplikacji czas / data / pogoda.
PYTAJĄCY

Odpowiedzi:

33

Niektóre procesy przeciekają pamięć. Aby dowiedzieć się, jaki to może być proces, uruchom

ps --sort -rss -eo rss,pid,command | head
jdthood
źródło
Dodałem wynik do polecenia do mojego pytania. Przechwyciłem ten wynik, gdy zacząłem otrzymywać błąd.
PYTAJĄCY
Najprawdopodobniej problem leży w jednym z rzadziej używanych wskaźników, np. Albo po lewej, który wygląda jak tarcza piły, lub wskaźnik pogody. Usuń kolejno każdy z nich, aby sprawdzić, czy to rozwiąże problem.
jdthood
Okazuje się, że był to wskaźnik pogody. Zobacz własną odpowiedź PO.
jdthood,
19

Sugeruję rozpoczęcie procesu rozwiązywania problemów od przetestowania pamięci RAM za pomocą wbudowanego narzędzia dostępnego w menu rozruchowym GRUB i wyeliminowania „złej pamięci RAM” jako źródła problemu.

Test pamięci Test pamięci

Memtest86 + Memtest86 +

Następnie sprawdź system pod kątem przerwanych zależności z terminala za pomocą sudo apt-get check, a jeśli wystąpią błędy, uruchom ponownie polecenie sudo apt-get check -f, aby spróbować je poprawić.

Jeśli chcesz, wypróbuj te kroki i zgłoś tutaj wszelkie wyniki.

Leland


Cześć dave,

Ok, więc - wykluczyliśmy sprzęt jako źródło problemu.

Następnie sprawdźmy użycie pamięci i ustawienia procesów na twoim komputerze; uruchom następujące polecenia z wiersza polecenia:

Wyświetla ilość wolnej i zużytej pamięci

wolny -m

Wyświetl podsumowanie użycia wymiany

swapon -s

Wyświetl limity zasobów procesu użytkownika

ulimit -a

Poniższy zrzut ekranu pochodzi z czystej instalacji 10.04LTS. Dane szczegółowe, które należy zanotować z pierwszego i drugiego żółtego okręgu, znajdują się w kolumnie „używane”, która wyświetla pamięć i przestrzeń wymiany dostępną dla systemu operacyjnego, tzn. Nie wszystkie są zużyte.

Dolny żółty element w kółku nie wyświetla żadnych ograniczeń liczby procesów użytkownika, np. GFTP lub innej aplikacji, na przykład, że system operacyjny pozwoli użytkownikowi na uruchomienie.

Jeśli chcesz, wypróbuj te kroki i zgłoś tutaj wszelkie wyniki.

Leland

Zużycie pamięci i limity zasobów procesowych


Cześć dave,

Wyniki zwrócone z ps --sort -rss -eo rss, pid, command | głowa, którą napisałeś, pokazuje proces panelu gnome z wykorzystaniem około 1,8 GB pamięci, co wydaje się trochę niezwykłe - wydaje się, że jest to dużo pamięci dla środowiska Desktop.

Możesz uzyskać podział pamięci, z którego korzysta proces panelu gnome, uruchamiając kółko na poniższym zrzucie ekranu i sprawdzając, dokąd to wszystko zmierza - co może ujawnić coś, co się wyróżnia.

Dla porównania, proces panelu gnome na mojej maszynie wirtualnej zużywa 48 MB pamięci RAM - oczywiście, maszyna 10.04 na tych zrzutach ekranu jest maszyną wirtualną, której używam tylko do testów, a nie na własnym pulpicie.

pmap z procesu gnome-panel

Biorąc to pod uwagę, przedstawię następny krok, aby wyizolować problem z „czymś” w środowisku graficznym Gnome.

Aby to przetestować, spróbuj zainstalować obszar roboczy plazmy KDE, który znajdziesz w Centrum oprogramowania Ubuntu.

środowisko pulpitu kde-plazma

Po zainstalowaniu uruchom ponownie komputer i zaloguj się za pomocą sesji KDE zamiast Gnome, uruchom aplikacje najlepiej, jak potrafisz (pulpit jest zupełnie inny), aby sprawdzić, czy błąd „Nie można przydzielić pamięci” powtarza się tutaj.

Mówiąc wprost, będziesz w stanie uruchomić te same „testy” CLI w środowisku KDE, jak w środowisku Gnome, i będziesz w stanie porównać wyniki w badaniu zachowania komputera między nimi.

W KDE aplikacją konsolową, której szukasz, jest xterm, który możesz znaleźć w oknie dialogowym Szukaj w menu głównym.

xterm pid i pmap dla komputera plazmowego

Zamierzam tu dodać trochę pewności siebie i powiedzieć, że myślę, że wspólnie jesteśmy na dobrej drodze do izolacji problemu.

Leland

Leland Kristie
źródło
Dziękuję za odpowiedź. Uruchomiłem zarówno memtest, jak i apt-getpolecenia, które zasugerowałeś, i oba nie zgłosiły błędów. Zaktualizowałem odpowiednio moje pytanie.
PYTAJĄCY
Do mojego pytania dołączyłem wynik żądanych poleceń. Jedyne, co zauważam, to to, że pod max user processestym nie mówi się unlimitedtak , jak twoje. Mój ma numer 31421.
PYTAJĄCY
1
Cześć Dave, Krótka notatka informująca, że ​​będę w stanie ponownie skontaktować się z Tobą do weekendu. Moja codzienna praca sprawia, że ​​jestem zajęty wieczorami, więc pomyślałem, że po prostu wyślę ci uprzejmą notatkę, aby poinformować cię, że nie zniknąłem. Leland
Leland Kristie
A tak przy okazji, próbowałem zmienić maksymalne ustawienia procesów użytkownika aż do 1024 i nie byłem w stanie odtworzyć błędu w ten sposób ... pomyślałem, że wspomnę, że próbowałem tego.
Leland Kristie
Zainstalowałem pulpit KDE, ale obecnie czekam, aż znów zobaczę błąd, a następnie uruchomię pmappolecenie i opublikuję to wyjście tutaj. Przeszukałem też trochę i odkryłem, że w panelu gnome są wzmianki o wyciekach pamięci, więc wydaje się, że to podejrzane.
PYTAJĄCY
3

Po eksperymentach z włączaniem i wyłączaniem w ciągu ostatnich kilku dni, jestem pewny, że teraz mówię, że problemem był wyciek pamięci w części pogodowej apletu czasu i daty. Gdy wyświetla się pogoda, zużycie pamięci wzrasta z czasem. Gdy pogoda nie wyświetla się, pamięć się nie zwiększa.

Sądzę, że to błąd związany ze wskaźnikiem pogody, który powinien zostać zgłoszony, ale zgłaszanie błędów na Launchpadzie jest dla mnie zbyt skomplikowanym procesem.

Indagator
źródło
Otwórz terminal na swoim komputerze i uruchom „apport-bug”, który zbierze informacje i prześle raport o błędzie.
jdthood,
2
@jdthood: To teoria tego, jak łatwo powinno być. Rzeczywistość jest taka, że ​​pierwszy ekran opcji nie opisuje mojego problemu, a opcja „inne” mówi mi, że potrzebuję nazwy pakietu, a następnie kończy pracę. Podobne do tego .
PYTAJĄCY
Otwórz bugs.launchpad.net/ubuntu/+source/indicator-weather w przeglądarce, kliknij „Zgłoś błąd” i postępuj zgodnie ze wskazówkami. Gdy znasz numer przypisany do raportu, uruchom polecenie „apport-collect <bugnumber>”, aby przesłać odpowiednie informacje o zaatakowanym komputerze.
jdthood
1

Jeśli masz problem z korzystaniem z Ruby on Rails z Digital Ocean , prawdopodobnie jest tak, ponieważ masz za mało pamięci RAM. Spróbuj zwiększyć ilość pamięci RAM z 512 MB na 1 GB , co mnie naprawiło.

Glenn Dayton
źródło