免费注册 查看新帖 |

Chinaunix

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

『请教』get_free_pages申请大内存 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2009-10-16 14:01 |只看该作者
原帖由 eexplorer 于 2009-10-16 13:56 发表
查了一下,在compile kernel的时候有一个memory splict的选项,
可以改变PAGE_OFFSET的值。可以查一下 /lib/modules/`uname -r`/build/.config里CONFIG_PAGE_OFFSET的值。


我也正纳闷,怎么vmalloc有1G以上,我这最多只能划到500M多
原来可以自己指定user/kernel空间划分的,呵呵
学习了。

论坛徽章:
0
32 [报告]
发表于 2009-10-16 14:41 |只看该作者

回复 #26 platinum 的帖子

> 不知道这种代价到底有多大,对内存管理不熟悉,eexplorer 兄可否给我们讲一下

如果减少了线性映射空间,那么kernel可以直接使用memory,即slab, kmalloc可以使用的memory就会减少,多余的memory只能当多high mem来使用。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
33 [报告]
发表于 2009-10-16 14:59 |只看该作者
原帖由 platinum 于 2009-10-16 13:07 发表

我用的是 32bit 虚拟机,里面运行的是 32bit linux 系统 gentoo
虚拟机分配了 1536MB 内存(宿主机 2GB)


总共2G的内存吗,给虚拟机分配那么多啊?

论坛徽章:
0
34 [报告]
发表于 2009-10-16 15:47 |只看该作者

回复 #20 peimichael 的帖子

为什么留了那个8M?是用户空间到内核空间做双映射用的吗?

论坛徽章:
0
35 [报告]
发表于 2009-10-16 15:48 |只看该作者
原帖由 Godbach 于 2009-10-16 14:59 发表


总共2G的内存吗,给虚拟机分配那么多啊?

不是为了配合你做测试吗,临时修改了分配值

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
36 [报告]
发表于 2009-10-16 15:52 |只看该作者

回复 #35 platinum 的帖子

分配那么大的内存,宿主机还跑得动吗?

论坛徽章:
0
37 [报告]
发表于 2009-10-16 16:02 |只看该作者

回复 #34 epegasus 的帖子

/* Just any arbitrary offset to the start of the vmalloc VM area: the
* current 8MB value just means that there will be a 8MB "hole" after the
* physical memory until the kernel virtual memory starts.  That means that
* any out-of-bounds memory accesses will hopefully be caught.
* The vmalloc() routines leaves a hole of 4kB between each vmalloced
* area for the same reason.
*/            
#define VMALLOC_OFFSET  (8 * 1024 * 1024)

评分

参与人数 2可用积分 +45 收起 理由
T-bagwell + 30 重赏阅读代码和注释的兄弟,向你们学习
Godbach + 15 多谢分享

查看全部评分

论坛徽章:
0
38 [报告]
发表于 2009-10-16 16:23 |只看该作者
原帖由 Godbach 于 2009-10-16 15:52 发表
分配那么大的内存,宿主机还跑得动吗?

vmalloc 之前没问题,之后宿主系统差点死掉

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
39 [报告]
发表于 2009-10-16 16:43 |只看该作者

回复 #38 platinum 的帖子

呵呵,是啊。看来分配给虚拟机的内存只是一个上限。实际没用那么多时,宿主机都还可以用。一下子用了1G多,宿主机就没有多少了。

论坛徽章:
0
40 [报告]
发表于 2009-10-16 16:49 |只看该作者

回复 #37 eexplorer 的帖子

eexplorer always make the code wonderful.

8M是不是有点大呢?为什么是8M不是4K?

是不是所有的物理地址都要先映射到内核地址空间才能分配给用户用?如果不是,

当物理内存太多了,那远多出896的物理内存是不是可以分配独立的用户空间?而这个物理空间是不是就是在内核地址空间之外的,那么这个用户空间里的值到内核空间的copy怎么做?

----

哦,直接copy就可以了

[ 本帖最后由 epegasus 于 2009-10-16 16:53 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP