关于PrefetchAbort

本文详细阐述了在使用LPC2132平台调试UART时遇到的中断异常退出问题,通过添加关键的__irq标识符成功解决了该问题,避免了PrefetchAbort错误。

在LPC2132平台下调试UART,发现程序总是死在了PrefetchAbort

;取指令中止
PrefetchAbort
        B       PrefetchAbort

经过仔细的查看和分析程序,原来是自己没有添加关键字__irq。导致中断程序退出异常。

Hardware name: FH8856V200 [2025-07-30 03:29:02][990912.386642] [<c00128f0>] (unwind_backtrace) from [<c00116a4>] (show_stack+0x10/0x14) [2025-07-30 03:29:02][990912.394475] [<c00116a4>] (show_stack) from [<c005c8d8>] (dump_header.constprop.7+0x68/0x164) [2025-07-30 03:29:02][990912.402905] [<c005c8d8>] (dump_header.constprop.7) from [<c005cbf4>] (oom_kill_process+0x64/0x2c8) [2025-07-30 03:29:02][990912.411882] [<c005cbf4>] (oom_kill_process) from [<c005d10c>] (out_of_memory+0x254/0x368) [2025-07-30 03:29:02][990912.420102] [<c005d10c>] (out_of_memory) from [<c0060194>] (__alloc_pages_nodemask+0x650/0x794) [2025-07-30 03:29:02][990912.428820] [<c0060194>] (__alloc_pages_nodemask) from [<c005bb6c>] (filemap_fault+0x264/0x37c) [2025-07-30 03:29:02][990912.437565] [<c005bb6c>] (filemap_fault) from [<c00740bc>] (__do_fault+0x68/0xbc) [2025-07-30 03:29:02][990912.445193] [<c00740bc>] (__do_fault) from [<c0076094>] (handle_mm_fault+0x280/0x9e8) [2025-07-30 03:29:02][990912.452995] [<c0076094>] (handle_mm_fault) from [<c0014214>] (do_page_fault+0x1d4/0x290) [2025-07-30 03:29:02][990912.461023] [<c0014214>] (do_page_fault) from [<c00092fc>] (do_PrefetchAbort+0x38/0x9c) [2025-07-30 03:29:02][990912.469107] [<c00092fc>] (do_PrefetchAbort) from [<c000ec48>] (ret_from_exception+0x0/0x18) [2025-07-30 03:29:02][990912.477573] Exception stack(0xc4223fb0 to 0xc4223ff8) [2025-07-30 03:29:02][990912.484120] 3fa0: 00000000 00000002 00000000 00000000 [2025-07-30 03:29:02][990912.490733] 3fc0: 00163be8 00000032 00163b54 00000500 b2697eac b6c5a000 00163be8 b6c48000 [2025-07-30 03:29:02][990912.498971] 3fe0: b2698544 b2697e88 0002026c 0002026c 80000010 ffffffff [2025-07-30 03:29:02][990912.505603] Mem-Info: [2025-07-30 03:29:02][990912.507938] active_anon:2011 inactive_anon:5129 isolated_anon:0 [2025-07-30 03:29:02][990912.507938] active_file:28 inactive_file:30 isolated_file:0 [2025-07-30 03:29:02][990912.507938] unevictable:9263 dirty:3 writeback:0 unstable:0 [2025-07-30 03:29:02][990912.507938] slab_reclaimable:208 slab_unreclaimable:788 [2025-07-30 03:29:02][990912.507938] mapped:7418 shmem:5129 pagetables:112 bounce:0 [2025-07-30 03:29:02][990912.507938] free:512 free_pcp:17 free_cma:0 [2025-07-30 03:29:02][990912.540668] Node 0 active_anon:8044kB inactive_anon:20516kB active_file:112kB inactive_file:120kB unevictable:37052kB isolated(anon):0kB isolated(file):0kB mapped:29672kB dirty:12kB writeback:0kB shmem:20516kB writeback_tmp:0kB unstable:0kB pages_scanned:92 all_unreclaimable? yes [2025-07-30 03:29:02][990912.566890] Normal free:2048kB min:2048kB low:2560kB high:3072kB active_anon:8044kB inactive_anon:20516kB active_file:112kB inactive_file:120kB unevictable:37052kB writepending:12kB present:82944kB managed:77540kB mlocked:0kB slab_reclaimable:832kB slab_unreclaimable:3152kB kernel_stack:1096kB pagetables:448kB bounce:0kB free_pcp:68kB local_pcp:68kB free_cma:0kB [2025-07-30 03:29:02][990912.597340] lowmem_reserve[]: 0 0 [2025-07-30 03:29:02][990912.600620] Normal: 38*4kB (UME) 9*8kB (UM) 2*16kB (M) 0*32kB 2*64kB (UM) 1*128kB (M) 6*256kB (U) 0*512kB 0*1024kB 0*2048kB 0*4096kB = 2048kB [2025-07-30 03:29:02][990912.613331] MIGRATE_TYPE : 4kB 8kB 16kB 32kB 64kB 128kB 256kB 512kB 1024kB 2048kB 4096kB [2025-07-30 03:29:02][990912.622824] UNMOVABLE : 1 1 0 0 1 0 6 0 0 0 0 = 1612kB [2025-07-30 03:29:02][990912.633019] MOVABLE : 36 8 2 0 1 1 0 0 0 0 0 = 432kB [2025-07-30 03:29:02][990912.643129] RECLAIMABLE : 1 0 0 0 0 0 0 0 0 0 0 = 4kB [2025-07-30 03:29:02][990912.653064] HIGHATOMIC : 0 0 0 0 0 0 0 0 0 0 0 = 0kB [2025-07-30 03:29:02][990912.662999] CMA : 0 0 0 0 0 0 0 0 0 0 0 = 0kB [2025-07-30 03:29:02][990912.672935] ISOLATE : 0 0 0 0 0 0 0 0 0 0 0 = 0kB [2025-07-30 03:29:02][990912.682878] 14456 total pagecache pages [2025-07-30 03:29:02][990912.686768] 20736 pages RAM [2025-07-30 03:29:02][990912.689611] 0 pages HighMem/MovableOnly [2025-07-30 03:29:02][990912.693517] 1351 pages reserved [2025-07-30 03:29:02][990912.696696] 0 pages cma reserved [2025-07-30 03:29:02][990912.699988] [ pid ] uid tgid total_vm rss nr_ptes nr_pmds swapents oom_score_adj name [2025-07-30 03:29:02][990912.708569] [ 109] 0 109 223 179 3 0 0 -1000 udevd [2025-07-30 03:29:02][990912.718786] [ 122] 0 122 217 169 3 0 0 -1000 udevd [2025-07-30 03:29:02][990912.725845] [ 123] 0 123 217 169 3 0 0 -1000 udevd [2025-07-30 03:29:02][990912.734480] [ 164] 0 164 843 411 4 0 0 -1000 hatsysd [2025-07-30 03:29:02][990912.743306] [ 187] 0 187 671 403 4 0 0 -1000 hatlogd [2025-07-30 03:29:02][990912.752157] [ 209] 0 209 323 210 3 0 0 0 sh [2025-07-30 03:29:02][990912.760473] [ 224] 0 224 19350 5944 37 0 0 0 hikdsp [2025-07-30 03:29:02][990912.769231] [ 275] 0 275 250 109 3 0 0 0 execSystemCmd [2025-07-30 03:29:02][990912.778671] [ 276] 0 276 1965 679 6 0 0 0 diald [2025-07-30 03:29:02][990912.787223] [ 307] 0 307 15804 7254 25 0 0 0 doris [2025-07-30 03:29:03][990912.795837] [ 343] 0 343 1131 628 4 0 0 0 dialdMain1 [2025-07-30 03:29:03][990912.804907] [ 372] 0 372 415 265 3 0 0 0 hostapd [2025-07-30 03:29:03][990912.815288] [ 379] 0 379 676 579 3 0 0 0 dhcpd [2025-07-30 03:29:03][990912.822358] [ 413] 0 413 3197 538 8 0 0 0 modemTask1 [2025-07-30 03:29:03][990912.831401] Out of memory: Kill process 307 (doris) score 364 or sacrifice child [2025-07-30 03:29:03][990912.838920] Killed process 307 (doris) total-vm:63216kB, anon-rss:2856kB, file-rss:6348kB, shmem-rss:19812kB [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.810553]<0-4> [990912.370063] BEEP invoked oom-killer: gfp_mask=0x24201ca(GFP_HIGHUSER_MOVABLE|__GFP_COLD), nodemask=0, order=0, oom_score_adj=0 [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.811428]<0-4> [990912.376127] CPU: 0 PID: 243 Comm: BEEP Tainted: P O 4.9.129 #1 [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.812058]<0-4> [990912.384550] Hardware name: FH8856V200 [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.812694]<0-4> [990912.386642] [<c00128f0>] (unwind_backtrace) from [<c00116a4>] (show_stack+0x10/0x14) [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.818122]<0-4> [990912.394475] [<c00116a4>] (show_stack) from [<c005c8d8>] (dump_header.constprop.7+0x68/0x164) [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.818766]<0-4> [990912.402905] [<c005c8d8>] (dump_header.constprop.7) from [<c005cbf4>] (oom_kill_process+0x64/0x2c8) [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.819390]<0-4> [990912.411882] [<c005cbf4>] (oom_kill_process) from [<c005d10c>] (out_of_memor[990912.965578] oom_reaper: reaped process 307 (doris), now anon-rss:4kB, file-rss:0kB, shmem-rss:19812kB [2025-07-30 03:29:03]y+0x254/0x368) [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.820002]<0-4> [990912.420102] [<c005d10c>] (out_of_memory) from [<c0060194>] (__alloc_pages_nodemask+0x650/0x794) [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.820620]<0-4> [990912.428820] [<c0060194>] (__alloc_pages_nodemask) from [<c005bb6c>] (filemap_fault+0x264/0x37c) [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.821226]<0-4> [990912.437565] [<c005bb6c>] (filemap_fault) from [<c00740bc>] (__do_fault+0x68/0xbc) [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.871698]<0-4> [990912.445193] [<c00740bc>] (__do_fault) from [<c0076094>] (handle_mm_fault+0x280/0x9e8) [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.872727]<0-4> [990912.452995] [<c0076094>] (handle_mm_fault) from [<c0014214>] (do_page_fault+0x1d4/0x290) [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.873351]<0-4> [990912.461023] [<c0014214>] (do_page_fault) from [<c00092fc>] (do_PrefetchAbort+0x38/0x9c) [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.890761]<0-4> [990912.469107] [<c00092fc>] (do_PrefetchAbort) from [<c000ec48>] (ret_from_exception+0x0/0x18) [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.891382]<0-4> [990912.477573] Exception stack(0xc4223fb0 to 0xc4223ff8) [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.891943]<0-4> [990912.484120] 3fa0: 00000000 00000002 00000000 00000000 [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.892516]<0-4> [990912.490733] 3fc0: 00163be8 00000032 00163b54 00000500 b2697eac b6c5a000 00163be8 b6c48000 [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.893075]<0-4> [990912.498971] 3fe0: b2698544 b2697e88 0002026c 0002026c 80000010 ffffffff [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.893653]<0-4> [990912.505603] Mem-Info: [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.921004]<0-4> [990912.507938] active_anon:2011 inactive_anon:5129 isolated_anon:0 [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.921667]<0-4> [990912.507938] active_file:28 inactive_file:30 isolated_file:0 [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.934488]<0-4> [990912.507938] unevictable:9263 dirty:3 writeback:0 unstable:0 [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.935203]<0-4> [990912.507938] slab_reclaimable:208 slab_unreclaimable:788 [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.935852]<0-4> [990912.507938] mapped:7418 shmem:5129 pagetables:112 bounce:0 [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.936457]<0-4> [990912.507938] free:512 free_pcp:17 free_cma:0 [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.940876]<0-4> [990912.540668] Node 0 active_anon:8044kB inactive_anon:20516kB active_file:112kB inactive_file:120kB unevictable:37052kB isolated(anon):0kB isolated(file):0kB mapped:29672kB dirty:12kB writeback:0kB shmem:20516kB writeback_tmp:0kB unstable:0kB pages_scanned:92 all_unreclaimable? yes [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.943681]<0-4> [990912.566890] Normal free:2048kB min:2048kB low:2560kB high:3072kB active_anon:8044kB inactive_anon:20516kB active_file:112kB inactive_file:120kB unevictable:37052kB writepending:12kB present:82944kB managed:77540kB mlocked:0kB slab_reclaimable:832kB slab_unreclaimable:3152kB kernel_stack:1096kB pagetables:448kB bounce:0kB free_pcp:68kB local_pcp:68kB free_cma:0kB [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.945423]<0-4> [990912.600620] Normal: 38*4kB (UME) 9*8kB (UM) 2*16kB (M) 0*32kB 2*64kB (UM) 1*128kB (M) 6*256kB (U) 0*512kB 0*1024kB 0*2048kB 0*4096kB = 2048kB [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.946426]<0-4> [990912.622824] UNMOVABLE : 1 1 0 0 1 0 6 0 0 0 0 = 1612kB [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.947052]<0-4> [990912.633019] MOVABLE : 36 8 2 0 1 1 0 0 0 0 0 = 432kB [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.947682]<0-4> [990912.643129] RECLAIMABLE : 1 0 0 0 0 0 0 0 0 0 0 = 4kB [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.948298]<0-4> [990912.653064] HIGHATOMIC : 0 0 0 0 0 0 0 0 0 0 0 = 0kB [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.948928]<0-4> [990912.662999] CMA : 0 0 0 0 0 0 0 0 0 0 0 = 0kB [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.949572]<0-4> [990912.672935] ISOLATE : 0 0 0 0 0 0 0 0 0 0 0 = 0kB [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.950475]<0-4> [990912.682878] 14456 total pagecache pages [2025-07-30 03:29:03]Jul 30 03:29:06 autoelec kernel: - - [990912.951078]<0-4> [990912.686768] 20736 pages RAM [2025-07-30 03:29:03]Jul 30 03:29:07 autoelec kernel: - - [990913.280998]<0-4> [990912.689611] 0 pages HighMem/MovableOnly [2025-07-30 03:29:03]Jul 30 03:29:07 autoelec kernel: - - [990913.281655]<0-4> [990912.693517] 1351 pages reserved [2025-07-30 03:29:03]Jul 30 03:29:07 autoelec kernel: - - [990913.282277]<0-4> [990912.696696] 0 pages cma reserved [2025-07-30 03:29:03]Jul 30 03:29:07 autoelec kernel: - - [990913.282901]<0-6> [990912.699988] [ pid ] uid tgid total_vm rss nr_ptes nr_pmds swapents oom_score_adj name [2025-07-30 03:29:03]Jul 30 03:29:07 autoelec kernel: - - [990913.283527]<0-6> [990912.708569] [ 109] 0 109 223 179 3 0 0 -1000 udevd [2025-07-30 03:29:03]Jul 30 03:29:07 autoelec kernel: - - [990913.284766]<0-6> [990912.718786] [ 122] 0 122 217 169 3 0 0 -1000 udevd [2025-07-30 03:29:03]Jul 30 03:29:07 autoelec kernel: - - [990913.285419]<0-6> [990912.725845] [ 123] 0 123 217 169 3 0 0 -1000 udevd [2025-07-30 03:29:03]Jul 30 03:29:07 autoelec kernel: - - [990913.286072]<0-6> [990912.734480] [ 164] 0 164 843 411 4 0 0 -1000 hatsysd [2025-07-30 03:29:03]Jul 30 03:29:07 autoelec kernel: - - [990913.286697]<0-6> [990912.743306] [ 187] 0 187 671 403 4 0 0 -1000 hatlogd [2025-07-30 03:29:03]Jul 30 03:29:07 autoelec kernel: - - [990913.287315]<0-6> [990912.752157] [ 209] 0 209 323 210 3 0 0 0 sh [2025-07-30 03:29:03]Jul 30 03:29:07 autoelec kernel: - - [990913.287938]<0-6> [990912.760473] [ 224] 0 224 19350 5944 37 0 0 0 hikdsp [2025-07-30 03:29:03]Jul 30 03:29:07 autoelec kernel: - - [990913.288555]<0-6> [990912.769231] [ 275] 0 275 250 109 3 0 0 0 execSystemCmd [2025-07-30 03:29:03]Jul 30 03:29:07 autoelec kernel: - - [990913.289174]<0-6> [990912.778671] [ 276] 0 276 1965 679 6 0 0 0 diald [2025-07-30 03:29:03]Jul 30 03:29:07 autoelec kernel: - - [990913.289813]<0-6> [990912.787223] [ 307] 0 307 15804 7254 25 0 0 0 doris [2025-07-30 03:29:03]Jul 30 03:29:07 autoelec kernel: - - [990913.290423]<0-6> [990912.795837] [ 343] 0 343 1131 628 4 0 0 0 dialdMain1 [2025-07-30 03:29:03]Jul 30 03:29:07 autoelec kernel: - - [990913.291049]<0-6> [990912.804907] [ 372] 0 372 415 265 3 0 0 0 hostapd [2025-07-30 03:29:03]Jul 30 03:29:07 autoelec kernel: - - [990913.291680]<0-6> [990912.815288] [ 379] 0 379 676 579 3 0 0 0 dhcpd [2025-07-30 03:29:03]Jul 30 03:29:07 autoelec kernel: - - [990913.292298]<0-6> [990912.822358] [ 413] 0 413 3197 538 8 0 0 0 modemTask1 [2025-07-30 03:29:03]Jul 30 03:29:07 autoelec kernel: - - [990913.293305]<0-3> [990912.831401] Out of memory: Kill process 307 (doris) score 364 or sacrifice child [2025-07-30 03:29:03]Jul 30 03:29:07 autoelec kernel: - - [990913.294646]<0-3> [990912.838920] Killed process 307 (doris) total-vm:63216kB, anon-rss:2856kB, file-rss:6348kB, shmem-rss:19812kB [2025-07-30 03:29:03]Jul 30 03:29:07 autoelec kernel: - - [990913.295360]<0-6> [990912.965578] oom_reaper: reaped process 307 (doris), now anon-rss:4kB, file-rss:0kB, shmem-rss:19812kB [2025-07-30 03:30:03]ROM: Use nor flash. [2025-07-30 03:30:03]ROM: Init DDR..Training done. [2025-07-30 03:30:03]ROM: Ok [2025-07-30 03:30:03] [2025-07-30 03:30:03] [2025-07-30 03:30:03]U-Boot 2010.06-svn (Aug 01 2023 - 19:40:21) [2025-07-30 03:30:03] [2025-07-30 03:30:03]DRAM: 128 MiB [2025-07-30 03:30:03]MMC: FH_MMC: 0 [2025-07-30 03:30:03]MID:0x1d RBlock:512 WBlock:512 Chip:238560MB Name:"00000" [2025-07-30 03:30:03]SD: Ver:2.0 High Capacity Speed:25000000Hz Bus Width:4bit [2025-07-30 03:30:03]In: serial [2025-07-30 03:30:03]Out: serial [2025-07-30 03:30:03]Err: serial [2025-07-30 03:30:03]Hit ctrl+u to stop autoboot: 0 [2025-07-30 03:30:03]FH_MMC: 0 [2025-07-30 03:30:03]factory.bin: doesn't exist (-2) [2025-07-30 03:30:03]autoupdate:0x0. [2025-07-30 03:30:03]32768 KiB W25Q256 at 0:0 is now current device [2025-07-30 03:30:04]kernel.img image verification succeeded!!! [2025-07-30 03:30:04]## Booting kernel from Legacy Image at a1001000 ... [2025-07-30 03:30:04] Image Name: Linux-4.9.129 [2025-07-30 03:30:04] Image Type: ARM Linux Kernel Image (uncompressed) [2025-07-30 03:30:04] Data Size: 2329896 Bytes = 2.2 MiB [2025-07-30 03:30:04] Load Address: a0008000 [2025-07-30 03:30:04] Entry Point: a0008000 [2025-07-30 03:30:04] Verifying Checksum ... OK [2025-07-30 03:30:05] Loading Kernel Image ... OK [2025-07-30 03:30:05]OK [2025-07-30 03:30:05]prepare atags [2025-07-30 03:30:05] [2025-07-30 03:30:05]Starting kernel ...
最新发布
07-31
### 内核日志中的“Out of Memory”(OOM)问题分析 在嵌入式系统中,尤其是基于FH8856V200这类富瀚微(Fullhan)的IPC SoC(IP Camera System-on-Chip)设备,内核日志中出现“Out of Memory”(OOM)错误通常与内存资源管理不当有关。FH8856V200是一款支持500万像素视频编码的嵌入式处理器,广泛应用于安防摄像头设备中。其内存资源有限,通常仅提供128MB的DDR内存[^1],因此在多任务处理或视频流处理过程中,容易出现内存耗尽的情况。 OOM错误通常由以下几种情况引起: 1. **内存泄漏**:某个进程或内核模块未能正确释放已分配的内存,导致可用内存逐渐减少。 2. **大块内存分配失败**:当系统尝试分配大块连续内存(如用于视频帧缓冲)时,由于内存碎片化严重而失败。 3. **进程内存使用过高**:多个进程同时运行,占用大量内存资源,超出系统可用内存限制。 4. **内核OOM Killer触发**:Linux内核在检测到内存不足时,会尝试终止某些进程以释放内存,日志中会记录`oom-killer`的调用。 ### 内核日志中的典型OOM信息 在内核日志中,OOM事件通常表现为以下形式: ``` kernel: [12345.67890] Out of memory: Kill process 1234 (some_process) score 123 or sacrifice child kernel: [12345.67891] Killed process 1234 (some_process) total-vm:123456kB, anon-rss:12345kB, file-rss:0kB ``` 上述日志表明内核检测到内存不足,并选择了某个进程进行终止以释放内存。日志中会显示被杀进程的名称、PID、内存使用情况等信息。 ### FH8856V200平台OOM问题的调试方法 在FH8856V200平台上调试OOM问题时,可以采用以下方法: 1. **查看系统内存使用情况**: 使用`free`命令查看系统内存使用状态: ```bash free -m ``` 2. **分析`/proc/meminfo`**: 查看内存详细信息,包括可用内存、缓存、Slab分配等: ```bash cat /proc/meminfo ``` 3. **启用`CONFIG_DEBUG_VM`和`CONFIG_SLUB_DEBUG`**: 在内核配置中启用内存调试选项,可以更详细地追踪内存分配和释放情况。 4. **使用`dmesg`查看OOM日志**: 通过`dmesg`命令查看完整的内核日志,确认OOM触发的时间点和相关进程: ```bash dmesg | grep -i 'oom' ``` 5. **优化内存分配策略**: - 使用`vm.min_free_kbytes`调整预留内存大小,避免内存耗尽。 - 使用`vm.vfs_cache_pressure`控制VFS缓存回收速度。 - 使用`vm.swappiness`调整系统对swap的使用倾向(若启用swap)。 ### FH8856V200平台OOM问题的常见解决策略 1. **限制进程内存使用**: 使用`ulimit`或cgroups限制单个进程的最大内存使用,防止某个进程占用过多内存。 2. **优化视频处理流程**: - 使用DMA进行视频帧传输,减少CPU内存拷贝。 - 合理设置视频帧率和分辨率,避免高分辨率视频占用过多内存缓冲。 3. **避免内存泄漏**: - 使用`valgrind`或`kmemleak`工具检测用户空间和内核空间的内存泄漏。 - 定期重启内存占用高的服务。 4. **启用OOM Killer日志记录**: 在系统中配置`syslog`服务,确保OOM事件能被记录到日志文件中,便于后续分析。 ### 示例:OOM Killer触发日志分析 假设在系统日志中发现如下内容: ```log kernel: [ 123.456789] some_process invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0 kernel: [ 123.456790] CPU: 0 PID: 1234 Comm: some_process Not tainted 4.9.129 #1 kernel: [ 123.456791] Mem-Info: kernel: [ 123.456792] active_anon:12345 inactive_anon:6789 isolated_anon:0 kernel: [ 123.456793] active_file:123 inactive_file:456 isolated_file:0 kernel: [ 123.456794] unevictable:0 dirty:0 writeback:0 unstable:0 kernel: [ 123.456795] slab_reclaimable:1234 slab_unreclaimable:5678 kernel: [ 123.456796] mapped:123 shmem:456 pagetables:789 bounce:0 kernel: [ 123.456797] free:12345 free_pcp:123 free_cma:0 kernel: [ 123.456798] Node 0 DMA free:123456kB min:12345kB low:23456kB high:34567kB active_anon:123456kB inactive_anon:12345kB active_file:123kB inactive_file:1234kB unevictable:0kB present:123456kB managed:123456kB mlocked:0kB dirty:0kB writeback:0kB mapped:12345kB shmem:1234kB slab_reclaimable:1234kB slab_unreclaimable:12345kB kernel_stack:1234kB pagetables:12345kB unstable:0kB bounce:0kB free_pcp:1234kB local_pcp:1234kB free_cma:0kB kernel: [ 123.456799] lowmem_reserve[]: 0 0 0 0 kernel: [ 123.456800] Node 0 DMA: 123456*4kB (UM) free, 0 used, 0 reserved, 0 cma kernel: [ 123.456801] [ pid ] uid tgid total_vm rss cpu oom_adj oom_score_adj name kernel: [ 123.456802] [ 1234] 0 1234 12345 1234 0 0 0 some_process kernel: [ 123.456803] Out of memory: Kill process 1234 (some_process) score 123 or sacrifice child kernel: [ 123.456804] Killed process 1234 (some_process) total-vm:123456kB, anon-rss:12345kB, file-rss:0kB ``` 从上述日志可以看出,`some_process`进程因内存不足被OOM Killer终止。日志中显示其`total_vm`为123456KB,`anon-rss`为12345KB,说明该进程占用了大量匿名内存(即堆内存)。可以通过优化该进程的内存使用或限制其最大内存分配来解决问题。 ### FH8856V200平台内存优化建议 1. **合理设置`vm.min_free_kbytes`**: ```bash echo 8192 > /proc/sys/vm/min_free_kbytes ``` 预留至少8MB内存,防止内存耗尽。 2. **启用Swap空间(如有外部存储)**: ```bash dd if=/dev/zero of=/swapfile bs=1M count=32 mkswap /swapfile swapon /swapfile ``` 3. **使用轻量级视频处理库**: 选择如`libv4l2`等轻量级视频处理库,避免使用资源消耗大的库如`OpenCV`。 4. **使用DMA进行视频帧传输**: 配置视频采集模块使用DMA传输,减少CPU内存拷贝,降低内存带宽占用。 ### 总结 FH8856V200平台在处理高分辨率视频流时,内存资源容易成为瓶颈。OOM问题通常由内存泄漏、大块内存分配失败或进程内存使用过高等原因引起。通过分析内核日志、优化内存分配策略、限制进程内存使用以及合理配置系统参数,可以有效缓解OOM问题,提高系统稳定性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值