[완료] 메모리가 모자른 것인지 판단 부탁 드립니다.
커널 2.6.13 에서 동작하는 어플리케이션을 작성했는데 wav 를 재생할 때 불규칙적으로 다음과 같은 메시지가 뜹니다. 이럴 경우 메모리가 모자른 것으로 보아야 할까요? 임베디드쪽이라 스왑 영역은 없습니다.
printk: 3 messages suppressed.
gui_gd: page allocation failure. order:5, mode:0xd0
Mem-info:
DMA per-cpu:
cpu 0 hot: low 30, high 90, batch 15 used:80
cpu 0 cold: low 0, high 30, batch 15 used:24
Normal per-cpu: empty
HighMem per-cpu: empty
Free pages: 2380kB (0kB HighMem)
Active:9650 inactive:16943 dirty:0 writeback:0 unstable:0 free:595 slab:2163 mapped:9094 pagetables:63
DMA free:2380kB min:1400kB low:1748kB high:2100kB active:38600kB inactive:67772kB present:122880kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 0
Normal free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 0
HighMem free:0kB min:128kB low:160kB high:192kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 0
DMA: 15*4kB 62*8kB 64*16kB 7*32kB 7*64kB 1*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 2380kB
Normal: empty
HighMem: empty
Free swap: 0kB
30720 pages of RAM
770 free pages
997 reserved pages
2163 slab pages
2828 pages shared
0 pages swap cached
GFP_KERNEL 로 최소
GFP_KERNEL 로 최소 128KByte 를 한번에 요청했군요.
메모리에 최소 128KByte 만큼 연속된 공간이 없으면 fail 입니다. 이런 덩치라면 DMA buffer 가 유력한데...
open(malloc)/close(free) 가 잦은 sound 쪽 드라이버들은 나름대로 머리 굴려서 대응하고 있으니 이쪽 문제같지는 않습니다. (구OSS 의 경우 이런 잔대가리는 low level 드라이버의 몫입니다. 어정쩡하게 작성된 드라이버라면 책임 못집니다.)
OTL
감사합니다.
감사합니다. 드라이버쪽을 살펴 보도록 하겠습니다.
========================
조직 : E.L.D(Embedded Linux Developer/Designer)
블로그 : poplinux@tistory.com
카페 : cafe.naver.com/poplinux
임베디드 리눅스 관련 프리렌서 지향
댓글 달기