当系统中有大约 150MB 内存可用时,DotNET 进程被 OOM-Killer 终止,并且 OOM 最小标准设置为 20MB。
注意:我们使用的是 Linux 版本 5.4.3-yocto-standard+g852f89dfab60
TCPBufferRcv.Rc 调用了 oom-killer:gfp_mask=0x400dc0(GFP_KERNEL_ACCOUNT|__GFP_ZERO), order=0, oom_score_adj=0
CPU:1 PID:1263 通讯:TCPBufferRcv.Rc 受污染:GO 5.4.3-yocto-standard+g852f89dfab60 #1
[104418.214488]内存信息:[104418.218008]active_anon:162682 inactive_anon:22880isolated_anon:0[104418.218008]active_file:139inactive_file:495isolated_file:0[104418.218008]不可破坏:0脏:0写背部:0不稳定:0 [104418.218008]slab_reclaimable :1749 scrap_unreclaimable:3627 [104418.218008]映射:14313 shmem:32870页表:1284反弹:0 [104418.218008]免费:36829 free_pcp:24 free_cma:32512 [104418.252416]节点0 active_anon:65 0728kB inactive_anon:91520kB active_file:556kB inactive_file:1980kB 不可删除:0kB 隔离(匿名):0kB 隔离(文件):0kB 映射:57252kB 脏:0kB 回写:0kB shmem:131480kB writeback_tmp:0kB 不稳定:0kB all_unreclaimable?是的
[104418.276496]正常空闲:146944kB最小值:20480kB低:25600kB高:30720kB active_anon:650728kB inactive_anon:91520kB active_file:624kB inactive_file:2236kB不可删除:0kB writepending:0kB存在:1048576 kB 托管:1024476kB mlocked:0kB 内核堆栈:1968kB 页表:5136kB 反弹:0kB free_pcp:96kB local_pcp:32kB free_cma:130048kB [104418.305647] lowmem_reserve[]: 0 0
[104418.309303]正常:49784kB(联华电子)34638kB(联华电子)144016kB(UC)65032kB (C) 19164kB(UC)62128kB (C) 30256kB(UC)20512kB(UC)91024kB(UC)22048kB(UC)14096kB(U)08192kB 016384kB 032768kB = 146944kB
[104418.328709] 页面缓存页面总数为 33630 [104418.333180] 交换缓存中有 0 页 [104418.336716] 交换缓存统计信息:添加 0、删除 0、查找 0/0 [104418.342292] 可用交换 = 0kB [104418.345403] 总交换 = 0kB [104418.348434] 262144页 RAM [104418.351560] 0 页 HighMem/MovableOnly [104418.355753] 保留 6025 页 [104418.359337] 保留 81920 页 cma
[104418.687766] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),task=dotnet,pid=523,uid=0
[104418.696472]内存不足:杀死进程523(dotnet)total-vm:1602612kB,anon-rss:451100kB,file-rss:0kB,shmem-rss:0kB,UID:0 pgtables:858112kB oom_score_adj:0
[104418.859439] oom_reaper:收获进程 523(dotnet),现在 anon-rss:0kB,file-rss:0kB,shmem-rss:0kB
请帮助我们理解为什么当有足够的内存可供分配时内核会调用 OOM-killer?