Question

Question noob Linux:

Si j'ai 500 Mo de RAM et 500 Mo d'espace swap, le système d'exploitation et les processus peuvent-ils utiliser 1 Go de mémoire?

En d'autres termes, la quantité totale de mémoire disponible pour les programmes et le système d'exploitation correspond-elle au total de la taille de la mémoire physique et de la taille de la permutation?

J'essaie de savoir quels compteurs SNMP interroger, mais je dois d'abord comprendre comment Linux utilise un peu mieux la mémoire virtuelle.

Merci

Était-ce utile?

La solution

Oui, c'est essentiellement correct. Les chiffres réels peuvent être (très) légèrement inférieurs, mais à toutes fins utiles, si vous avez x mémoire physique et y mémoire virtuelle (swap in linux), disposer de x + y de mémoire pour le système d'exploitation et tous les programmes exécutés sous le système d'exploitation.

Autres conseils

En fait, c’est essentiellement correct, mais votre "virtuel" la mémoire ne réside PAS à côté de votre "mémoire physique". (comme Matthew Scharley a déclaré).

Votre " mémoire virtuelle " est une couche d'abstraction couvrant à la fois les zones "physique" et "physique". (comme dans la RAM) et "échanger" (comme sur le disque dur, qui est bien sûr autant physique que la RAM) est la mémoire.

La mémoire virtuelle est essentiellement une couche d’abstraction. Votre programme adresse toujours un message "virtuel". address, que votre système d'exploitation traduit en une adresse dans la RAM ou sur le disque (qui doit d'abord être chargé dans la RAM) en fonction de l'emplacement des données. Ainsi, votre programme n’a jamais à s’inquiéter du manque de mémoire.

Rien n’est plus simple…

Les pages de mémoire sont allouées paresseusement. Un processus peut malloc () une grande quantité de mémoire et ne jamais l’utiliser. Donc, sur votre système 500MB_RAM + 500MB_SWAP, je pourrais, du moins en théorie, allouer 2 Go de mémoire en mémoire vive et tout ira bien jusqu'à ce que j'essaie d'utiliser trop de cette mémoire. (À ce stade, tout processus qui ne peut pas acquérir plus de pages de mémoire est neutralisé. J'espère que c'est mon processus. Mais pas toujours.)

Les processus individuels peuvent être limités à 4 Go en tant que limitation d'adresse physique sur les systèmes 32 bits. Même si vous avez plus de 4 Go de RAM sur la machine et que vous utilisez ce schéma d'adressage aberrant 36 bits atroces et bizarres, les processus individuels restent limités à 4 concerts. Certains de ces 4 concerts doivent aller pour des bibliothèques partagées et du code de programme. Vous avez donc besoin de 2-3 Go de pile + tas comme limitation ADDRESSING.

Vous pouvez insérer des fichiers au format MMAP, ce qui vous donne effectivement plus de mémoire. Il agit essentiellement comme un échange supplémentaire. C'est à dire. Plutôt que de charger en mémoire les données de code binaire d'un programme, puis de les échanger dans le fichier d'échange, le fichier est simplement mappé. Au besoin, les pages sont échangées dans la RAM directement à partir du fichier.

Vous pouvez entrer dans des informations intéressantes avec des données éparses et des fichiers éparses clairs. J'ai vu X-windows réclamer une utilisation de mémoire considérable alors qu'en fait, il n'en utilisait qu'un petit peu.

BTW: " gratuit ". pourrait vous aider. Comme " cat / proc / meminfo " ou les lignes Vm dans / proc / $ PID / status . (En particulier VmData et VmStk .) Ou peut-être " ps up $ PID "

Bien que ce soit principalement vrai, ce n'est pas tout à fait correct. Pour un processus particulier, l'environnement dans lequel vous l'exécutez peut limiter la mémoire disponible pour votre processus. Vérifiez également la sortie de ulimit -v .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top