Почему в этом случае не могут успешно страниц Kmalloc?Linux

Ответить
Anonymous
 Почему в этом случае не могут успешно страниц Kmalloc?

Сообщение Anonymous »

См. Ниже журналы, критический драйвер ядра не может применить к большому блоку непрерывной памяти, а затем панику: < /p>

Код: Выделить всё

[29001.362425] kworker/u12:4: page allocation failure: order:4, mode:0x40dc0(GFP_KERNEL|__GFP_COMP|__GFP_ZERO), nodemask=(null),cpuset=/,mems_allowed=0

[29001.363720] Call trace:
[29001.363720]  dump_backtrace.cfi_jt+0x0/0x8
[29001.363727]  dump_stack_lvl+0x80/0xb8
[29001.363731]  warn_alloc+0x164/0x1e4
[29001.363734]  __alloc_pages_slowpath+0xaac/0xc1c
[29001.363736]  __alloc_pages+0x19c/0x344
[29001.363738]  kmalloc_order+0x54/0x1d8
[29001.363740]  kmalloc_order_trace+0x34/0x154
[29001.363742]  __kmalloc+0x518/0x754
// ...

[29001.382226] Node 0 active_anon:74916kB inactive_anon:4422932kB active_file:2279968kB inactive_file:8837080kB unevictable:4024kB isolated(anon):0kB isolated(file):0kB mapped:3089544kB dirty:3924kB writeback:0kB shmem:60656kB shmem_thp: 0kB shmem_pmdmapped: 0kB anon_thp: 0kB writeback_tmp:0kB kernel_stack:113632kB shadow_call_stack:103752kB pagetables:195716kB all_unreclaimable? no
[29001.382231] DMA32 free:157208kB min:3356kB low:4192kB high:5028kB reserved_highatomic:0KB active_anon:168kB inactive_anon:179568kB active_file:6948kB inactive_file:19868kB unevictable:0kB writepending:4kB present:532480kB managed:478416kB mlocked:0kB bounce:0kB free_pcp:0kB local_pcp:0kB free_cma:73684kB
[29001.382235] lowmem_reserve[]: 0 20049 20049
[29001.382378] Normal free:327732kB min:144096kB low:180120kB high:216144kB reserved_highatomic:4096KB active_anon:74748kB inactive_anon:4243380kB active_file:2273276kB inactive_file:8817248kB unevictable:4024kB writepending:3700kB present:21282904kB managed:20530480kB mlocked:4024kB bounce:0kB free_pcp:1844kB local_pcp:680kB free_cma:0kB
[29001.382382] lowmem_reserve[]: 0 0 0
[29001.382385] DMA32: 3493*4kB (UMEC) 1622*8kB (UMEC) 663*16kB (UMEC) 338*32kB (UMEC) 383*64kB (UMEC) 245*128kB (UMEC) 91*256kB (UMC) 40*512kB (UMEC) 5*1024kB (UM) 2*2048kB (UM) 0*4096kB = 157236kB
[29001.382397] Normal: 49981*4kB (UMEH) 7697*8kB (UMEH) 3890*16kB (UMEH) 41*32kB (UMEH) 4*64kB (H) 2*128kB (H) 3*256kB (H) 0*512kB 0*1024kB 0*2048kB 0*4096kB = 326332kB
[29001.382408] 2794964 total pagecache pages
[29001.382409] 2 pages in swap cache
[29001.382410] Swap cache stats: add 1508827, delete 1508825, find 23/626536
[29001.382411] Free swap  = 4136292kB
[29001.382413] Total swap = 4194300kB
[29001.382413] 5453846 pages RAM
[29001.382414] 0 pages HighMem/MovableOnly
[29001.382415] 201622 pages reserved
[29001.382416] 70656 pages cma reserved
Из журналов мы видим, что драйвер хочет, чтобы kmalloc a (2^4)*4 КБ непрерывные страницы.
После расчета с режимом: 0x40dc0 (GFP_KERNEL | __GFP_COMP | __GFP_ZERO), мы можем получить цель = нормальный, migrateType = umIgratype = umIgratepe = umIgratepe = inm. /> В моем понимании, ядро ​​сначала попытается выделить память из обычной зоны. Тем не менее, все смежные блоки памяти, превышающие 64 КБ в нормальной зоне, являются migrate_highatomic, который не может быть Kmalloc с Migrate_unmovable. Мы видим, что ZONE_DMA32 имеет 383*64KB (UMEC), но это все еще kmalloc не удалось.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... -this-case
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»