Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Gestion memoire sur une machine bi/quadriproc

36 réponses
Avatar
Deepthroat
Bonjour,

j'ai quelques machines bi et quadriproc qui tournent avec un linux smp
(uniquement des mandrake 9.2), et j'ai un soucis sur la gestion de la
memoire.

Quand un utilisateur lance un calcul occupant beaucoup de memoire, la
machine n'occupe jamais toute la memoire dispo mais sature sur une
barette (1Go ou 512Mo).

Existe t'il un moyen pour permettre à un processus d'occuper toute la
memoire ?

Merci

10 réponses

1 2 3 4
Avatar
Laurent Wacrenier
Deepthroat écrit:
Existe t'il un moyen pour permettre à un processus d'occuper toute la
memoire ?


Quel est le problème ? Ça swape ?

Avatar
Deepthroat

Quel est le problème ? Ça swape ?


oui, ca sature une barette, puis swappe sans utiliser la deuxieme barrette.

Avatar
SauronDemMordor
quand tu fait ps sur la machine; les colonnes vsz et rss du process te do nnent
quoi ?

Deepthroat wrote:

Quel est le problème ? Ça swape ?



oui, ca sature une barette, puis swappe sans utiliser la deuxieme barre tte.



Avatar
Deepthroat
quand tu fait ps sur la machine; les colonnes vsz et rss du process te
donnent quoi ?


En fait ca ne swap pas, j'ai dis une betise. J'ai un utilisateur qui
genere un executable de 2Go et impossible de le lancer, erreur de
segmentation.

Sur un quadripro (PIII, 4Go de RAM), si je lance un process utilisant
plus d'1Go ca seg fault. Est-ce un fonctionnement 'normal' de linux, que
d'allouer 1/nb-cpu de RAM ?

N'est-il pas possible d'utiliser qu'un seul processeur mais d'utiliser
TOUTE la RAM ?

Sinon, la config du noyau est bien du smp, avec l'option High Memory sur
64Go, et ulimit me renvoie des unlimited sur les memoires.

Peut etre y a t'il des choses a chnager dans le source du noyau ?

Merci

Avatar
Laurent Wacrenier
Deepthroat écrit:
En fait ca ne swap pas, j'ai dis une betise. J'ai un utilisateur qui
genere un executable de 2Go et impossible de le lancer, erreur de
segmentation.

Sur un quadripro (PIII, 4Go de RAM), si je lance un process utilisant
plus d'1Go ca seg fault. Est-ce un fonctionnement 'normal' de linux, que
d'allouer 1/nb-cpu de RAM ?


C'est l'executable qui fait des Giga ou la mémoire alloué ?

Que donne ce programe, une fois compilé ?

#include <stdlib.h>
#include <stdio.h>
void main(void) {
void *x = mallloc(1024 * 1024 * 1024 + 1)
printf("x=%pn", x);
}

Avatar
Deepthroat

C'est l'executable qui fait des Giga ou la mémoire alloué ?


C'est l'executable en lui meme qui fait plus d'un Go, celui dont j'ai
parlé plus haut fait dans les 2Go.

Que donne ce programe, une fois compilé ?

#include <stdlib.h>
#include <stdio.h>
void main(void) {
void *x = mallloc(1024 * 1024 * 1024 + 1)
printf("x=%pn", x);
}


[ tmp]# ./a.out
x=0x40158008

Avatar
Deepthroat

Par contre le limite à 1Go de est curieuse. Regarde du coté de la
sécurité du système et des limitations.


Le truc , c'est que j'ai toujours cette limite :

Un quadipro (PIII) avec 4Go de RAM -> la limite que l'on a pu voir etait
de 1Go par processus.

Un bipro (Xeon) avec 2Go -> limite egalement de 1Go par processus.

Les options du noyaux semblent bonnes et ulimit ne limite rien.

Avatar
Manu
Deepthroat wrote:
En fait ca ne swap pas, j'ai dis une betise. J'ai un utilisateur qui
genere un executable de 2Go et impossible de le lancer, erreur de
segmentation.

Sur un quadripro (PIII, 4Go de RAM), si je lance un process utilisant
plus d'1Go ca seg fault. Est-ce un fonctionnement 'normal' de linux, que
d'allouer 1/nb-cpu de RAM ?

N'est-il pas possible d'utiliser qu'un seul processeur mais d'utiliser
TOUTE la RAM ?

Sinon, la config du noyau est bien du smp, avec l'option High Memory sur
64Go, et ulimit me renvoie des unlimited sur les memoires.


Si je ne dis pas de bétises, ça signifie que le noyau peut adresser
jusqu'à 64Go mais un processus reste limité à 4Go de mémoire.

Par contre le limite à 1Go de est curieuse. Regarde du coté de la
sécurité du système et des limitations.

Avatar
JKB
Le 22-03-2005, à propos de
Re: Gestion memoire sur une machine bi/quadriproc,
Deepthroat écrivait dans fr.comp.os.unix :

C'est l'executable qui fait des Giga ou la mémoire alloué ?


C'est l'executable en lui meme qui fait plus d'un Go, celui dont j'ai
parlé plus haut fait dans les 2Go.


Si ce n'est pas indiscret, que fait le programme en question, parce
j'ai du mal à imaginer un exécutable de plus d'un giga...

JKB

--
En plus c'est simple, je fais ce genre de trucs en g77 depuis des années :
il suffit d'écrire un wrapper en C. Et comme ça, j'ai le meilleur des deux
mondes : la rigueur quasi-monacale du Fortran, et l'exubérance pétulante du C.


Avatar
cedric
Deepthroat wrote:
C'est l'executable en lui meme qui fait plus d'un Go, celui dont j'ai
parlé plus haut fait dans les 2Go.


Sans vouloir être indiscret, pourquoi c'est si gros ???

1 2 3 4