免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: simtiger
打印 上一主题 下一主题

关于kernel内存限制的问题(RHEL5) [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-08-21 13:15 |只看该作者
原帖由 flw2 于 2008-8-20 15:09 发表
zx_wing老大,请教一个问题
把1:3 改为 2:2 还能跑吗?



肯定可以跑啊,不能跑就是bug.

我在32位x86上测Solaris的时候,跑出kernel heap耗尽的问题。后来证明没有kernel memory leak。
结果就是调整到2:2模式。


因为高端服务器的物理内存大多都是超4G的,所以Solaris现在是根据物理内存来决定这个比例。

以前很仰慕Linux有更好的解决方案,没想到,这个方案也有性能问题。

不过这个东西越来越不重要了,64位马上就普及了。

论坛徽章:
0
12 [报告]
发表于 2008-08-21 13:17 |只看该作者

回复 #9 flw2 的帖子

我一直没看懂,为什么内核采用2:2的话, 原来在1:3上编译的应用程序就无法运行了?

没道理啊

论坛徽章:
0
13 [报告]
发表于 2008-08-21 13:19 |只看该作者
Fedora Core 2还曾经用过4:4的方式, 后来在FC3里又不用了。 那个补丁应该还可以找到

http://people.redhat.com/mingo/4g-patches/

论坛徽章:
0
14 [报告]
发表于 2008-08-21 16:54 |只看该作者
原帖由 albcamus 于 2008-8-21 13:17 发表
我一直没看懂,为什么内核采用2:2的话, 原来在1:3上编译的应用程序就无法运行了?

没道理啊


晕,不知为什么,我一直以为0x080482c0 是在2-3G的地址

论坛徽章:
0
15 [报告]
发表于 2008-08-21 22:18 |只看该作者
原帖由 albcamus 于 2008-8-21 13:17 发表
我一直没看懂,为什么内核采用2:2的话, 原来在1:3上编译的应用程序就无法运行了?

没道理啊

哈哈,对哈。我当时想的是1:3下的程序,栈从3G往下长,在2:2下也从3G开始不就错了。
你一提醒我才想起这和加载器根本没得关系,内核给它分栈的时候自然要从2G以下分。

论坛徽章:
1
操作系统版块每日发帖之星
日期:2015-07-11 22:20:00
16 [报告]
发表于 2008-08-21 22:53 |只看该作者
原帖由 simtiger 于 2008-8-20 14:47 发表
使用RHEL5(linux 2.6.18 ) ,打开PAE模式,可以支持到16G的内存。

http://slacksite.com/2008/03/why ... ot-embraced-64-bit/

从上面文章看,RHEL5去掉了对hugemem内核的支持(该内核在 ...
  1. [root@alin-laptop Server]# ls kernel-PAE-2.6.18-92.el5.i686.rpm
  2. kernel-PAE-2.6.18-92.el5.i686.rpm
  3. [root@alin-laptop Server]#
复制代码

明明支持大内存……

论坛徽章:
0
17 [报告]
发表于 2008-08-22 13:49 |只看该作者
原帖由 zx_wing 于 2008-8-21 22:18 发表

哈哈,对哈。我当时想的是1:3下的程序,栈从3G往下长,在2:2下也从3G开始不就错了。
你一提醒我才想起这和加载器根本没得关系,内核给它分栈的时候自然要从2G以下分。




ABI对这个是有规定的,2:2应该早就不符合ABI 的规定了。

不同操作系统的布局就很不一样,有些可能还是和LD有关系的,例如Solaris的动态库一般是在最高地址上,ld应该需要知道kernel地址的起始位置的。

论坛徽章:
0
18 [报告]
发表于 2008-08-22 15:31 |只看该作者
原帖由 Solaris12 于 2008-8-22 13:49 发表




ABI对这个是有规定的,2:2应该早就不符合ABI 的规定了。

不同操作系统的布局就很不一样,有些可能还是和LD有关系的,例如Solaris的动态库一般是在最高地址上,ld应该需要知道kernel地址的起始位置的。

ABI对操作系统的地址空间布局有规定?不会吧。windows就是2:2啊
unix不都是把栈放上面,堆放下面,动态库在两者中间。solaris为什么搞的不一样?

[ 本帖最后由 zx_wing 于 2008-8-22 15:37 编辑 ]

论坛徽章:
0
19 [报告]
发表于 2008-08-22 16:26 |只看该作者
原帖由 zx_wing 于 2008-8-22 15:31 发表

ABI对操作系统的地址空间布局有规定?不会吧。windows就是2:2啊
unix不都是把栈放上面,堆放下面,动态库在两者中间。solaris为什么搞的不一样?



对某个具体平台,例如386来说, ABI应该是Unix一个样, Windows一个样吧? 只知道所有的Unix平台都遵循那个叫做“Sys V..."的ABI, 不清楚windows怎么做的,应该不受约束(起码这份ABI文档的汇编格式都是AT&T的)

Solaris是个怪胎,处处和别的OS不一样:


$ cat aa.c
#include <stdio.h>

int main(void)
{
        char cmd[256];
        sprintf(cmd, "pmap %d", getpid());
        system(cmd);

        return 0;
}

$ gcc aa.c
$ ./a.out
11227:  ./a.out
08045000      12K rwx--    [ stack ]
08050000       4K r-x--  /home/arc/a.out
08060000       4K rwx--  /home/arc/a.out
FEE3E000       4K rwxs-    [ anon ]
FEE40000      24K rwx--    [ anon ]
FEE50000    1220K r-x--  /lib/libc.so.1
FEF91000      32K rwx--  /lib/libc.so.1
FEF99000       8K rwx--  /lib/libc.so.1
FEFB0000       4K rwx--    [ anon ]
FEFBF000     176K r-x--  /lib/ld.so.1
FEFFB000       8K rwx--  /lib/ld.so.1
FEFFD000       4K rwx--  /lib/ld.so.1
total      1500K

论坛徽章:
0
20 [报告]
发表于 2008-08-22 17:38 |只看该作者
原帖由 albcamus 于 2008-8-22 16:26 发表



对某个具体平台,例如386来说, ABI应该是Unix一个样, Windows一个样吧? 只知道所有的Unix平台都遵循那个叫做“Sys V..."的ABI, 不清楚windows怎么做的,应该不受约束(起码这份ABI文档的汇编格式都是 ...

不对吧,ABI应该是针对平台架构而言的吧。
例如x86,在x86上的OS在设计时都要遵守x86的ABI,而不应该分是什么操作系统
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP