(Courriels de diversion: <malles@divisait-evitait.com> <phenix@allecherions-resoudrai.com> <vaqueront@confierais-manifestez.com> <gueule@residerez-gereras.com> <maintient@empoche-dechiffrerez.com> <delasserez@ecumaient-capsule.com> <renovateur@egorgera-reactiveraient.com> <expliquerait@saphir-institueraient.com> <croustillaient@tresserent-subjuguerent.com> <rehabituaient@multimillionnaire-recevrez.com> )


Bonjour,
voila un petit probleme a soumettre a votre sagacite:
recemment, j'ai eu a tester la memoire d'un IBM RS/6000 sous AIX 4.3 et
j'ai ecrit un petit prg en C qui est le suivant (je sais c'est code
comme un dromadaire assoife, mais ca marche):

#include<stdio.h>
#include<stdlib.h>

main ()
{ char *p,*q,*r,*s,*t,*u; 
  unsigned long i,k;
  k=32*1024*1024;	//reservation de 6 blocs de 32 Mo de memoire  
  
  p=malloc(k);  
  if (p==NULL) {printf("P null\n"); return(1);}
  q=malloc(k);
  if (q==NULL) {printf("Q null\n"); free(p); return(1);}
  r=malloc(k);
  if (r==NULL) {printf("R null\n"); free(p);free(q);return(1);}
  s=malloc(k);
  if (s==NULL) {printf("S null\n"); free(p);free(q);free(r);return(1);}
  t=malloc(k);
  if (t==NULL) {printf("T null\n");
free(p);free(q);free(r);free(s);return(1);}
  u=malloc(k);
  if (u==NULL) {printf("U
null\n");free(p);free(q);free(r);free(s);free(t); return(1);}
  
		//remplissage des blocs avec une valeur aleatoire:
  for (i=0; i< k;i++) {p[i]=rand();}
  printf("p %u\n",i);
  for (i=0; i< k;i++) {q[i]=rand();} 
  printf("q %u\n",i);
  for (i=0; i< k;i++) {r[i]=rand();}
  printf("r %u\n",i);
  for (i=0; i< k;i++) {s[i]=rand();}
  printf("s %u\n",i);
  for (i=0; i< k;i++) {t[i]=rand();}
  printf("t %u\n",i);
  for (i=0; i< k;i++) {u[i]=rand();}
  printf("u %u\n",i);
 
  getchar();
  free(p);
  free(q);
  free(r);
  free(s);
  free(t);
  free(u);

  return;
}


Resultat des course: l'ibm qui a 512 Mo de RAM et 1Go de Swap s'en sort
bien, j'ai fait tourner une dizaine de process du prg ci-dessus et pas
de pb, il alloue les blocs de memoire, passe sur le swap quand il n'y a
plus de ram dispo et en meme temps compresse les blocs alloues qui ne
sont plus en train d'etre rempli... Je pense que la memoire est plutot
bien geree sur cet OS.

Ensuite j'essaye ce joli prg (en diminuant la valeur de 32 Mo par blocs)
sur ma machine linux (noyau 2.2.5) qui dispose de 128 Mo de RAM et
autant de swap: les blocs memoires sont alloues sans pb et meme au dela
de la limite de 256 Mo (swap+ram), 
les choses se corsent quand les blocs commencent a etre rempli: non
seulement la memoire n'est pas compresse (je l'ai verifie en changeant
las rand() par une valeur fixe) mais lorsqu'on atteint les limites de
memoire (256 Mo), tout est bloque sans aucun message d'erreur et je suis
oblige de rebooter la machine....

Linux, un OS qui a une gestion de la memoire vraiment pas terrible ou je
me trompe quelque part ?

Fabien

---------------------------------------------------------------------
Aide sur la liste: <URL:mailto:linux-31-help@savage.iut-blagnac.fr>Le CULTe sur le web: <URL:http://savage.iut-blagnac.fr/>