- 论坛徽章:
- 1
|
继续折腾,不过这次是KVA_PAGES保持系统默认,只修改MAXDISZ及DFLDSIZ,并不断增加,看看其"极限"是多少.
经过不断的折腾,向大家提供一些"有趣"的数据:
下面数据每次都是重新编译内核,重启后的数据.
测试环境:FreeBSD i386 5.4-Release-p13, RAM 1278MB.(5.4跟6.0的有点不一样)
1."2912"
options MAXDSIZ="(2912ULL*1024*1024)"
options DFLDSIZ="(2912ULL*1024*1024)"
结果1:
结果2:
total address space : max = 4095M
max data segment : max = 2912M
max stack segment : max = 64M
2."2920"
options MAXDSIZ="(2920ULL*1024*1024)"
options DFLDSIZ="(2920ULL*1024*1024)"
结果1:
结果2:
total address space : max = 4095M
max data segment : max = 2920M
max stack segment : max = 64M
结果3:(make kernel)
virtual memory exhausted: Cannot allocate memory
3."2928"
options MAXDSIZ="(2928ULL*1024*1024)"
options DFLDSIZ="(2928ULL*1024*1024)"
结果1:
结果2:
total address space : max = 4095M
max data segment : max = 2928M
max stack segment : max = 64M
结果3:(make kernel)
virtual memory exhausted: Cannot allocate memory
4."2934"
options MAXDSIZ="(2934ULL*1024*1024)"
options DFLDSIZ="(2934ULL*1024*1024)"
结果1:
结果2:
total address space : max = 4095M
max data segment : max = 2934M
max stack segment : max = 64M
结果3:(启动过程中,开始有服务出错)
Initial i386 initialization:.
Additional ABI support: linux/compat/linux/sbin/ldconfig: Cannot mmap file /lib/libdb-4.0.so.
/compat/linux/sbin/ldconfig: Cannot mmap file /usr/lib/libdb-4.0.so.
/compat/linux/sbin/ldconfig: Cannot mmap file /usr/lib/libdb_cxx-4.0.so.
.
Starting cron.
Local package initialization:Starting compat4x.
Starting apache22.
httpd: Syntax error on line 83 of /usr/local/etc/apache22/httpd.conf: Cannot load /usr/local/libexec/apache22/mod_ssl.so into server: /lib/libcrypto.so.3: mmap
of entire address space failed: Cannot allocate memory
cups: started scheduler.
Starting cvs pserver chroot wrapper: cvsd.
Starting cvsupd.
/libexec/ld-elf.so.1: /lib/libc.so.5: mmap of entire address space failed: Cannot allocate memory
结果4:(make kernel)
--------------------------------------------------------------
>>> stage 2.3: build tools
--------------------------------------------------------------
cd /usr/obj/usr/src/sys/PF; MAKESRCPATH=/usr/src/sys/dev/aic7xxx/aicasm make -DNO_CPU_CFLAGS -f /usr/src/sys/dev/aic7xxx/aicasm/Makefile
Warning: Object directory not changed from original /usr/obj/usr/src/sys/PF
cc -O -pipe -nostdinc -I/usr/include -I. -I/usr/src/sys/dev/aic7xxx/aicasm -c /usr/src/sys/dev/aic7xxx/aicasm/aicasm.c
virtual memory exhausted: Cannot allocate memory
*** Error code 1
5."2935"
options MAXDSIZ="(2935ULL*1024*1024)"
options DFLDSIZ="(2935ULL*1024*1024)"
结果1:
结果2:
total address space : max = 4095M
max data segment : max = 2935M
max stack segment : max = 64M
结果3:(dmesg)
Initial i386 initialization:.
Additional ABI support: linux/compat/linux/sbin/ldconfig: Cannot mmap file /lib/libdb-4.0.so.
/compat/linux/sbin/ldconfig: Cannot mmap file /usr/lib/libdb-4.0.so.
/compat/linux/sbin/ldconfig: Cannot mmap file /usr/lib/libdb_cxx-4.0.so.
.
Starting cron.
Local package initialization:Starting compat4x.
Starting apache22.
httpd: Syntax error on line 83 of /usr/local/etc/apache22/httpd.conf: Cannot load /usr/local/libexec/apache22/mod_ssl.so into server: /usr/lib/libssl.so.3: mmap of entire address space failed: Cannot allocate memory
cups: started scheduler.
Starting cvs pserver chroot wrapper: cvsd.
Starting cvsupd.
/libexec/ld-elf.so.1: /usr/local/lib/libiconv.so.3: mmap of entire address space failed: Cannot allocate memory
结果4:(make kernel)
--------------------------------------------------------------
>>> stage 2.3: build tools
--------------------------------------------------------------
cd /usr/obj/usr/src/sys/PF; MAKESRCPATH=/usr/src/sys/dev/aic7xxx/aicasm make -DNO_CPU_CFLAGS -f /usr/src/sys/dev/aic7xxx/aicasm/Makefile
Warning: Object directory not changed from original /usr/obj/usr/src/sys/PF
cc -O -pipe -nostdinc -I/usr/include -I. -I/usr/src/sys/dev/aic7xxx/aicasm -c /usr/src/sys/dev/aic7xxx/aicasm/aicasm.c
virtual memory exhausted: Cannot allocate memory
*** Error code 1
6."2936"
options MAXDSIZ="(2936ULL*1024*1024)"
options DFLDSIZ="(2936ULL*1024*1024)"
结果1:
结果2:
total address space : max = 4095M
max data segment : max = 2936M
max stack segment : max = 64M
结果3:(dmesg)
Initial i386 initialization:.
Additional ABI support: linux/compat/linux/sbin/ldconfig: Cannot mmap file /lib/libdb-4.0.so.
/compat/linux/sbin/ldconfig: Cannot mmap file /usr/lib/libdb-4.0.so.
/compat/linux/sbin/ldconfig: Cannot mmap file /usr/lib/libdb_cxx-4.0.so.
.
Starting cron.
Local package initialization:Starting compat4x.
Starting apache22.
/libexec/ld-elf.so.1: /usr/local/lib/libdb-4.2.so.2: mmap of entire address space failed: Cannot allocate memory
cups: started scheduler.
Starting cvs pserver chroot wrapper: cvsd.
Starting cvsupd.
Starting SAMBA: removing stale tdbs :
/var/db/samba/messages.tdb
/var/db/samba/unexpected.tdb
Starting nmbd.
/libexec/ld-elf.so.1: /lib/libcrypto.so.3: mmap of entire address space failed:
Cannot allocate memory
Starting smbd.
/libexec/ld-elf.so.1: /usr/local/lib/compat/pkg/libgnutls.so.12: mmap of entire
address space failed: Cannot allocate memory
.
结果4:(make kernel)
--------------------------------------------------------------
>>> stage 2.3: build tools
--------------------------------------------------------------
cd /usr/obj/usr/src/sys/PF; MAKESRCPATH=/usr/src/sys/dev/aic7xxx/aicasm make -DNO_CPU_CFLAGS -f /usr/src/sys/dev/aic7xxx/aicasm/Makefile
Warning: Object directory not changed from original /usr/obj/usr/src/sys/PF
cc -O -pipe -nostdinc -I/usr/include -I. -I/usr/src/sys/dev/aic7xxx/aicasm -c /usr/src/sys/dev/aic7xxx/aicasm/aicasm.c
virtual memory exhausted: Cannot allocate memory
*** Error code 1
7."2937"
options MAXDSIZ="(2937ULL*1024*1024)"
options DFLDSIZ="(2937ULL*1024*1024)"
结果1:
结果2:
total address space : max = 4095M
max data segment : max = 2937M
max stack segment : max = 64M
结果3:(dmesg)
Starting sshd.
/libexec/ld-elf.so.1: /lib/libc.so.5: mmap of entire address space failed: Cannot allocate memory
/libexec/ld-elf.so.1: /lib/libc.so.5: mmap of entire address space failed: Cannot allocate memory
/libexec/ld-elf.so.1: /lib/libc.so.5: mmap of entire address space failed: Cannot allocate memory
Initial i386 initialization:.
Additional ABI support: linuxem0: Link is up 100 Mbps Full Duplex
/compat/linux/sbin/ldconfig: Cannot mmap file /lib/libdb-4.0.so.
/compat/linux/sbin/ldconfig: Cannot mmap file /usr/lib/libdb-4.0.so.
/compat/linux/sbin/ldconfig: Cannot mmap file /usr/lib/libdb_cxx-4.0.so.
.
Starting cron.
Local package initialization:Starting compat4x.
Starting apache22.
/libexec/ld-elf.so.1: /lib/libc.so.5: mmap of entire address space failed: Cannot allocate memory
/libexec/ld-elf.so.1: /usr/local/lib/libiconv.so.3: mmap of entire address space failed: Cannot allocate memory
cups: unable to start scheduler.
Starting cvs pserver chroot wrapper: cvsd.
Starting cvsupd.
Starting SAMBA: removing stale tdbs :
Starting nmbd.
/libexec/ld-elf.so.1: /lib/libc.so.5: mmap of entire address space failed: Cannot allocate memory
Starting smbd.
ELF interpreter /libexec/ld-elf.so.1 not found
Abort trap
.
结果4:(make kernel)
--------------------------------------------------------------
>>> stage 2.3: build tools
--------------------------------------------------------------
cd /usr/obj/usr/src/sys/PF; MAKESRCPATH=/usr/src/sys/dev/aic7xxx/aicasm make -DNO_CPU_CFLAGS -f /usr/src/sys/dev/aic7xxx/aicasm/Makefile
Warning: Object directory not changed from original /usr/obj/usr/src/sys/PF
cc -O -pipe -nostdinc -I/usr/include -I. -I/usr/src/sys/dev/aic7xxx/aicasm -c /usr/src/sys/dev/aic7xxx/aicasm/aicasm.c
virtual memory exhausted: Cannot allocate memory
*** Error code 1
结果5:(系统启动后,ttyv0显示该信息)
Mar 28 13:09:41 FreeBSD init: getty repeating too quickly on port /dev/ttyv8, sleeping 30 secs
8."2938"
options MAXDSIZ="(2938ULL*1024*1024)"
options DFLDSIZ="(2938ULL*1024*1024)"
结果:
能启动系统,出现login提示符,输入用户及密码,显示motd信息后,马上自动退出,返回login提示符.返回login提示前屏幕显示:/libexec/ld-elf.so.1:/lib/libc.so.5:mmap of entire address space faild:Cannot allocate memory
9."2939"
options MAXDSIZ="(2939ULL*1024*1024)"
options DFLDSIZ="(2939ULL*1024*1024)"
结果:
进入单用户模式,但不能登录,屏幕显示:/libexec/ld-elf.so.1:/lib/libc.so.5:mmap of entire address space faild:Cannot allocate memory
10."2940"
options MAXDSIZ="(2940ULL*1024*1024)"
options DFLDSIZ="(2940ULL*1024*1024)"
结果:panic
init died (signal 0, exit 1)
panic : Going nowhere without my init
P.S.
结果1小程序:
- 1 #include <stdio.h>
- 2 #include <stdlib.h>
- 3
- 4 int main(){
- 5 int MB = 0;
- 6 while(malloc(1 << 20)) ++MB;
- 7 printf("Allocated %d MB total.\n", MB);
- 8 }
复制代码
结果2小程序:
- 1 #include <sys/types.h>
- 2 #include <sys/time.h>
- 3 #include <sys/resource.h>
- 4
- 5 int main(void){
- 6
- 7 struct rlimit limit;
- 8 if (getrlimit(RLIMIT_AS, &limit) == 0)
- 9 printf("total address space : max = %uM\n", ((unsigned int)limit.rlim_max)/(1024*1024));
- 10
- 11 if (getrlimit(RLIMIT_DATA, &limit) == 0)
- 12 printf("max data segment : max = %uM\n", ((unsigned int)limit.rlim_max)/(1024*1024));
- 13
- 14 if (getrlimit(RLIMIT_STACK, &limit) == 0)
- 15 printf("max stack segment : max = %uM\n", ((unsigned int)limit.rlim_max)/(1024*1024));
- 16
- 17 }
复制代码
[ 本帖最后由 congli 于 2006-3-28 21:07 编辑 ] |
|