out of memory
글쓴이: twins99 / 작성시간: 목, 2008/07/24 - 3:09오후
Linux 2.6.X 기반 embeded 환경에서 작업 중입니다.
free buffer cached
5000 100000 350000
위와 같이 남은 상황에서 out of memory가 발생하고 있습니다.
물론 한 예이지만, cache와 buffer에서 memory를 끌어와 충분히 죽지 않을 수 있는 상황으로 보이는데,
I/O 작업과 병행하는 task를 수행하면 꼭 죽는 현상이 나타납니다.
가정은 다음과 같습니다.
1) CPU의 performance가 떨어져 cache와 buffer에 있는 memory free작업이 원활하지 않다.
2) I/O 작업이 빈번해 지면 cache의 memory를 free로 가져오기 어렵다.
...
몇가지 가정이 있겠습니다만, 어떤 이유에서 일까요? cache를 제한하여 해결할 순 없을까요?(예를 들어 5M만 cache되게 하고, 그 이상은 되지 않겠금 제한)
궁금합니다.
Forums:
혹시 big memory chunk
가용 메모리 총합은 충분하지만 big memory chunk를 할당받으려는데 가용 메모리들이 모두 작은 chunk로 조각나 있어서 OOM이 날 수도 있다고 봅니다.
/***************************************
Being the one is just like being in love.
***************************************/
/***************************************
Being the one is just like being in love.
***************************************/
저도 out of memory 를
저도 out of memory 를 본적이 있습니다.
원인은 malloc을 하고free를 잘안해서 memory가 꽉찬경우
메모리 관리 문제
메모리를 순간적으로 잡고 해제하는 것은 괜찮지만
여러 모듈간에 메로리를 잡고 해제하는 것이 송호작용 하고 있는 관계라고 하면
구조를 바꿔보시는 것도 추천합니다.
즉 프로그램 기동시에 특정 사용량만큼의 메모리(설정 파일에 저장된 값)를 확보하시고
그 메모리만을 사용하여 모든 일처리를 하면 됩니다.
메모리의 블럭 구조는 알아서 잡으시면 되구요.
리눅스 procfs의 vm관련
리눅스 procfs의 vm관련 옵션을 조절하면 될거 같다는 막연한 생각이 떠오르네요;;
http://lxr.linux.no/linux/Documentation/filesystems/proc.txt#L1208 를 참조하세요.
----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러
----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러
댓글 달기