(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/>