Artificial intelligent assistant

What do the abbreviations in OOM Killer memory statistics report mean? When OOM Killer or kernel reports memory state, it uses the next abbreviations 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 I understand some of them, for example `M` \- movable `UMH` \- unmovable high. But I can not find what means `E` Where I can find documentation about it? My case, I have the next message page allocation stalls for 27840ms, order:0, mode:0x14200ca(GFP_HIGHUSER_MOVABLE) what means process requests 4kb page `(2^0 * 4kb)`, that should be coded as (MH) Am I right? Or `HIGHUSER` is coded in different way?

These are migration types, defined in `mm/page_alloc.c` in the kernel:


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
};


The types themselves are defined in `include/linux/mmzone.h`.

So `E` means reclaimable, and `H` means “high atomic”, _i.e._ “high-order atomic allocation”.

xcX3v84RxoQ-4GxG32940ukFUIEgYdPy 67253fa0097d9515ec01fc35d8b07e7e