一、内存管理 中migration type中MIGRATE_HIGHATOMIC介绍:
在系统运行一段时间后,会出现大量内存碎片,会导致高阶页块(high-order page)的分配失败。
为了避免,减轻这种情况,创建了MIGRATE_HIGHATOMIC类型的页面。在此后的分配中,只有
当相同的高阶,并拥有高级分配权限时,才会分配这样的页块。当分配单个页框失败时,这样的页块
会被回收,类型发生变化。
//kernel-4.9/mm/page_alloc.c
static void show_migration_types(unsigned char type)
{
static const char types[MIGRATE_TYPES] = {
[MIGRATE_UNMOVABLE] = 'U',
[MIGRATE_MOVABLE] = 'M',
[MIGRATE_RECLAIMABLE] = 'E',
[MIGRATE_HIGHATOMIC] = 'H',
#ifdef CONFIG_CMA
[MIGRATE_CMA] = 'C',
#endif
#ifdef CONFIG_MEMORY_ISOLATION
[MIGRATE_ISOLATE] = 'I',
#endif
};
......
}
二、MIGRATE_HIGHATOMIC类型页面的保留及回收:
1、在系统中,保存的MIGRATE_HIGHATOMIC类型的页面的大小通过如下函数定义,也就是
对应zone的1/100加上一个pagebl