[완료]무한루프 프로그램 실행시 Free Memory가 조금씩 줄더니 No space left on device라고 나오면서 멈춥니다.
임베디드 보드에서 돌리는 프로그램으로
무한루프를 돌려 값을 계속 읽으며 버퍼에 데이터를 저장하고 있다가
약 30초 간격으로 데이터를 플래시로 올리는 작업을 하게 됩니다.
약 30초마다 'cat /proc/meminfo'를 이용하여 메모리 상태를 찍어보니
MemTotal: 30348 kB
MemFree: 724 kB
MemShared: 0 kB
Buffers: 296 kB
Cached: 14480 kB
SwapCached: 0 kB
Active: 24644 kB
Inactive: 3652 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 30348 kB
LowFree: 724 kB
SwapTotal: 0 kB
SwapFree: 0 kB
--------------------------------
MemTotal: 30348 kB
MemFree: 700 kB
MemShared: 0 kB
Buffers: 296 kB
Cached: 14500 kB
SwapCached: 0 kB
Active: 24644 kB
Inactive: 3672 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 30348 kB
LowFree: 700 kB
SwapTotal: 0 kB
SwapFree: 0 kB
---------------------------------
MemTotal: 30348 kB
MemFree: 680 kB
MemShared: 0 kB
Buffers: 296 kB
Cached: 14520 kB
SwapCached: 0 kB
Active: 24644 kB
Inactive: 3692 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 30348 kB
LowFree: 680 kB
SwapTotal: 0 kB
SwapFree: 0 kB
--------------------------------
위에서 볼수 있듯이 차츰차츰 MemFree가 줄어들더니
'file open failed: No space left on device'라는 메시지가 나오며 프로그램이 죽습니다.
원래 이런건가요? 그렇다면 MemFree를 다시 늘리는(메모리를 정리해주는)방법은 없나요?
답변 부탁드립니다.
=====================================================================================
reom님 답변 감사합니다.
그런데 플래시는 8메가 부트와 64메가 확장을 쓰고 있고, 약 50메가 정도가 되면 자동으로 파일을 삭제하여
초과되지 않도록 프로그램 했습니다.
=====================================================================================
bushi님 감사합니다^^
제가 모르는 버그가 있나보네요 찾아보겠습니다.
근데 어렵네요..ㅠㅠ
=====================================================================================
해당 프로그램에서 문제점을 찾지못해서 다른곳을 찾다가 부트로더의 RAM인식과 보드의 어드레스가
잘못되어 있음을 발견하였습니다.
보드의 어드레스를 현재 사용하는 RAM에 맞추어 줬더니 Free Memory가 줄어들다가 필요한 Memory만큼
다시 증가하면서 프로그램이 도는것을 확인 할 수 있었습니다.
아직 프로그램 미비로 완료는 되지 못했지만 위 문제는 해결이 되어 완료하였음을 표기 하였습니다.
음음...
제 짧은 소견으로는
메모리가 부족한게 아니라 플래쉬가 부족한거 아닌가 싶습니다.
메모리 부족하면 Out of Memory 메시지가 뜨던데요.
음 device open이 fail 한것도 그렇고..
플래시 저장장치
플래시 저장장치 용량이 부족한 것이 맞습니다.
절대적으로.
커널 파일시스템이든 어플리케이션이든, 어딘가에 버그가 있겠지요.
파일시스템 확인
/var
옛날에 참신한 생각으로 살던 자신의 모습을 찾아서
댓글 달기