免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 瀚海书香

linux内存管理讨论——欢迎大家围观! [复制链接]

论坛徽章:
0
发表于 2012-04-01 16:53 |显示全部楼层
大家都是从内核级别,设计级别讲的,比较高深。
我讲点实际应用中:
1.32 vs 64.
如果内存超过4G,基本上还是用64位系统+64位程序了,
就算用了pae,或者64系统跑32位程序,程序占用的内存数也是有限的
2.要保证一定的内存空闲度。
linux默认会把内存用在cache和buffer上,如果有较高的io,最好保证系统有30%甚至是40%的内存空闲
3.不要依赖swap
swap虽好,但是如果有一点占用,对系统的性能也会影响很大
4.oom经常会干掉sshd
oom在实际应用中不是想想的那么好用,该杀的不杀,不该杀的杀掉了....当然这个貌似可以配置优先级,不过具体没设置过.

论坛徽章:
0
发表于 2012-04-01 17:07 |显示全部楼层
这个奖品不错

论坛徽章:
2
CU十二周年纪念徽章
日期:2013-10-24 15:41:34处女座
日期:2013-12-27 22:22:41
发表于 2012-04-01 17:18 |显示全部楼层
回复 51# ak47mig


脏页是可控的。前些时面了个试,看了一下这方面的代码,可能有点冷门,我正好简单概括一下。

基本上,用户通过proc目录设定两个参数来决定系统对脏页的容忍程度。每个一个CPU弄脏一定数量的disk cache里的页时,就要检查一下当前脏页情况如何。检查的频率要设置成,在最极端的情况下也可以保证,两次检查脏页情况期间,被弄脏的页数量不超过系统总内存的3%。最极端的情况是,两次检查期间,所有CPU并发地弄脏页。

每一次检查并不一定会引发页回写的操作。判断是否要采取行为取决于用户设置的容忍度,但并非简单将这个值与系统脏页值做对比。

下班了,下次有机会再说吧。

论坛徽章:
0
发表于 2012-04-02 09:47 |显示全部楼层

抛开cache,每条指令执行前都要从CPU 外部SDRAM取指令(Prefetch),如果是LDR/STR/LDM/STM 等指令,这些指令执行的时候涉及到外部存储器数据的装载和保存,所有这些都需要把相关的地址送到系统总线, 再有总线控制器解码然后送到相关的外设控制器。不同的外设控制器对总线来的地址或者数据就按照自己的协议和规范来操作

MMU打开的时候:指令预取 和 Load/Store指令执行的时候,地址都会送到MMU. MMU 和ARM核一样是硬件的,当然MMU事先必须配置,包括转换类型,页表,转换表基地址。 把这些信息告诉MMU.MMU就可以把虚拟地址转换成物理地址,最后送到总线上,对于ARM来讲,控制外设,一定要把外设的物理地址送到总线才可以。

论坛徽章:
0
发表于 2012-04-02 21:19 |显示全部楼层


首先感谢wdy 热心给图。当时就收藏了,但是没有细嚼。
借这个机会,谈谈我的读图感受吧:
各位大大随便抛砖吧。

内存管理分为 用户空间和核心地址空间。
明显区别是:核心地址空间访问页,是直接访问。

首先看用户空间:
pgd是创建一个进程的过程中分配的。
图中的用户线性地址是典型的32位寻址。
用户程序只能看见虚地址空间。

再说核心空间:
核心空间分为3个zone,分界线分别为 16m和896m.
free_pages的管理是 由伙伴算法实施的。

至于内核高端内存的映射,我没有系统学习,正好各位大大可以补充。

newbaby 66

论坛徽章:
0
发表于 2012-04-02 22:03 |显示全部楼层
本帖最后由 titer1 于 2012-04-02 22:07 编辑

今天有事,把图贴上,以后补上我的浅见


vm子系统交互图示

论坛徽章:
0
发表于 2012-04-02 22:09 |显示全部楼层
对了,上面的图示 ,来自于 北航的翻译版本。补充一下。

现在贴出书中关于 内核空间的解释图示:


论坛徽章:
0
发表于 2012-04-02 22:10 |显示全部楼层
其实一句话,认真读Mel Gorman 的
Understanding The Linux Virtual Memory Manager 是最好的方法,
作者还有一个 类似情景分析的 Code Commentary On The Linux Virtual Memory Manager

论坛徽章:
0
发表于 2012-04-03 07:22 来自手机 |显示全部楼层
早上手机饿登录一看,是不是大牛都放假了?大家顶起哈

论坛徽章:
0
发表于 2012-04-03 18:32 |显示全部楼层
回复 54# moniskiller

好东西,不错不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会

【架构革新 高效可控】2020年12月21日-23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP