当OOM Killer或内核报告内存状态时,它使用下一个缩写
Node 0 DMA: 26*4kB (M) 53*8kB (UM) 33*16kB (ME) 23*32kB (UME) 6*64kB (ME) 7*128kB (UME) 1*256kB (M) 2*512kB (ME) 0*1024kB 0*2048kB 0*4096kB = 4352kB
Node 0 DMA32: 803*4kB (UME) 3701*8kB (UMEH) 830*16kB (UMH) 2*32kB (H) 0*64kB 0*128kB 1*256kB (H) 0*512kB 0*1024kB 0*2048kB 0*4096kB = 46420kB
我理解其中的一些,例如M
-可移动的UMH
-不可移动的高。但是我找不到E
的意思,在哪里我可以找到关于它的文档?
我的案子,我有下一个消息
page allocation stalls for 27840ms, order:0, mode:0x14200ca(GFP_HIGHUSER_MOVABLE)
什么是进程请求4kb页(2^0 * 4kb)
,应该编码为(MH),对吗?或者HIGHUSER
是以不同的方式编码的?
发布于 2019-05-04 01:08:39
这些是在内核中的mm/page_alloc.c
中定义的迁移类型:
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
};
类型本身是在include/linux/mmzone.h
中定义的。
因此,E
的意思是可收回的,而H
的意思是“高原子的”,即“高阶原子分配”。
https://unix.stackexchange.com/questions/516993
复制相似问题