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
J'ai bien peur qu'il tombe sur la même limitation pour la taille totale
des variables statiques. Vrai ou faux ?


Faux.

Tu peux faire le test (2 ou 3 lignes de codes devraient
facilement te convaincre).

Bref (et pour résumer) :

- variable auto => pile
- variable static => tas

Voilà, plus la peine d'avoir peur. ;-)


--
Jacques.

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

Avatar
Eric Levenez
Le 5/01/06 12:41, dans ,
« G. Alecian » a écrit :

La commande terminal:

"limit stacksize unlimited"

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


Oui.

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


Souvent les codes scientifiques sont écrits par des gorets fous de l'immonde
alloca.

Il n'y a pas ce genre de limitation sous d'autres plateformes unix.


Si seulement les programmeurs apprenaient à bien écrire leur code, la pile
ne servirait pas ainsi d'espace de stockage.

Quelqu'un aurait-il une solution, ou saurait-il pour quelle raison il y
a un telle limitation?


C'est une constante appelée MAXSSIZ dans les sources de Darwin qui vaut
"64*1024*1024" sur PPC et "64*1024*1024 - 7*4*1024" sur i386. Pour avoir une
plus grande pile, il faut recompiler le noyau xnu de Mac OS X.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.

Avatar
Kojak
il y a 3 types de memoire

statique
pile
tas


Heu !

En ce qui me concerne, je parlerais plutôt de
classes de stockage, mais bon...

Sinon, il y a les classes register, auto, static,
externe, volatile et const (si j'en oublie pas).


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


Lesquelles ? :-) Sinon, je dirais au hasard... par
la taille du swap.


--
Jacques.

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

Avatar
Kojak
Parfois il y a une option de compilation pour changer l'allocation
de la mémoire.


Vouais, le genre d'option écrit en tout petit à la fin
du manuel ? :-D

Cela dit, tout coller en static, je ne suis pas sûr que
cela soit bon pour les perfs. Mais bon, à défaut, ça
dépanne...

--
Jacques.

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

Avatar
Kojak
Si seulement les programmeurs apprenaient à bien écrire leur code, la pile
ne servirait pas ainsi d'espace de stockage.


Bah ! Probablement d'anciens aficionados de la
HP-41CV, reconvertis au Basic ou au Fortran... :-D


--
Jacques.

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

Avatar
Eric Levenez
Le 5/01/06 19:40, dans <dpjp70$sbj$, « Kojak »
a écrit :

il y a 3 types de memoire

statique
pile
tas


Heu !

En ce qui me concerne, je parlerais plutôt de
classes de stockage, mais bon...

Sinon, il y a les classes register, auto, static,
externe, volatile et const (si j'en oublie pas).


Il manque typedef. De plus volatile et const, sont en fait des "type
qualifiers", comme restrict.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.


Avatar
Eric Levenez
Le 5/01/06 20:32, dans <dpjs7g$tid$, « Kojak »
a écrit :

Si seulement les programmeurs apprenaient à bien écrire leur code, la pile
ne servirait pas ainsi d'espace de stockage.


Bah ! Probablement d'anciens aficionados de la
HP-41CV, reconvertis au Basic ou au Fortran... :-D


Meu non ! J'avais une HP-41C hackée en CV à coup de fer à soudé, et j'ai pas
mal pratiqué le Basic et le Fortran, mais malgré cela (ou grâce à cela), je
sais gérer correctement la mémoire dans mes programmes.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.


Avatar
Vincent Lefevre
Dans l'article <dpjp70$sbj$,
Kojak écrit:

il y a 3 types de memoire

statique
pile
tas


Heu !

En ce qui me concerne, je parlerais plutôt de
classes de stockage, mais bon...

Sinon, il y a les classes register, auto, static,
externe, volatile et const (si j'en oublie pas).


C'est différent: en C, il n'y a pas de concept de pile.
Cf les discussions sur f.c.l.c.

Les types de mémoires sont liés à l'OS (je dis bien l'OS, pas le noyau).

--
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 <BFE335C0.4FE10%,
Eric Levenez écrit:

Le 5/01/06 19:40, dans <dpjp70$sbj$, « Kojak »
a écrit :
[...]

Sinon, il y a les classes register, auto, static,
externe, volatile et const (si j'en oublie pas).


Il manque typedef. De plus volatile et const, sont en fait des "type
qualifiers", comme restrict.


typedef? Je ne vois pas ce qu'il a à faire ici. Rappel: typedef ne
permet pas de définir de nouveaux types, seulement des alias de types
existants.

--
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 <dpjqu2$t01$,
Kojak écrit:

Parfois il y a une option de compilation pour changer l'allocation
de la mémoire.


Vouais, le genre d'option écrit en tout petit à la fin
du manuel ? :-D


./configure --help

C'est standard pour avoir toutes les options compile-time d'un logiciel.

Cela dit, tout coller en static, je ne suis pas sûr que
cela soit bon pour les perfs. Mais bon, à défaut, ça
dépanne...


Oui, c'est pour cela qu'on attend la nouvelle version de GMP avec
impatience! :)

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


1 2 3