J'ai vu beaucoup de questions liées à la mémoire sur Ubuntu et, pour être honnête, je ne comprends vraiment pas comment il est encore possible de lutter contre de tels problèmes.
J'ai 8 Go de RAM. J'ai expérimenté avec/sans échange sans trop de différences.
Le problème est que je dois fréquemment (jusqu’à une fois par jour) redémarrer mon ordinateur portable car il est entièrement gelé (l’attente n’aide pas). Cela est probablement lié à RAM utilisation de mes navigateurs Web. En dehors de cela, aucun processus très exigeant ne s'exécute sur l'ordinateur portable.
Pour expérimenter/reproduire:
Mes observations sont:
MemoryError
name__.Je ne comprends pas:
Je suis conscient que la permutation nécessite du processeur, elle risque donc de bloquer le système pendant un certain temps. C'est pourquoi je l'ai désactivé, donc je pensais que le noyau déciderait rapidement de tuer un processus.
Je ne comprends pas comment une utilisation aussi élémentaire (utilisation de navigateurs) pourrait poser problème avec un système d'exploitation récent utilisant 8 Go de RAM. Dois-je modifier mon système pour en avoir un fiable?
Merci pour tout conseil/explication/astuce qui pourrait aider.
J'ai résolu un problème similaire avec un script mémoire/observateur cpu et je lui ai juste demandé de tuer tous les processus qu'il voit qui ont plus de x RAM ou y de mémoire pendant plus de t secondes. Cela ne résout pas le problème de la réservation CPU/Mem pour le système d'exploitation, mais c'est une solution de contournement jusqu'à ce que vous trouviez une meilleure réponse (et partagez-la avec moi car je suis ici à la recherche de la même chose).
#!/bin/bash
# Kill POS if we're doing stupid shit.
HOG_COUNTER=0
while true; do
# This is pulling CPU, change the awk column from 9 to something
# that you want to check against.
HOG=$(top -b -n 1 | grep pos2 | awk '$9 > 90 {print $1}')
# If the hog variable is not empty, add some counter info - we don't
# want to catch periodic spikes, we want to catch consistent offenders.
if [ ! -z "$HOG" ]; then
counter_time=$(date)
HOG_COUNTER=$(expr ${HOG_COUNTER} + 1)
echo "$counter_time - Found a hog: $HOG - ${HOG_COUNTER} counters." >> high_mem_kill_log
else
HOG_COUNTER=0
fi
# If we have more than 2 counters (3 or more) then we kill the process
# that's doing it.
if [ $HOG_COUNTER -gt 2 ]; then
kill_time=$(date)
echo "$kill_time - Found a hog: $HOG. $HOG_COUNTER counters. Killing $HOG." >> high_mem_kill_log
kill $HOG
fi
sleep 30s
done