OVH Cloud OVH Cloud

stacksize

27 réponses
Avatar
G. Alecian
La commande terminal:

"limit stacksize unlimited"

ne permet pas d'augmenter le stacksize au-dela de 65536 kbytes!

Ca me pose un gros probleme pour faire un tourner un code scientifique
(sur un G5 Quad, OSX 10.4.3).

Il n'y a pas ce genre de limitation sous d'autres plateformes unix.
Quelqu'un aurait-il une solution, ou saurait-il pour quelle raison il y
a un telle limitation?

10 réponses

1 2 3
Avatar
Kojak
La commande terminal:

"limit stacksize unlimited"

ne permet pas d'augmenter le stacksize au-dela de 65536 kbytes!

Ca me pose un gros probleme pour faire un tourner un code scientifique
(sur un G5 Quad, OSX 10.4.3).

Il n'y a pas ce genre de limitation sous d'autres plateformes unix.
Quelqu'un aurait-il une solution, ou saurait-il pour quelle raison il y
a un telle limitation?


C'est, a priori, une limitation de l'OS.

Si tu as les sources de ton soft, tu modifies la
déclaration de tes variables qui te bouffent la
pile, soit en les déclarant en statique, ou mieux,
en allouant la mémoire dynamiquement. Tu recompiles,
et ça devrait rouler...


--
Jacques.

"Quand la merde vaudra de l'or, le cul des pauvres
ne leur appartiendra plus." [Henry Miller]

Avatar
Nicolas.MICHEL
G. Alecian wrote:

La commande terminal:

"limit stacksize unlimited"

ne permet pas d'augmenter le stacksize au-dela de 65536 kbytes!


Salut

Je vais certainement dire une connerie, comme d'hab :
limit étant une commande interne au shell, cette limitation n'est-elle
pas inhérente au shell plutôt qu'au système... ?

Si oui, tu peux arranger ça.
--
S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes
iChat/AIM : michelnicolas

Avatar
Kojak
Salut,

limit étant une commande interne au shell, cette limitation n'est-elle
pas inhérente au shell plutôt qu'au système... ?


Que nenni, c'est le noyau qui gère les ressources
du système, pas le shell. :-)


--
Jacques.

"Quand la merde vaudra de l'or, le cul des pauvres
ne leur appartiendra plus." [Henry Miller]

Avatar
olivier.marti
Kojak wrote:

La commande terminal:

"limit stacksize unlimited"

ne permet pas d'augmenter le stacksize au-dela de 65536 kbytes!

Ca me pose un gros probleme pour faire un tourner un code scientifique
(sur un G5 Quad, OSX 10.4.3).

Il n'y a pas ce genre de limitation sous d'autres plateformes unix.
Quelqu'un aurait-il une solution, ou saurait-il pour quelle raison il y
a un telle limitation?


C'est, a priori, une limitation de l'OS.

Si tu as les sources de ton soft, tu modifies la
déclaration de tes variables qui te bouffent la
pile, soit en les déclarant en statique, ou mieux,
en allouant la mémoire dynamiquement. Tu recompiles,
et ça devrait rouler...



J'ai bien peur qu'il tombe sur la même limitation pour la taille totale
des variables statiques. Vrai ou faux ?

Olivier


Avatar
Nicolas.MICHEL
Kojak wrote:

Que nenni, c'est le noyau qui gère les ressources
du système, pas le shell. :-)


Ah, je me disais bien :)
Dans ce cas, c'est facile, faut juste recompiler le noyau avec l'option
"LIMITSTACKSIZE" à 30Go :->

Bon, je sorts.
--
S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes
iChat/AIM : michelnicolas

Avatar
Paul Gaborit
À (at) Thu, 5 Jan 2006 17:12:21 +0100,
(Olivier Marti) écrivait (wrote):
J'ai bien peur qu'il tombe sur la même limitation pour la taille totale
des variables statiques. Vrai ou faux ?


Heureusement que non : vous imaginez tous les softs se limitant a 65Mo
de mémoire au total ?

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>

Avatar
Bruno CAUSSE
dans l'article , Paul Gaborit à
a écrit le 5/01/06 17:39 :


À (at) Thu, 5 Jan 2006 17:12:21 +0100,
(Olivier Marti) écrivait (wrote):
J'ai bien peur qu'il tombe sur la même limitation pour la taille totale
des variables statiques. Vrai ou faux ?


Heureusement que non : vous imaginez tous les softs se limitant a 65Mo
de mémoire au total ?


il y a 3 types de memoire

statique
pile
tas

On imagine bien le tas limité par l'adressage, mais les deux autres?

La pile limité a 64 mo, je viens de l'apprendre :-), pourquoi pas la
statique? Tu as des infos.


Avatar
Vincent Lefevre
Dans l'article <dpj732$kcs$,
Kojak écrit:

C'est, a priori, une limitation de l'OS.


Oui.

Si tu as les sources de ton soft, tu modifies la
déclaration de tes variables qui te bouffent la
pile, soit en les déclarant en statique, ou mieux,
en allouant la mémoire dynamiquement. Tu recompiles,
et ça devrait rouler...


Parfois il y a une option de compilation pour changer l'allocation
de la mémoire. C'est le cas pour GMP, qui alloue par défaut toutes
les données temporaires sur la pile (par alloca); comme c'est de
la multiprécision, on tombe très vite sur la limite en question
(cela m'est déjà arrivé). Ce problème devrait être corrigé dans
la prochaine version de GMP (suivant la taille, l'allocation se
fera soit dans la pile, soit par malloc).

D'autre part, c'est aussi un problème de compilateur: le compilateur
n'est pas obligé d'allouer les variables automatiques dans la "pile"
(d'ailleurs, sur certaines plateformes, il ne le fait pas).

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

Avatar
Vincent Lefevre
Dans l'article <BFE30F3B.F887%,
Bruno CAUSSE écrit:

il y a 3 types de memoire

statique
pile
tas


Je pense qu'il y a plus que ça (e.g. pour les bibliothèques dynamiques).

On imagine bien le tas limité par l'adressage, mais les deux autres?


Si la pile est implémentée par des pointeurs classiques, elle est
aussi limitée par l'adressage.

La pile limité a 64 mo, je viens de l'apprendre :-), pourquoi pas la
statique? Tu as des infos.


En tapant darwin memory map sur Google, je tombe en particulier
là-dessus:

http://developer.apple.com/documentation/Darwin/Conceptual/KernelProgramming/vm/chapter_7_section_3.html

Je n'ai pas lu, mais c'est peut-être expliqué...

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA

Avatar
Paul Gaborit
À (at) Thu, 05 Jan 2006 18:00:27 +0100,
Bruno CAUSSE écrivait (wrote):
il y a 3 types de memoire

statique
pile
tas

On imagine bien le tas limité par l'adressage, mais les deux autres?

La pile limité a 64 mo, je viens de l'apprendre :-), pourquoi pas la
statique? Tu as des infos.


Pardon : j'avais zappé le "statique".

Si mes souvenirs sont bons, dans les premières versions de MacOS X et
avec le gcc de l'époque, il y avait une limite sur la taille d'*une*
variable statique (mais plus que 64 mo car c'est vraiment bas : une
matrice de double 3000x3000 n'y rentre pas) mais pas sur l'ensemble
des données statiques. Il y a d'ailleurs le même genre de limite sur
Linux. Mais en tous cas, pas de limite (basse du genre 64 mo) pour
l'ensemble.

Aurjoud'hui, je ne sais plus. Il faudrait refaire un petit test...

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>

1 2 3