一、Mem 原理
kswapd daemon 用来检查 pages_high 和 pages_low,如果可用内存少于 pages_low,kswapd 就开始扫描并试图释放 32个页面,
kswapd daemon 用来检查 pages_high 和 pages_low,如果可用内存少于 pages_low,kswapd 就开始扫描并试图释放 32个页面,
并且重复扫描释放的过程直到可用内存大于 pages_high 为止。扫描的时候检查3件事:1)如果页面没有修改,把页放到可用内存列表里;
2)如果页面被文件系统修改,把页面内容写到磁盘上;3)如果页面被修改 了,但不是被文件系统修改的,把页面写到交换空间。
![]()
• pdflush daemon 用来同步文件相关的内存页面,把内存页面及时同步到硬盘上。比如打开一个文件,文件被导入到内存里,
对文件做了修改后并保存后,内核并不马上保存文件到硬 盘,由 pdflush 决定什么时候把相应页面写入硬盘,这由一个内核参数
vm.dirty_background_ratio 来控制,比如下面的参数显示脏页面(dirty pages)达到所有内存页面10%的时候开始写入硬盘。
二、Mem 评估指标
1、可用内存
vmstat 中的free 或者 free中的free
2、实际使用内存
free中的used,包含了分配的cache和buffer, 这部分cache和buffer有可能并没有使用;
3、swap区域使用大小
(1)如果vmstat swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常
4、swap in / out
5、cache
6、buffer
5.6 是怎么被区分出来的?分配和使用规则是?cache和buffer到底什么区别?
三、分析实例
上面是一个频繁读写交换区的例子,可以观察到以下几点: 终保持在 256MB X 10% = 2.56MB 左右,当脏页达到10%的时候(vm.dirty_background_ratio = 10)就开始大量使用 swap; 根据上面讲的 kswapd 扫描时检查的三件事,如果页面被修改了,但不是被文件系统修改的,把页面写到 swap,所以这里 swapd 持续增加。 |
本文详细探讨了Linux系统中Mem的工作原理,包括kswapd daemon的内存管理策略,以及pdflush daemon在文件同步中的作用。同时,介绍了评估内存性能的关键指标,如可用内存、实际使用内存、swap区使用情况以及cache和buffer的区分和作用。通过具体的分析实例,帮助读者理解Linux内存管理的细节。
2286

被折叠的 条评论
为什么被折叠?



