From 72c274f4f9f5d6cb0a614dd7eb42ed91b8e25a7d Mon Sep 17 00:00:00 2001 From: gatieme Date: Sun, 14 Aug 2016 16:37:00 +0800 Subject: [PATCH] ... --- .../04-buddy/01-buddy_system/README.md | 152 ++++++++++++++++-- .../images/little_memory_fragmentation.png | Bin 0 -> 27767 bytes .../images/some_memory_fragmentation.png | Bin 17094 -> 22436 bytes 3 files changed, 135 insertions(+), 17 deletions(-) create mode 100644 study/kernel/02-memory/04-buddy/images/little_memory_fragmentation.png diff --git a/study/kernel/02-memory/04-buddy/01-buddy_system/README.md b/study/kernel/02-memory/04-buddy/01-buddy_system/README.md index 9b9b062..00c72da 100644 --- a/study/kernel/02-memory/04-buddy/01-buddy_system/README.md +++ b/study/kernel/02-memory/04-buddy/01-buddy_system/README.md @@ -176,13 +176,14 @@ default "11"` 在内核版本2.6.24之后, 增加了一些有效措施来防止内存碎片. -# 避免碎片 +#3 避免碎片 ------- 在第1章给出的简化说明中, 一个双链表即可满足伙伴系统的所有需求. 在内核版本2.6.23之前, 的确是这样. 但在内核2.6.24开发期间, 内核开发者对伙伴系统的争论持续了相当长时间. 这是因为伙伴系统是内核最值得尊敬的一部分,对它的改动不会被大家轻易接受 -##依据可移动性组织页 -------- + +##3.1 内存碎片 + 伙伴系统的基本原理已经在第1章中讨论过,其方案在最近几年间确实工作得非常好。但在Linux内存管理方面,有一个长期存在的问题:在系统启动并长期运行后,物理内存会产生很多碎片。该情形如下图所示 @@ -204,28 +205,145 @@ default "11"` 很长时间以来,物理内存的碎片确实是Linux的弱点之一。尽管已经提出了许多方法,但没有哪个方法能够既满足Linux需要处理的各种类型工作负荷提出的苛刻需求,同时又对其他事务影响不大。 + + + +##3.2 依据可移动性组织页 +------- + + 在内核2.6.24开发期间,防止碎片的方法最终加入内核。在我讨论具体策略之前,有一点需要澄清。 -文件系统也有碎片,该领域的碎片问题主要通过碎片合并工具解决。它们分析文件系统,重新排序已分配存储块,从而建立较大的连续存储区。理论上,该方法对物理内存也是可能的,但由于许多物理内存页不能移动到任意位置,阻碍了该方法的实施。因此,内核的方法是反碎片(anti-fragmentation), -即试图从最初开始尽可能防止碎片。 - +文件系统也有碎片,该领域的碎片问题主要通过碎片合并工具解决。它们分析文件系统,重新排序已分配存储块,从而建立较大的连续存储区. 理论上,该方法对物理内存也是可能的,但由于许多物理内存页不能移动到任意位置,阻碍了该方法的实施。因此,内核的方法是反碎片(anti-fragmentation), 即试图从最初开始尽可能防止碎片. + 反碎片的工作原理如何? + + 为理解该方法,我们必须知道内核将已分配页划分为下面3种不同类型。 -不可移动页:在内存中有固定位置,不能移动到其他地方。核心内核分配的大多数内存属于 -该类别。 - 可回收页:不能直接移动,但可以删除,其内容可以从某些源重新生成。例如,映射自文件 -的数据属于该类别。 -kswapd守护进程会根据可回收页访问的频繁程度,周期性释放此类内存。这是一个复杂的过 -程,本身就需要详细论述:第18章详细描述了页面回收。目前,了解到内核会在可回收页占 -据了太多内存时进行回收,就足够了。 -另外,在内存短缺(即分配失败)时也可以发起页面回收。有关内核发起页面回收的时机,更 -具体的信息请参考下文。 - 可移动页可以随意地移动。属于用户空间应用程序的页属于该类别。它们是通过页表映射的。 -如果它们复制到新位置,页表项可以相应地更新,应用程序不会注意到任何事。 +| 页面类型 | 描述 | 举例 | +|:---------:|:-----:|:-----:| +| 不可移动页 | 在内存中有固定位置, **不能移动**到其他地方. | 核心内核分配的大多数内存属于该类别 | +| 可移动页 | **可以随意地移动**. | 属于用户空间应用程序的页属于该类别. 它们是通过页表映射的
如果它们复制到新位置,页表项可以相应地更新,应用程序不会注意到任何事 | +| 可回收页 | **不能直接移动, 但可以删除, 其内容可以从某些源重新生成**. | 例如,映射自文件的数据属于该类别
kswapd守护进程会根据可回收页访问的频繁程度,周期性释放此类内存. , 页面回收本身就是一个复杂的过程. 内核会在可回收页占据了太多内存时进行回收, 在内存短缺(即分配失败)时也可以发起页面回收. | + + + +页的可移动性,依赖该页属于3种类别的哪一种. 内核使用的**反碎片技术**, 即基于将具有相同可移动性的页分组的思想. + + +为什么这种方法有助于减少碎片? + + +由于页无法移动, 导致在原本几乎全空的内存区中无法进行连续分配. 根据页的可移动性, 将其分配到不同的列表中, 即可防止这种情形. 例如, 不可移动的页不能位于可移动内存区的中间, 否则就无法从该内存区分配较大的连续内存块. + + +想一下, 上图中大多数空闲页都属于可回收的类别, 而分配的页则是不可移动的. 如果这些页聚集到两个不同的列表中, 如下图所示. 在不可移动页中仍然难以找到较大的连续空闲空间, 但对可回收的页, 就容易多了. + + +![减少内存碎片](../images/little_memory_fragmentation.png) + + +但要注意, 从最初开始, 内存并未划分为可移动性不同的区. 这些是在运行时形成的. 内核的另一种方法确实将内存分区, 分别用于可移动页和不可移动页的分配, 我会下文讨论其工作原理. 但这种划分对这里描述的方法是不必要的 + + + +##3.3 避免碎片数据结构 +------- + + +尽管内核使用的反碎片技术卓有成效,它对伙伴分配器的代码和数据结构几乎没有影响。内核定义了一些枚举常量(早期用宏来实现)来表示不同的迁移类型, 参见[include/linux/mmzone.h?v=4.7, line 38](http://lxr.free-electrons.com/source/include/linux/mmzone.h?v=4.7#L38) + +```cpp +enum { + MIGRATE_UNMOVABLE, + MIGRATE_MOVABLE, + MIGRATE_RECLAIMABLE, + MIGRATE_PCPTYPES, /* the number of types on the pcp lists */ + MIGRATE_HIGHATOMIC = MIGRATE_PCPTYPES, +#ifdef CONFIG_CMA + /* + * MIGRATE_CMA migration type is designed to mimic the way + * ZONE_MOVABLE works. Only movable pages can be allocated + * from MIGRATE_CMA pageblocks and page allocator never + * implicitly change migration type of MIGRATE_CMA pageblock. + * + * The way to use it is to change migratetype of a range of + * pageblocks to MIGRATE_CMA which can be done by + * __free_pageblock_cma() function. What is important though + * is that a range of pageblocks must be aligned to + * MAX_ORDER_NR_PAGES should biggest page be bigger then + * a single pageblock. + */ + MIGRATE_CMA, +#endif +#ifdef CONFIG_MEMORY_ISOLATION + MIGRATE_ISOLATE, /* can't allocate from here */ +#endif + MIGRATE_TYPES +}; +``` + + +| 宏 | 类型 | +|:----:|:-----:| +| MIGRATE_UNMOVABLE | 不可移动页 | +| MIGRATE_MOVABLE | 可移动页 | +| MIGRATE_RECLAIMABLE | 可回收页 | +| MIGRATE_PCPTYPES | 是per_cpu_pageset, 即用来表示每CPU页框高速缓存的数据结构中的链表的迁移类型数目 | +| MIGRATE_HIGHATOMIC | = MIGRATE_PCPTYPES, 在罕见的情况下,内核需要分配一个高阶的页面块而不能休眠. | +| MIGRATE_CMA | Linux内核最新的连续内存分配器(CMA), 用于避免预留大块内存 | +| MIGRATE_ISOLATE | 是一个特殊的虚拟区域, 用于跨越NUMA结点移动物理内存页. 在大型系统上, 它有益于将物理内存页移动到接近于使用该页最频繁的CPU. | +| MIGRATE_TYPES | 只是表示迁移类型的数目, 也不代表具体的区域 | + +对于MIGRATE_CMA类型, 其中在我们使用ARM等嵌入式Linux系统的时候, 一个头疼的问题是GPU, Camera, HDMI等都需要预留大量连续内存,这部分内存平时不用,但是一般的做法又必须先预留着. 目前, Marek Szyprowski和Michal Nazarewicz实现了一套全新的Contiguous Memory Allocator. 通过这套机制, 我们可以做到不预留内存,这些内存平时是可用的,只有当需要的时候才被分配给Camera,HDMI等设备. 参照[宋宝华--Linux内核最新的连续内存分配器(CMA)——避免预留大块内存](http://21cnbao.blog.51cto.com/109393/898846/), 内核为此提供了函数is_migrate_cma来检测当前类型是否为MIGRATE_CMA, 该函数定义在[include/linux/mmzone.h?v=4.7, line 69](http://lxr.free-electrons.com/source/include/linux/mmzone.h?v=4.7#L69) + +```cpp +/* In mm/page_alloc.c; keep in sync also with show_migration_types() there */ +extern char * const migratetype_names[MIGRATE_TYPES]; + +#ifdef CONFIG_CMA +# define is_migrate_cma(migratetype) unlikely((migratetype) == MIGRATE_CMA) +#else +# define is_migrate_cma(migratetype) false +#endif +``` + +```cpp +#define for_each_migratetype_order(order, type) \ + for (order = 0; order < MAX_ORDER; order++) \ + for (type = 0; type < MIGRATE_TYPES; type++) + +extern int page_group_by_mobility_disabled; + +#define NR_MIGRATETYPE_BITS (PB_migrate_end - PB_migrate + 1) +#define MIGRATETYPE_MASK ((1UL << NR_MIGRATETYPE_BITS) - 1) + +#define get_pageblock_migratetype(page) \ + get_pfnblock_flags_mask(page, page_to_pfn(page), \ + PB_migrate_end, MIGRATETYPE_MASK) +``` + + +对伙伴系统数据结构的主要调整, 是将空闲列表分解为MIGRATE_TYPE个列表. + +```cpp +struct free_area { + struct list_head free_list[MIGRATE_TYPES]; +unsigned long nr_free; +}; +``` + + + + + + + + # 分配器API ------- diff --git a/study/kernel/02-memory/04-buddy/images/little_memory_fragmentation.png b/study/kernel/02-memory/04-buddy/images/little_memory_fragmentation.png new file mode 100644 index 0000000000000000000000000000000000000000..3f3bf21ffc200bc8eba441a4b1a45ad4175bd0e1 GIT binary patch literal 27767 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 b`#X`}C&Sv+C(8dW6oZqNP!O;DV&wmSv}yb+ literal 0 HcmV?d00001 diff --git a/study/kernel/02-memory/04-buddy/images/some_memory_fragmentation.png b/study/kernel/02-memory/04-buddy/images/some_memory_fragmentation.png index 1356f601f34d289d44f99c35ae59ecdcfbe10ead..04f07fe89aef9c00b499a9dea72b77f1ebe0db55 100644 GIT binary patch literal 22436 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


-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

0ZSS3F@=V0_P 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 literal 17094 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