Pourquoi ai-je souvent cette erreur «Impossible d'allouer de la mémoire»?

29

J'utilise Ubuntu 12.10 avec Gnome-Classic. Je reçois cette erreur fréquemment et avec presque tous les programmes, grands et petits. Lorsque j'essaye de les ouvrir, ils ne démarrent pas, et à la place, j'obtiens un message d'erreur qui dit Could not launch 'Program' - Failed to fork child process (Cannot allocate memory). Ce ne fut un problème qu'au cours des dernières semaines.

impossible d'allouer de la mémoire

Je ne peux pas discerner de similitude entre les programmes qui provoquent cette erreur. Il semble que ce soit plus une question de temps. Après que mon ordinateur ait fonctionné pendant un certain temps, entre un jour et quelques jours, je n'arrive pas à démarrer de nouveaux programmes.

Le seul moyen que je connaisse pour éviter cette erreur est de redémarrer l'ordinateur.

Pourquoi est-ce que j'obtiens cette erreur et que dois-je faire pour empêcher qu'elle ne se produise?


J'ai exécuté le memtest disponible dans le menu GRUB, et il ne signale aucune erreur, donc je ne pense pas que ce soit une panne matérielle.

J'ai également couru sudo apt-get checket aucune erreur n'a été trouvée.

Voici une sortie de ligne de commande demandée:

$ 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

Il s'agit de la sortie de ps --sort -rss -eo rss,pid,command | headlorsque l'erreur commence à apparaître:

$ 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

Sur la base des suggestions dans les commentaires et réponses, il semble possible que le problème soit avec le panneau Gnome ou ses applets. Voici les applets que j'ai en cours d'exécution:

Applets de panneau

Les applets sont Indicator Applet 12.10.1, System Monitor 3.5.92et une "zone de notification". et "date et heure", pour lesquels je ne peux pas accéder au numéro de version.

Voici une sortie de ligne de commande plus demandée:

$ 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
Questionneur
la source
Ok, j'ai ajouté ma réponse ci-dessous avec quelques "prochaines étapes".
Leland Kristie
Combien de temps avez-vous couru memtest? Les erreurs n'apparaissent souvent que dans les tests ultérieurs.
guntbert
@guntbert: J'ai laissé memtestcourir jusqu'à ce qu'il y ait un message au bas de l'écran disant que tous les tests étaient terminés.
Interlocuteur le
Ok, j'ai encore une fois ajouté ma réponse ci-dessous avec quelques "prochaines étapes".
Leland Kristie
1
@AlistairBuxton: Hmmm ... après sept heures, avec l'applet heure / date de retour sur le panneau, il ne semble pas y avoir d'augmentation de mémoire. Cependant, une chose qui est différente, c'est qu'il n'y a pas d'affichage météo. Dans l'applet heure / date, il y a une option pour afficher la météo, mais même si je l'ai sélectionnée, aucune icône météo n'apparaît. Ce qui semble étrange et pourrait confirmer que le problème est spécifiquement lié aux fonctions météorologiques dans l'application heure / date / météo.
Interlocuteur le

Réponses:

33

Certains processus perdent de la mémoire. Pour avoir une idée de quel processus il s'agit, exécutez

ps --sort -rss -eo rss,pid,command | head
jdthood
la source
J'ai ajouté la sortie de la commande à ma question. J'ai capturé cette sortie après avoir commencé à obtenir l'erreur.
Interlocuteur le
Le problème réside probablement dans l'un des indicateurs les moins fréquemment utilisés que vous utilisez, par exemple, celui de gauche qui ressemble à une lame de scie circulaire ou l'indicateur météo. Supprimez chacun d'eux tour à tour pour voir si cela résout le problème.
jdthood
Il s'avère que c'était l'indicateur météo. Voir la propre réponse du PO.
jdthood
19

Je vous suggère de démarrer le processus de dépannage en testant la RAM avec l'utilitaire intégré fourni dans le menu de démarrage GRUB et en éliminant la "mauvaise RAM" comme source du problème.

Test de mémoire Test de mémoire

Memtest86 + Memtest86 +

Ensuite, vérifiez votre système pour les dépendances cassées à partir d'un terminal avec sudo apt-get check et, si des erreurs sont trouvées, réexécutez la commande en tant que sudo apt-get check -f pour essayer de les corriger.

Si vous le souhaitez, essayez ces étapes et rapportez ici les résultats.

Leland


Salut Dave,

Ok alors - nous avons exclu le matériel comme source du problème.

Ensuite, examinons l'utilisation de la mémoire et les paramètres de processus sur votre ordinateur; exécutez ces commandes à partir d'une invite de terminal:

Afficher la quantité de mémoire libre et utilisée

libre -m

Afficher le résumé d'utilisation du swap

swapon -s

Afficher les limites des ressources du processus utilisateur

ulimit -a

La capture d'écran ci-dessous provient d'une installation propre de 10.04LTS. Les détails à noter des premier et deuxième éléments entourés de jaune se trouvent dans la colonne "utilisé", qui affiche la mémoire et l'espace d'échange disponibles pour le système d'exploitation à utiliser, c'est-à-dire qu'ils ne sont pas tous épuisés.

L'élément entouré d'un cercle jaune n'affiche aucune limite sur le nombre de processus utilisateur, c'est-à-dire gFTP ou autre application par exemple, que le système d'exploitation permettra à l'utilisateur d'exécuter.

Si vous le souhaitez, essayez ces étapes et rapportez ici les résultats.

Leland

Utilisation de la mémoire et limites des ressources de processus


Salut Dave,

Les résultats renvoyés par ps --sort -rss -eo rss, pid, command | La tête que vous avez publiée montre le processus du panneau gnome utilisant environ 1,8 Go de mémoire, ce qui semble un peu inhabituel - cela semble être beaucoup de mémoire pour l'environnement de bureau à utiliser.

Vous pouvez obtenir une ventilation de la mémoire utilisée par le processus du panneau gnome en exécutant les commandes encerclées dans la capture d'écran ci-dessous et voir où tout va - cela peut révéler quelque chose qui se démarque.

À titre de comparaison, le processus de panneau gnome sur ma machine virtuelle utilise 48 Mo de RAM - accordé cependant, la machine 10.04 dans ces captures d'écran est une machine virtuelle que j'utilise uniquement pour les tests et non mon propre bureau.

pmap du processus de panneau gnome

Compte tenu de cela, je proposerai que la prochaine étape consiste à isoler le problème à "quelque chose" dans l'environnement de bureau Gnome.

Pour tester cela, essayez d'installer l'espace de travail plasma KDE que vous trouverez dans le Centre logiciel Ubuntu.

environnement de bureau kde-plasma

Une fois qu'il est installé, redémarrez votre ordinateur et connectez-vous avec une session KDE au lieu de Gnome, exécutez vos applications du mieux que vous pouvez (le bureau est complètement différent) pour voir si l'erreur "Impossible d'allouer de la mémoire" se répète ici.

Pour être clair, vous pourrez exécuter les mêmes "tests" CLI dans un environnement KDE que nous l'avons fait dans l'environnement Gnome et pourrez comparer les résultats en examinant le comportement de l'ordinateur entre les deux.

Dans KDE, l'application console que vous recherchez est xterm que vous pouvez trouver dans la boîte de dialogue Rechercher du menu principal.

xterm pid et pmap pour plasma-desktop

Je vais apporter un peu de confiance ici et dire que je pense que nous sommes collectivement sur la bonne voie pour isoler le problème.

Leland

Leland Kristie
la source
Merci d'avoir répondu. J'ai exécuté à la fois le memtest et les apt-getcommandes que vous avez suggérées, et les deux n'ont signalé aucune erreur. J'ai mis à jour ma question en conséquence.
Questionneur
J'ai ajouté à ma question la sortie des commandes que vous avez demandées. La seule chose que je note, c'est qu'en dessous, max user processeselle ne dit pas unlimitedcomme la vôtre. Le mien a le numéro 31421.
Interlocuteur le
1
Salut Dave, Une petite note pour vous faire savoir que je pourrai faire un suivi avec vous d'ici le week-end. Mon travail de jour m'occupe le soir et j'ai donc pensé que je vous laisserais simplement une note de courtoisie pour vous faire savoir que je n'ai pas disparu. Leland
Leland Kristie
Oh et au fait, j'ai essayé de changer le paramètre de processus utilisateur maximum jusqu'à 1024 et je n'ai pas pu reproduire l'erreur de cette façon ... pensais que je mentionnerais que j'ai essayé.
Leland Kristie
J'ai installé le bureau KDE, mais j'attends actuellement jusqu'à ce que je recommence à voir l'erreur, puis j'exécuterai la pmapcommande et publierai cette sortie ici. J'ai également fait une petite recherche et j'ai découvert qu'il y avait des mentions de fuites de mémoire dans gnome-panel, donc cela semble probablement suspect.
Questionneur
3

Après avoir essayé de l'avoir allumé et éteint au cours des deux derniers jours, je suis confiant de dire maintenant que le problème était une fuite de mémoire dans la partie des indicateurs météorologiques de l'applet d'heure et de date. Lorsque la météo s'affiche, l'utilisation de la mémoire augmente avec le temps. Lorsque le temps ne s'affiche pas, la mémoire n'augmente pas.

Je suppose que c'est un bug avec l'indicateur météo qui devrait être signalé, mais signaler des bugs sur Launchpad est un processus beaucoup trop compliqué pour moi.

Questionneur
la source
Ouvrez un terminal sur votre machine et exécutez "proportion-bug" qui sollicitera des informations et déposera le rapport de bogue pour vous.
jdthood
2
@jdthood: C'est la théorie de la facilité avec laquelle cela devrait être. La réalité est que le premier écran d'options ne décrit pas mon problème, et l'option «autre» me dit simplement que j'ai besoin d'un nom de package, puis se ferme. Similaire à cela .
Interlocuteur le
Ouvrez bugs.launchpad.net/ubuntu/+source/indicator-weather dans un navigateur, cliquez sur "Signaler un bug" et suivez les instructions. Une fois que vous connaissez le numéro attribué au rapport, exécutez «répart-collect <numéro de bogue>» pour télécharger les informations pertinentes sur la machine affectée.
jdthood
1

Si vous rencontrez ce problème en utilisant Ruby on Rails avec Digital Ocean, c'est probablement parce que vous avez trop peu de RAM. Essayez de faire passer la RAM de 512 Mo à 1 Go , ce qui l'a corrigé pour moi.

Glenn Dayton
la source