# äœã§ãããã§ã fj.comp.misc ã«ãããªãšèšãããããªâŠ
èŠçŽ æ°ã®å€§ããé
åãäœãããšãããšãLinuxã®GCCã§ã¯[*1]ã³ã³ãã€ã©æã«
æãããFreeBSD ã®GCC ã§ã¯å®è¡æã«SIGABRTã§çµäºããŠããŸããSolaris 8
ã®ucbcc[*3]ãFreeBSDåæ§ãå®è¡æã« Killedã§çµäºããŸãã
ä»¶ã®é åã¯æ§é äœé åã§ã
struct packet {
int nodenumber;
int destination;
int source;
char body [ 256 ];
}
ã®ãããªãint * 3 + char * 256 ã«ããæ§æãããŠããŸãããã®æ§é äœã
äžèšã®ãããªLinux ç°å¢ãFreeBSD ç°å¢ã§ã¯30äžçšåºŠäœããšæãããæã¯
SIGABRT ã§çµäºãããSolaris 8äžã§ã¯ã¡ã¢ãªããéããããäœã£ãŠãïŒ100
äžçšåºŠïŒæãããªãæš¡æ§ã§ããLinux ã®äž»èšæ¶ã¯ 512MB ã§ãããFreeBSD
ã§ã¯ 2GB, Solaris 8 ã§ã¯ 4GB ã§ãã
ãããã£ãé
åã®å¶éã¯äž»èšæ¶å®¹éïŒãšä»ã®ããã»ã¹ãå æããè³æºïŒã§
å®ãŸãã®ãããããšãäœãä»ã®èŠçŽ ãããã®ãã©ãã«ãè¯ãåãã£ãŠããŸ
ãããçæ§ããã®æ
å ±ããå¯ãé ããã°å¹žãã§ãã
# ãã®åã«ããããªãã®éçã«ç¢ºä¿ãããªããšãèšããããã§æãâŠã
[*1] Vine Linux 2.6r1 ä»å±ã® gcc 2.95.3
[*2] FreeBSD 5.1R äžã® gcc 3.2.2 [FreeBSD] 20030205
[*3] Solaris 8 Sparc äžã® Sun Workshop 6 update 2 C 5.3
--
æåŽ ç€Œç (Hiroki Kashiwazaki)@HUIIC
Ph.D candidate in the Division of Electronics & Information
Engineering, Hokkaido University
mailto:r...@cc.hokudai.ac.jp
Tel:+81-11-706-2998
In article <86k756...@xh6.cc.hokudai.ac.jp>, Hiroki Kashiwazaki <r...@cc.hokudai.ac.jp> writes
> èŠçŽ æ°ã®å€§ããé
åãäœãããšãããšãLinuxã®GCCã§ã¯[*1]ã³ã³ãã€ã©æã«
> æãããFreeBSD ã®GCC ã§ã¯å®è¡æã«SIGABRTã§çµäºããŠããŸããSolaris 8
> ã®ucbcc[*3]ãFreeBSDåæ§ãå®è¡æã« Killedã§çµäºããŸãã
76MBçšåºŠã§ãããelf ã®å¶éããªãããã¡ã® Vine Linux ã§ã¯ã
1000,000 ã§ãåé¡ãªãã§ããlogin.conf ã¯BSD/OSã ã...
å®è¡æã®å¶éã¯ãlimit ãšããªãã§ãããLinux ã¯ããã®ãããã®
ããã©ã«ããæ±ºããŠãããšãããããã¯ããªãã ãã©ãã©ãã ã£ã
ããªã
> # ãã®åã«ããããªãã®éçã«ç¢ºä¿ãããªããšãèšããããã§æãâŠã
ãã¡ããã
struct packet *pool = (struct packet *)
malloc(sizeof(struct packet)*300000);
ã§ããããããªãã§ãã....
---
Shinji KONO @ Information Engineering, University of the Ryukyus,
æ²³éçæ²» @ çç倧åŠå·¥åŠéšæ
å ±å·¥åŠç§,
At 9 Dec 2003 06:46:43 GMT,
Shinji KONO wrote:
> 76MBçšåºŠã§ãããelf ã®å¶éããªãããã¡ã® Vine Linux ã§ã¯ã
> 1000,000 ã§ãåé¡ãªãã§ããlogin.conf ã¯BSD/OSã ã...
>
> å®è¡æã®å¶éã¯ãlimit ãšããªãã§ãããLinux ã¯ããã®ãããã®
> ããã©ã«ããæ±ºããŠãããšãããããã¯ããªãã ãã©ãã©ãã ã£ã
> ããªã
limit ã®å¶éã¯ã»ãšãã© unlimited ã§ã
[reo@hoge reo]$ ulimit -d
unlimited
[reo@hoge reo]$ ulimit -f
unlimited
[reo@hoge reo]$ ulimit -l
unlimited
[reo@hoge reo]$ ulimit -s
8192
[reo@hoge reo]$ ulimit -t
unlimited
[reo@hoge reo]$ ulimit -v
unlimited
ãšãã£ãæãã§ãããªããããã
> > # ãã®åã«ããããªãã®éçã«ç¢ºä¿ãããªããšãèšããããã§æãâŠã
>
> ãã¡ããã
>
> struct packet *pool = (struct packet *)
> malloc(sizeof(struct packet)*300000);
>
> ã§ããããããªãã§ãã....
mallocææçã«è¿ããã®ããã£ãŠãã€ãé¿ããŠããŸãã®ã§ã....
確ä¿ããé åãåçã«å€æŽãããªãéãã«ãããŠãmallocãæ¢ããŠ
䜿ããªããŠãããšã€ãã€ãæã£ãŠããŸãã®ã§ããã
NetBSD/i386 ã§ã®æ§åã§ããåèãŸã§ã«ã
% uname -srm
NetBSD 1.6P i386
% cc -v
Reading specs from /usr/pkg/gcc3/lib/gcc-lib/i386--netbsdelf/3.3/specs
Configured with: ./configure --prefix=/usr/pkg/gcc3 --host=i386--netbsdelf --enable-shared --enable-languages=c
Thread model: single
gcc version 3.3
% cc -DARLEN=1000000 -Wall -o a a.c
% ./a
55, G
% cc -DARLEN=8012998 -Wall -o a a.c
% ./a
zsh: cannot allocate memory: ./a
% cc -DARLEN=8012999 -Wall -o a a.c
a.c:13: error: size of variable `pkt' is too large
% echo '268 * 8012998' | bc
2147483464
% echo '268 * 8012999' | bc
2147483732
% echo '2^31' | bc
2147483648
% cat a.c
#include <stdio.h>
#ifndef ARLEN
#define ARLEN 1000000
#endif
struct packet {
int nodenumber;
int destination;
int source;
char body [ 256 ];
} pkt[ARLEN];
int main()
{
pkt[0].nodenumber = 55;
pkt[ARLEN -1].body[255] = 'G';
printf("%d, %c\n", pkt[0].nodenumber, pkt[ARLEN -1].body[255]);
return 0;
}
--
æç° ä¿®åž NETside Technologies Inc.
-- Equal Opportunity for All Good Architectures, NetBSD. --
ãã¡ã§ã¯ã1100000ãããã§èœã¡ãã¿ããã
In article <ul83cbu...@pine.yorie.netside.co.jp>, MOCHIDA Shuji <moc...@netside.co.jp> writes
> % cc -DARLEN=8012998 -Wall -o a a.c
> % ./a
> zsh: cannot allocate memory: ./a
æç°ãããããã(singed) 32bit è¶ããŠãŸã....
ã£ãŠããšã¯ã
struct packet {
int nodenumber;
int destination;
int source;
char body [ 256 ];
} pkt[ARLEN];
ã¿ãããªåé·ãªæ§é ã§30äžãäœãã®ã¯èšèšãã¹ã ãªã64bit machine
ãªããšããããon-demand ã§äœã£ããåå©çšãããããæ¹ãè¯ã
ãšæãã
ãã£ã±ããmalloc å匷ãããšããããå§ããããããªãã§ããã?
> ãããã£ãé
åã®å¶éã¯äž»èšæ¶å®¹éïŒãšä»ã®ããã»ã¹ãå æããè³æºïŒã§
> å®ãŸãã®ãããããšãäœãä»ã®èŠçŽ ãããã®ãã©ãã«ãè¯ãåãã£ãŠããŸ
> ãããçæ§ããã®æ
å ±ããå¯ãé ããã°å¹žãã§ãã
Linux ã ãšã
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define ASIZE 3000000
struct packet {
int nodenumber;
int destination;
int source;
char body [ 256 ];
} ary[ASIZE];
int main()
{
char buf[100];
pid_t pid = getpid();
(void)sprintf(buf, "cat /proc/%d/maps", pid);
(void)system(buf);
(void)printf("\n&(ary[%d].body[255]) = %08x\n",
ASIZE-1, &(ary[ASIZE-1].body[255]));
return 0;
}
ãå®è¡ããçµæã¯ã
08048000-08049000 r-xp 00000000 08:01 579 /home/tesigana/tmp/a.out
08049000-0804a000 rw-p 00000000 08:01 579 /home/tesigana/tmp/a.out
40000000-40016000 r-xp 00000000 08:01 210953 /lib/ld-2.2.2.so
40016000-40017000 rw-p 00015000 08:01 210953 /lib/ld-2.2.2.so
40017000-40018000 rw-p 00000000 00:00 0
40025000-4014b000 r-xp 00000000 08:01 32484 /lib/i686/libc-2.2.2.so
4014b000-40151000 rw-p 00125000 08:01 32484 /lib/i686/libc-2.2.2.so
40151000-40155000 rw-p 00000000 00:00 0
bfffe000-c0000000 rwxp fffff000 00:00 0
&(ary[2999999].body[255]) = 37f0a81f
ã§ãã®ã§ãéçé
åã倧ãããšãããããš /lib/i686/libc-2.2.2.so ã
貌ãä»ããŠããé åãç Žå£ããŠããŸãã®ã§ãªãããšã
---------------------------------------------------------------------
tesi...@mtf.biglobe.ne.jp
In Article <86k756...@xh6.cc.hokudai.ac.jp>,
Hiroki Kashiwazaki <r...@cc.hokudai.ac.jp> writes:
> èŠçŽ æ°ã®å€§ããé
åãäœãããšãããšãLinuxã®GCCã§ã¯[*1]ã³ã³ãã€ã©æã«
> æãããFreeBSD ã®GCC ã§ã¯å®è¡æã«SIGABRTã§çµäºããŠããŸããSolaris 8
> ã®ucbcc[*3]ãFreeBSDåæ§ãå®è¡æã« Killedã§çµäºããŸãã
>
> ä»¶ã®é
åã¯æ§é äœé
åã§ã
>
> struct packet {
> int nodenumber;
> int destination;
> int source;
> char body [ 256 ];
> }
Red Hat 7.1 (gcc 2.96) ã§ã¯ã100äžåäœã£ãŠãå¹³æ°ã§ããã
> ã®ãããªãint * 3 + char * 256 ã«ããæ§æãããŠããŸãããã®æ§é äœã
> äžèšã®ãããªLinux ç°å¢ãFreeBSD ç°å¢ã§ã¯30äžçšåºŠäœããšæãããæã¯
> SIGABRT ã§çµäºãããSolaris 8äžã§ã¯ã¡ã¢ãªããéããããäœã£ãŠãïŒ100
> äžçšåºŠïŒæãããªãæš¡æ§ã§ããLinux ã®äž»èšæ¶ã¯ 512MB ã§ãããFreeBSD
> ã§ã¯ 2GB, Solaris 8 ã§ã¯ 4GB ã§ãã
In Article <86fzfu...@xh6.cc.hokudai.ac.jp>,
Hiroki Kashiwazaki <r...@cc.hokudai.ac.jp> writes:
> At 9 Dec 2003 06:46:43 GMT,
> Shinji KONO wrote:
>
> > 76MBçšåºŠã§ãããelf ã®å¶éããªãããã¡ã® Vine Linux ã§ã¯ã
> > 1000,000 ã§ãåé¡ãªãã§ããlogin.conf ã¯BSD/OSã ã...
> limit ã®å¶éã¯ã»ãšãã© unlimited ã§ã
>
> [reo@hoge reo]$ ulimit -s
> 8192
auto倿°ã«ãªã£ãŠããšãããªãã ã£ããããŠããã
--
çå±±ïŒ ïŒ°ïŒŠïŒµ
FreeBSDã§ããšïŒäžéã®èšå®ã¯ã«ãŒãã«ã³ã³ãã£ã®ã¥ã¬ãŒã·ã§ã³ã®
MAXDSIZã§ããããïŒ
#
# Certain applications can grow to be larger than the 128M limit
# that FreeBSD initially imposes. Below are some options to
# allow that limit to grow to 256MB, and can be increased further
# with changing the parameters. MAXDSIZ is the maximum that the
# limit can be set to, and the DFLDSIZ is the default value for
# the limit. MAXSSIZ is the maximum that the stack limit can be
# set to. You might want to set the default lower than the max,
# and explicitly set the maximum with a shell command for processes
# that regularly exceed the limit like INND.
#
options MAXDSIZ="(256*1024*1024)"
options MAXSSIZ="(256*1024*1024)"
options DFLDSIZ="(256*1024*1024)"
æå®ããªãã£ãå Žåã®ããã©ã«ãã®å€ã¯ïŒ4ç³»åã§ããšïŒ
/sys/i386/include/vmparam.h ãªã©ã«ãããŸãïŒ5ç³»åã§ãåããã©
ããã¯ç¥ããŸããïŒ
äœè«ã§ããïŒããã»ã¹æ°ã®äžéããªãŒãã³ã§ãããã¡ã€ã«æ°ã®äžéã¯
åããã«ãŒãã«ã³ã³ãã£ã®ã¥ã¬ãŒã·ã§ã³äžã®maxusersã®å€ã§æ±ºãŸãïŒ
ãã®èšç®åŒã¯/sys/kern/subr_param.cã«ãããŸãïŒä»¥åã·ãã¥ã¬ãŒã·ã§
ã³ã§å€æ°ã®ãã¡ã€ã«ããªãŒãã³ããããã°ã©ã ãäœã£ãŠå¶éã«åŒã£æ
ãã£ããšãã«èª¿ã¹ãŸããïŒ
# 以åã¯MAXPROCãšããããã©ã¡ãŒã¿ããã£ããããªæ°ãããã®ã¯æ°
# ã®ãã?
--
åå
è±çŽ (Hideki Sakamoto)
e-mail: saka...@hlla.is.tsukuba.ac.jp
> # 以åã¯MAXPROCãšããããã©ã¡ãŒã¿ããã£ããããªæ°ãããã®ã¯æ°
> # ã®ãã?
sysctl ã§åºãŠããããã§ãããïŒ
kern.maxproc: 1716