1

I have a memory allocation issue on an embedded NOMMU linux. Or that is, I might have an issue, I'm not sure.

The system has 15M free ram when booted. I have one small app (a Dropbox/REST communication app) that will allocate up to 500k.

Once a while the kernel will throw an allocation error report. Like so:

==================================================

Aug 25 08:11:57 kernel: Source : <0x00011058> { ___local_bh_enable + 0x38 } RTS
Aug 25 08:11:57 kernel: CPU: 0 PID: 17233 Comm: dropbox Not tainted 3.10.10-ADI-2013R1-svn10397 #747
Aug 25 08:11:57 kernel: Stack info:
Aug 25 08:11:57 kernel: SP: [0x01d73d8c] <0x01d73d8c> /* kernel dynamic memory */
Aug 25 08:11:57 kernel: FP: (0x01d73eec)
Aug 25 08:11:57 kernel: Memory from 0x01d73d80 to 01d74000
Aug 25 08:11:57 kernel: 01d73d80: 00000000 01d73d8c 00000000 [00000000] 00041580 00210cd8 000000d0 00210ce4
Aug 25 08:11:57 kernel: 01d73da0: 01752c64 00000007 000000d0 0004186c 00210cd8 00000000 00041888 00000000
Aug 25 08:11:57 kernel: 01d73dc0: 000000d0 00000001 00000010 000000d0 00000000 00000007 00210cd8 00000001
Aug 25 08:11:57 kernel: 01d73de0: 00000040 002103e4 00000000 01d72008 01d72000 01d72008 01d72000 00000040
Aug 25 08:11:57 kernel: 01d73e00: 01d72000 01d73eec 00000080 0000002f 0000002f 00000040 00000000 00000040
Aug 25 08:11:57 kernel: 01d73e20: 002103e4 00000000 00000000 002103e4 002103e4 00418e50 0004cc20 00000000
Aug 25 08:11:57 kernel: 01d73e40: 00a441d8 009447c0 00000000 000000ff 00000007 00000008 00000000 00000007
Aug 25 08:11:57 kernel: 01d73e60: 00000000 00000000 00000002 00000042 00042000 00000042 00100100 00200200
Aug 25 08:11:57 kernel: 01d73e80: 01ebfaf0 0004879c 00000000 00041038 <00731bb0> 009447c0 015e0694 00000000
Aug 25 08:11:57 kernel: 01d73ea0: 00041038 00000001 00000001 00100100 00000005 00000002 00000000 01d73ec0
Aug 25 08:11:57 kernel: 01d73ec0: 00000000 0004c81c 00001802 009447c0 00000005 00000000 00001000 53faefc4
Aug 25 08:11:57 kernel: 01d73ee0: 0ca2dd00 00000005 00000002 (00000000) 0004c7e0 000000c0 00000000
Aug 25 08:11:57 kernel: 01d73fc0:<00751278><00731bb0> 00731d24 00711000 000000c0 7ffff000 00000000 00000000
Aug 25 08:11:57 kernel: 01d73fe0: 00000003 00001802 00000005 00041038 00000000 00000000 000000c0 00000006
Aug 25 08:11:57 kernel: Return addresses in stack:
Aug 25 08:11:57 kernel: address : <0x00731bb0> /* kernel dynamic memory */
Aug 25 08:11:57 kernel: frame 1 : <0xffa0071e> { _system_call + 0x6a }
Aug 25 08:11:57 kernel: address : <0x00751278> /* kernel dynamic memory */
Aug 25 08:11:57 kernel: address : <0x00731bb0> /* kernel dynamic memory */
Aug 25 08:11:57 kernel: Mem-Info:
Aug 25 08:11:57 kernel: DMA per-cpu:
Aug 25 08:11:57 kernel: CPU 0: hi: 0, btch: 1 usd: 0
Aug 25 08:11:57 kernel: active_anon:0 inactive_anon:0 isolated_anon:0
Aug 25 08:11:57 kernel: active_file:437 inactive_file:433 isolated_file:0
Aug 25 08:11:57 kernel: unevictable:1239 dirty:11 writeback:0 unstable:0
Aug 25 08:11:57 kernel: free:2571 slab_reclaimable:849 slab_unreclaimable:416
Aug 25 08:11:57 kernel: mapped:0 shmem:0 pagetables:0 bounce:0
Aug 25 08:11:57 kernel: free_cma:0
Aug 25 08:11:57 kernel: DMA free:10284kB min:4096kB low:5120kB high:6144kB active_anon:0kB inactive_anon:0kB active_file:1748kB inactive_file:1732kB unevictable:4956kB isolated(anon):0kB isolated(file):0kB present:31744kB managed:25176kB mlocked:0kB d
Aug 25 08:11:57 kernel: lowmem_reserve[]: 0 0 0
Aug 25 08:11:57 kernel: DMA: 249*4kB (UM) 41*8kB (U) 6*16kB (UM) 79*32kB (U) 85*64kB (UM) 1*128kB (U) 1*256kB (U) 1*512kB (U) 0*1024kB 0*2048kB 0*4096kB 0*8192kB 0*16384kB 0*32768kB = 10284kB
Aug 25 08:11:57 kernel: 2109 total pagecache pages
Aug 25 08:11:58 kernel: CPU 0: hi: 0, btch: 1 usd: 0
Aug 25 08:11:58 kernel: active_anon:0 inactive_anon:0 isolated_anon:0
Aug 25 08:11:58 kernel: active_file:437 inactive_file:433 isolated_file:0
Aug 25 08:11:58 kernel: unevictable:1239 dirty:11 writeback:0 unstable:0
Aug 25 08:11:58 kernel: free:2571 slab_reclaimable:849 slab_unreclaimable:416
Aug 25 08:11:58 kernel: mapped:0 shmem:0 pagetables:0 bounce:0
Aug 25 08:11:58 kernel: free_cma:0
Aug 25 08:11:58 kernel: DMA free:10284kB min:4096kB low:5120kB high:6144kB active_anon:0kB inactive_anon:0kB active_file:1748kB inactive_file:1732kB unevictable:4956kB isolated(anon):0kB isolated(file):0kB present:31744kB managed:25176kB mlocked:0kB d
Aug 25 08:11:58 kernel: lowmem_reserve[]: 0 0 0
Aug 25 08:11:58 kernel: DMA: 249*4kB (UM) 41*8kB (U) 6*16kB (UM) 79*32kB (U) 85*64kB (UM) 1*128kB (U) 1*256kB (U) 1*512kB (U) 0*1024kB 0*2048kB 0*4096kB 0*8192kB 0*16384kB 0*32768kB = 10284kB
Aug 25 08:11:58 kernel: 2109 total pagecache pages
Aug 25 08:11:58 kernel: dropbox: page allocation failure: order:7, mode:0xd0
Aug 25 08:11:58 kernel: Hardware Trace:
Aug 25 08:11:58 kernel: 0 Target : <0x00171b8c> { _dump_stack + 0x0 }
Aug 25 08:11:58 kernel: Source : <0x0004157c> { _warn_alloc_failed + 0xa4 } CALL pcrel
Aug 25 08:11:58 kernel: 1 Target : <0x0004157c> { _warn_alloc_failed + 0xa4 }
Aug 25 08:11:58 kernel: Source : <0x00171df6> { _printk + 0x26 } RTS
Aug 25 08:11:58 kernel: 2 Target : <0x00171df2> { _printk + 0x22 }
Aug 25 08:11:58 kernel: Source : <0x0000d7c8> { _vprintk_emit + 0x12c } RTS
Aug 25 08:11:58 kernel: 3 Target : <0x0000d7be> { _vprintk_emit + 0x122 }
Aug 25 08:11:58 kernel: Source : <0xffa00ad4> { __common_int_entry + 0xcc } RTI
Aug 25 08:11:58 kernel: 4 Target : <0xffa00a72> { __common_int_entry + 0x6a }
Aug 25 08:11:58 kernel: Source : <0xffa008b8> { _return_from_int + 0x58 } RTS
Aug 25 08:11:58 kernel: 5 Target : <0xffa008b8> { _return_from_int + 0x58 }
Aug 25 08:11:58 kernel: Source : <0xffa0088e> { _return_from_int + 0x2e } IF !CC JUMP pcrel
Aug 25 08:11:58 kernel: 6 Target : <0xffa00860> { _return_from_int + 0x0 }
Aug 25 08:11:58 kernel: Source : <0xffa00a6e> { __common_int_entry + 0x66 } JUMP.L
Aug 25 08:11:58 kernel: 10 Target : <0x0003b366> { _rcu_irq_exit + 0x32 }
Aug 25 08:11:58 kernel: Source : <0x0003b2da> { _rcu_idle_enter_common + 0x56 } RTS
Aug 25 08:11:58 kernel: 11 Target : <0x0003b2c8> { _rcu_idle_enter_common + 0x44 }
Aug 25 08:11:58 kernel: Source : <0x0003b290> { _rcu_idle_enter_common + 0xc } IF !CC JUMP pcrel
Aug 25 08:11:58 kernel: 12 Target : <0x0003b284> { _rcu_idle_enter_common + 0x0 }
Aug 25 08:11:58 kernel: Source : <0x0003b362> { _rcu_irq_exit + 0x2e } CALL pcrel
Aug 25 08:11:58 kernel: 13 Target : <0x0003b334> { _rcu_irq_exit + 0x0 }
Aug 25 08:11:58 kernel: Source : <0x00011872> { _irq_exit + 0x56 } CALL pcrel
Aug 25 08:11:58 kernel: 14 Target : <0x0001186e> { _irq_exit + 0x52 }
Aug 25 08:11:58 kernel: Source : <0x00011798> { ___do_softirq + 0x128 } RTS
Aug 25 08:11:58 kernel: 15 Target : <0x00011776> { ___do_softirq + 0x106 }
Aug 25 08:11:58 kernel: Source : <0x00011058> { ___local_bh_enable + 0x38 } RTS
Aug 25 08:11:58 kernel: CPU: 0 PID: 17233 Comm: dropbox Not tainted 3.10.10-ADI-2013R1-svn10397 #747
Aug 25 08:11:58 kernel: Stack info:
Aug 25 08:11:58 kernel: SP: [0x01d73d8c] <0x01d73d8c> /* kernel dynamic memory */
Aug 25 08:11:58 kernel: FP: (0x01d73eec)
Aug 25 08:11:58 kernel: Memory from 0x01d73d80 to 01d74000
Aug 25 08:11:58 kernel: 01d73d80: 00000000 01d73d8c 00000000 [00000000] 00041580 00210cd8 000000d0 00210ce4
Aug 25 08:11:58 kernel: 01d73e40: 017a6798 0038bac0 00000000 000000ff 00000007 00000008 00000000 00000007
Aug 25 08:11:58 kernel: 01d73e60: 00000000 00000000 00000002 00000042 00042000 00000042 00100100 00200200
Aug 25 08:11:58 kernel: 01d73e80: 01ebf2a4 0004879c 00000000 00041038 <00731bb0> 0038bac0 015e0694 00000000
Aug 25 08:11:58 kernel: 01d73ea0: 00041038 00000001 00000001 00100100 00000005 00000002 00000000 01d73ec0
Aug 25 08:11:58 kernel: 01d73ec0: 00000000 0004c81c 00001802 0038bac0 00000005 00000000 00001000 53faefcd
Aug 25 08:11:58 kernel: 01d73ee0: 0b71b000 00000005 00000002 (00000000) 0004c7e0 000000c0 00000000
Aug 25 08:11:58 kernel: 01d73f00: ffffe000 00000000 00000003 <00731bb0> 00000100 ffffe000 00001802 00000003
Aug 25 08:11:58 kernel: 01d73f20: 00000000 0021ab00 00008000 00002000 00000000 01d74000 0021ab00 0021ab00
Aug 25 08:11:58 kernel: 01d73f40: 0021a436 ffa00e2c 02002021 0021ad93 016dd77b 0021ad90 016dd77a 00000000
Aug 25 08:11:58 kernel: 01d73f60: 00000000 00000004 00000000 00000004 00000000 00000000 7ffff000 000000c0
Aug 25 08:11:58 kernel: 01d73f80: 00000137 00000000 00000000 00000000 00000000 0000005b 00001802 00000001
Aug 25 08:11:58 kernel: 01d73fa0: 000000b4 00000000 00000002 00000fff 00001454 01ebf1a0 01ebf2a4 00711034
Aug 25 08:11:58 kernel: 01d73fc0: 00751294 <00731bb0> 00731d24 00711000 000000c0 7ffff000 00000000 00000000
Aug 25 08:11:58 kernel: 01d73fe0: 00000003 00001802 00000005 00041038 00000000 00000000 000000c0 00000006
Aug 25 08:11:58 kernel: Return addresses in stack:
Aug 25 08:11:58 kernel: address : <0x00731bb0> /* kernel dynamic memory */
Aug 25 08:11:58 kernel: frame 1 : <0xffa0071e> { _system_call + 0x6a }
Aug 25 08:11:58 kernel: address : <0x00731bb0> /* kernel dynamic memory */
Aug 25 08:11:58 kernel: address : <0x00731bb0> /* kernel dynamic memory */
Aug 25 08:11:58 kernel: Mem-Info:
Aug 25 08:11:58 kernel: DMA per-cpu:
Aug 25 08:11:58 kernel: CPU 0: hi: 0, btch: 1 usd: 0
Aug 25 08:11:58 kernel: active_anon:0 inactive_anon:0 isolated_anon:0
Aug 25 08:11:58 kernel: active_file:63 inactive_file:392 isolated_file:0
Aug 25 08:11:58 kernel: unevictable:1239 dirty:11 writeback:0 unstable:0
Aug 25 08:11:58 kernel: free:3149 slab_reclaimable:681 slab_unreclaimable:417
Aug 25 08:11:58 kernel: mapped:0 shmem:0 pagetables:0 bounce:0
Aug 25 08:11:58 kernel: free_cma:0
Aug 25 08:11:58 kernel: DMA free:12596kB min:4096kB low:5120kB high:6144kB active_anon:0kB inactive_anon:0kB active_file:252kB inactive_file:1568kB unevictable:4956kB isolated(anon):0kB isolated(file):0kB present:31744kB managed:25176kB mlocked:0kB di
Aug 25 08:11:58 kernel: lowmem_reserve[]: 0 0 0
Aug 25 08:11:58 kernel: DMA: 393*4kB (UM) 126*8kB (U) 40*16kB (UM) 81*32kB (U) 78*64kB (UM) 8*128kB (U) 1*256kB (U) 1*512kB (U) 0*1024kB 0*2048kB 0*4096kB 0*8192kB 0*16384kB 0*32768kB = 12596kB
Aug 25 08:11:58 kernel: 1696 total pagecache pages
Aug 25 08:11:58 kernel: 7936 pages RAM
Aug 25 08:11:58 kernel: 614 pages reserved
Aug 25 08:11:58 kernel: 262586 pages shared
Aug 25 08:11:58 kernel: 3706 pages non-shared
Aug 25 08:11:58 kernel: Allocation of length 270336 from process 17233 (dropbox) failed
Aug 25 08:11:58 kernel: DMA per-cpu:
Aug 25 08:11:58 kernel: CPU 0: hi: 0, btch: 1 usd: 0
Aug 25 08:11:58 kernel: active_anon:0 inactive_anon:0 isolated_anon:0
Aug 25 08:11:58 kernel: active_file:63 inactive_file:392 isolated_file:0
Aug 25 08:11:58 kernel: DMA: 393*4kB (UM) 126*8kB (U) 40*16kB (UM) 81*32kB (U) 78*64kB (UM) 8*128kB (U) 1*256kB (U) 1*512kB (U) 0*1024kB 0*2048kB 0*4096kB 0*8192kB 0*16384kB 0*32768kB = 12596kB
Aug 25 08:11:58 kernel: 1696 total pagecache pages

==================================================

The system doesn't seem to suffer though. It continues. It looks like the kernel might dump some of the cache, when it happens: http://www.linuxatemyram.com/ But I'm not sure.

Also the kernel is compiled with debug features included. The reports might not come if I build it in 'release' mode.

My question is: Is this something I should be concerned about? (It doesn't look very nice.)

Is there a way to disable or reduce the caching? I imagine that caching will create these issues on NOMMU systems, as the kernel cannot relocate mem on-the-fly, as it does with an MMU.

Btw, it's an ucLinux, kernel 3.10.

  • Why do you think caching is bad? Caching is automatically reduced, when the memory is needed. Why do you think the MMU is needed to do caching (properly)? – ctrl-alt-delor Aug 25 '14 at 9:45
  • Caching isn't bad if you're able to do a full memory defragmentation. But I doubt that you'd be able to do so without an MMU. You'll be able to free up memory when needed. But it'll be fragmented. Which will cause problems when allocating large (ish) amounts of mem. But I'm just guessing really. – Illishar Aug 25 '14 at 10:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.