web-dev-qa-db-fra.com

Pourquoi ai-je souvent le message d'erreur "Impossible d'allouer de la mémoire"?

J'utilise Ubuntu 12.10 avec Gnome-Classic. Je reçois souvent cette erreur et avec presque tous les programmes, petits et grands. Lorsque j'essaie de les ouvrir, ils ne démarrent pas et un message d'erreur indiquant Could not launch 'Program' - Failed to fork child process (Cannot allocate memory) s'affiche à la place. Ce n'était pas un problème jusqu'à ces dernières semaines.

cannot allocate memory

Je ne peux pas discerner de points communs entre les programmes qui causent cette erreur. Cela semble être plus une question de temps. Une fois que mon ordinateur est en marche depuis un certain temps, d'une journée à quelques jours, je n'arrive pas à démarrer de nouveaux programmes.

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

Pourquoi ai-je cette erreur et que dois-je faire pour que cela ne se produise plus?


J'ai lancé le memtest disponible à partir du menu GRUB, et il ne signale aucune erreur. Je ne pense donc pas qu'il s'agisse d'une défaillance matérielle.

J'ai également exécuté Sudo apt-get check et aucune erreur n'a été trouvée.

Voici quelques résultats demandés en ligne de commande:

$ 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

Voici le résultat de ps --sort -rss -eo rss,pid,command | head après l'apparition de l'erreur:

$ 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 figurant dans les commentaires et les réponses, il semble possible que le problème concerne le panneau Gnome ou ses applets. Voici les applets que j'ai en cours d'exécution:

Panel applets

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

Voici quelques résultats de plus en ligne de commande:

$ 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
29
Questioner

Après avoir essayé de l'utiliser de temps en temps au cours des deux derniers jours, je suis convaincu que le problème était une fuite de mémoire dans la partie de l'indicateur météorologique de l'applet heure et date. Lorsque la météo est affichée, 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 bogue lié à l’indicateur météo qui devrait être signalé, mais le fait de signaler des bogues sur Launchpad est un processus beaucoup trop compliqué pour moi.

3
Questioner

Certains processus perd de la mémoire. Pour avoir une idée du processus, lancez

ps --sort -rss -eo rss,pid,command | head
33
jdthood

Je vous suggère de commencer le processus de dépannage en testant le RAM à l'aide de l'utilitaire intégré fourni dans le menu de démarrage GRUB et en éliminant le problème de la mémoire RAM défectueuse.

test de mémoire Memory test

Memtest86 + Memtest86+

Ensuite, recherchez dans votre système les dépendances brisées d'un terminal avec Sudo apt-get check et, si des erreurs sont détectées, réexécutez la commande sous la forme Sudo apt-get check -f pour essayer de les corriger.

Si vous le souhaitez, essayez ces étapes et faites un rapport ici avec tous les résultats.

Leland


Salut Dave,

Ok, alors - nous avons exclu le matériel en tant que 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:

quantité affichée de mémoire libre et utilisée

gratuit -m

Afficher le résumé de l'utilisation de l'échange

swapon -s

Affiche 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 en jaune se trouvent dans la colonne "utilisé", qui affiche la mémoire et l’espace de permutation disponibles pour le système d’exploitation, c’est-à-dire qu’ils ne sont pas tous utilisés.

L'élément entouré en jaune dans le bas n'affiche aucune limite sur le nombre de processus utilisateur, par exemple gFTP ou une autre application, par exemple, que le système d'exploitation permettra à l'utilisateur de lancer.

Si vous le souhaitez, essayez ces étapes et faites un rapport ici avec tous les résultats.

Leland

Memory usage and process resource limits


Salut Dave,

Les résultats renvoyés par ps --sort -rss -eo rss, pid, command | head que vous avez posté montre que le processus gnome-panel utilise environ 1,8 Go de mémoire, ce qui semble un peu inhabituel - cela semble être une grande quantité de mémoire utilisée par l'environnement de bureau.

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

À titre de comparaison, le processus de gnome-panel sur ma machine virtuelle utilise 48 Mo de RAM - bien que la machine 10.04 de ces machines screenshots est une machine virtuelle que j'utilise uniquement pour des tests et non pour mon propre bureau.

pmap from gnome-panel process

Cela étant dit, la prochaine étape consiste à isoler le problème en "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.

kde-plasma desktop environment

Une fois installé, redémarrez votre ordinateur et connectez-vous avec une session KDE au lieu de Gnome, lancez 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 que tout soit bien clair, vous pourrez exécuter les mêmes "tests" CLI dans un environnement KDE que dans l'environnement Gnome et pouvoir comparer les résultats en examinant le comportement de l'ordinateur entre les deux.

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

xterm pid and pmap for plasma-desktop

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

Leland

19
Leland Kristie

Si vous rencontrez ce problème en utilisant Ruby sur Rails avec Digital Ocean, c'est probablement parce que vous avez trop peu de RAM. Essayez d'augmenter le RAM de 512 Mo à 1 Go , cela a résolu le problème pour moi.

1
Glenn Dayton