2012-07-11 4 views
0

J'ai un démon écrit en C fonctionnant sous une machine RHEL 4.Linux RSS et mémoire partagée

Le démon accède à un segment de mémoire partagée (rien de plus qu'un grand tableau de 65536 éléments). Pas de malloc/gratuit sont faits.

Je remarquai que ps aux montre que le démon a la taille de la mémoire partagée + quelques kb comme VSZ et quelques-unes ko au flux RSS. Ensuite, plus le démon accède à la mémoire partagée, plus le RSS augmente jusqu'à atteindre la même taille de VSZ.

Pourquoi Linux calcule-t-il le RSS de cette manière? Je veux dire ... la mémoire partagée ne doit pas être ignorée en tant que mémoire consommée (RSS) par un seul processus, parce qu'elle peut être accédée par beaucoup d'autres runnables?

Et pourquoi cela augmente le RSS simplement en accédant à la mémoire partagée?

Répondre

0

RSS est le montant de mémoire physique mappé à votre processus.

Linux utilise demand paging pour que la mémoire physique ne soit mappée que sur le premier accès. VSZ est une mémoire virtuelle qui est soutenue par la mémoire physique à la demande. Cela explique pourquoi votre flux RSS augmente à mesure que vous accédez plus au mappage de la mémoire partagée.