Mémoire vive réservée ?

Bonjour,

Je rencontre un problème avec mon ordinateur de bureau et de jeu, il se trouve que j’ai d’important ralentissement et des crashs quand la mémoire vive est pleine à plus des trois quarts. Il se trouve que j’ai 16 Go de mémoire vive sur la machine, j’ai donc environ 4 Go disponible quand ça arrive.
Ça ne semble pas être un problème de l’outil qui m’indique la mémoire vive occupée et restante car il n’y a pas non plus de trace du moindre oom dans les journaux.
Mon hypothèse de travail actuel pour ce problème est qu’il existe, à l’instar des partition en ext4, une partie de la mémoire vive réservée au superutilisateur, mais je n’ai pas trouvé de piste en ce sens lors de mes recherches, ni qui confirme mon hypothèse, ni qui la réfute.

Est-ce que vous savez ce que je peux faire en attendant que je puisse acheter de la mémoire vive supplémentaire ?

Bonjour,

Si tu fait un free tu as quoi?
Il est possible que ta mémoire soit prise par les buffers, le cache ou la mémoire partagée.

Bonjour,

Et un memtest pour vérifier que ce n’est pas un pb matériel ?

┌ (almtesh@Thorn + 0) (04/04/24 - 15:06:15) (3.26 - 0%) (~)
└% free
               total       utilisé      libre     partagé tamp/cache   disponible
Mem:        16235948     8985992     5501152     1362684     3449048     7249956
Échange:           0           0           0

Le système est planté quand le système est planté, je ne peux donc pas avoir le retour de la commande free.

D’après les informations que j’ai, les buffers occupent un espace anecdotique.
Le cache n’est pas censé se vider s’il y a besoin d’espace mémoire ?
C’est quoi la mémoire partagée ?

J’ai fait deux passes dans le doute, la mémoire vive n’a présenté aucun problème.

Ah. Il te faudrait qu’une autre machine fasse des pollings sur celle-ci quand tu utilise la machine dans ces condition. Ça te permettrait d’avoir une visu de son évolution avant que ça plante.

C’est de la mémoire partagée entre plusieurs processus. Au lieu de s’envoyer les données, ils utilisent un segment de mémoire commun.
Avant de pouvoir être utilisé, un segment doit d’abord être créé en dehors de l’espace mémoire des processus existants. Ensuite, les processus qui désirent accéder au segment l’attachent à leur propre espace mémoire.
C’est d’ailleurs souvent là que se situent des plantages mémoire. Il suffit qu’un des processus concerné ne soit pas « méticuleux » avec sa gestion de mémoire pour créer des conditions de crash.

Bonjour
Il me semble et sauf erreur de ma part que l’hypothèse concernant une portion de mémoire vive réservée au superutilisateur, similaire à l’espace réservé sur les partitions ext4, ne s’applique pas directement à la gestion de la mémoire vive dans les systèmes d’exploitation modernes comme Linux ou Windows. La mémoire vive est gérée différemment et est allouée dynamiquement aux processus qui en ont besoin, sans qu’un espace spécifique soit réservé pour le superutilisateur.

@droopy191 donne un bon début d’investigation,
Si ton ordinateur bugue et que ça vient pas du matériel, une bonne piste est de voir en direct ce qui se passe avec des outils comme Glances, htop, ou top. Ça te permet de repérer si un programme bouffe trop de ressources et, dans ce cas, tu peux décider de l’arrêter net. Si ça règle pas le souci, essayer d’augmenter l’espace swap pourrait aider, mais faut le faire avec précaution pour éviter d’autres problèmes. Ensuite, si tu as des soucis en jouant à un jeu et que ton ordi plante, vérifie s’il y a des bugs connus qui font que le jeu consomme trop de mémoire. Si des mises à jour sont disponibles, n’hésite pas à les installer, ça peut corriger le bug. Et finalement, jette un œil aux programmes ou aux tâches automatiques qui pompent beaucoup de mémoire inutilement. Si c’est le cas, le mieux serait de les désactiver.

Non, en fait, la question est de savoir pourquoi le mécanisme oom_kill n’est pas déclanché. Quand ça plante, j’ai une assez bonne idée de quel processus a provoqué le plantage.

1 J'aime

Le problème vient de là … :sweat_smile:
Blague à part, concernant la mémoire partagée, il faudrait une sacrée palanquée de processus fils partageant une même zone pour que le risque de mauvaise gestion provoque un plantage de toute la machine.

De ce que j’ai pu lire, il attribue un score, et choisit de tuer en priorité en se basant là-dessus, non pas systématiquement sur le processus qui consomme le plus.
Il est possible d’ajuster le score dans le fichier /proc/$PID/oom_score_adj (via un echo)

J’ai, premier degré, un projet de séparer les deux. Mon estimation ne me donne pas un budget tant irraisonnable que ça, je le ferais éventuellement au prochain renouvellement de la machine prévu aux alentours de 2030.

Oui, je sais, mais en ne tuant pas le processus qui consomme le plus de mémoire, un autre processus qui prend moins de mémoire devrait être tué et si une quantité de mémoire insuffisante est libérée, l’oom devrait être de nouveau déclenché, il ne me semble pas qu’il y ait de cooldown pour l’oom (enfin, j’espère).

Si ça n’est pas un portable, un HD ça se trouve pas cher ( il existe même des cartes IDE<->sata )

pour analyser ta mémoire, il existe net-data : pas mal mais télécharge des scripts de l’extérieur, avantage : accessible en http, donc de ton téléphone par ex :

Le fichier de configuration est ici :
cat /proc/sys/vm/panic_on_oom
Sa valeur ne doit pas être différente de 0.
Après comme tu dois certainement le savoir, les logs pourrais éventuellement te donner des informations non négligeable

La valeur de la configuration est bien 0, c’est donc bon.
J’ai déjà regardé ce que je pouvais trouver dans les journaux, mais pas de trace d’oom.

Personnellement, je n’ai pas de vue en temps réel sur ta machine. Tu pourrais peut-être installer Glances pour voir ce qui se passe en temps réel. En fonction de ce que tu trouves, tu pourrais relire la discussion ici pour exécuter les processus conseillés.
Dans la logique, si la mémoire vive est utilisée de manière importante au point de ne plus pouvoir utiliser ton système de manière optimale, il sera certainement nécessaire d’en rajouter.

Regarde ici :
man 5 proc
le manuel de l’OOM Killer, pas eu le temps de le consulter je dois partir.