Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Acces au swap - URGENT
Envoyé par: AUBINEAU

J'ai developpe une application (C++) sous LINUX qui mange toute la RAM mais quand il n'a plus de place elle ne va pas chercher l'espace dispo dans le swap. Est ce que quelqu'un peut m'aider ????
- options de compil
- commandes LINUX

Poste le Thursday 18 December 2003 11:42:56
Répondre     Citer    
Re: Acces au swap - URGENT
Envoyé par: alveric

Normalement, c'est le noyau lui-même qui s'occupe de "swapper" des pages mémoires, pas un prog de lui-même. Donc les options de compil n'y font rien.

À moins qu'il existe des commandes particulières pour ça (un binutils évolué ?), ce que tu peux essayer, c'est faire des appels système vers l'unité de gestion de la mémoire pour forcer le swap de certaines pages. Mais ça risque de pas être évident.

Y a un kernel hacker dans la salle ?

Poste le Thursday 18 December 2003 13:43:01
Répondre     Citer    
Re: Acces au swap - URGENT
Envoyé par: abgech

Pour commencer, une question bête. Si je pars d'une hypthèse d'une RAM 128 Mo (ce qui me paraît normal actuellement), Est-t-il vraiment normal qu'une application mange toute la RAM à disposition ? Ne faudrait-il pas revoir l'algorithme de l'applic ?
pour en revenir au fond de la question, c'est le gestionnaire mémoire de Linux qui se charge de la pagination, et, à ma connaissance, il le fait très bien, le problème ne réside sans doute pas à ce niveau là.
Dans le cadre d'un cours que je dispense sur les système d'exploitaitions, je fais une manip assez spectaculaire pour montrer l'augmentation du taux de pagination au fur et à mesure qu'un processus réclame de la mémoire:
...
char *ptr;

...
while (1)
{if ( ptr = malloc(10000)) == NULL)
break;
putchar('<');

}
printf("Ouf ! fini\n")
...

On lance simultanément, l'exécution du programme et l'exécution de top (ou un quelconque autre outil de visualisation des infos système) pour visualiser le taux de pagination et le taux d'utilisation du CPU. Pour que la démo soit vraiment effective, il est préférable d'utiliser un système avec une grand mémoire RAM (dans mon cas 1 Go). Au début, il n'y a pas de pagination, le CPU est utilisé à pratiquement 100 %, puis, petit à petit, la pagination augmente, les taux d'utilisation du CPU baisse légèrement, jusqu'au point de "trashing" (navré, je ne connais pas l'équivalent en français): le taux d'utilisation du CPU passe brutalement à 1 ou 2 %, le système est en totale contention disque (attente pratiquement permanente d'E/S sur disque), tout se ralentit, on peut même avoir l'impression que le système est "planté", jusqu'au moment où le processus utilise toute la mémoire (RAM + SWAP) et malloc répond NULL. On sort alors de la boucle infernale et le processus se termine.
Linux utilise une technique de taille de buffer dynamique, c'est à dire que, lorsque un processus a besoin de mémoire, le buffer réduit sa taille, jusqu'à une taille minimum incomprésible (tout cela peut se paramétrer). Pour une dizaine de secondes, les temps de réponse sont désastreux, la RAM a été complétement utilisée par ce processus fou, le buffer est minimum et tout doit être rechargé à partir du disque d'où les mauvais temps de réponse.
Alors, même si l'on a des doutes, même si l'on ne va pas voir comment la pagination est implémentée (on a les sources, c'est fait pour ça) cette démo montre que le système de pagination fonctionne très bien sous Linux.

Elle est pas belle la vie ?

Poste le Thursday 18 December 2003 19:03:36
Répondre     Citer    
Re: Acces au swap - URGENT
Envoyé par: Weedo41

Slt,
C'est quoi que tu nous développe??
un cathya2?



Laissez brûler la weed et n'oubliez personne
Dans la fumée des dieux s'effondre Babylone

Poste le Sunday 21 December 2003 13:17:08
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Acces au swap - URGENT
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons