Memory 관리에 대한 질문 입니다..
Memory관리에 대한 여러가지 질문을 드리려고요 ^^
일단 제 System은요 16GB의 Memory가 설치되어 있습니다.
처음에 Booting을 해서 /proc/meminfo를 보면 다음과 같이 보이거든요,
MemTotal: 16637156 kB
MemFree: 16588656 kB
HighTotal: 15859648 kB
HighFree: 15834912 kB
LowTotal: 777508 kB
LowFree: 753744 kB
그런데,,여기서 256 KB씩 할당하는 간단한 Program을 돌려봤습니다.
그냥 malloc으로 256KB할당하고, free는 하지 않고요..
Memory상태가 어떻게 줄어가나 보고 싶어서 시작했는데,,
약 3000번 수행후에는 Memory Allocation Fail이 발생하네요.
아직 Free Memory는 많이 남은 것 처럼 보이는데요..
MemTotal: 16637156 kB
MemFree: 16572228 kB
HighTotal: 15859648 kB
HighFree: 15823752 kB
LowTotal: 777508 kB
LowFree: 748352 kB
3000번 수행후에는 Memory 정보가 위와 같이 보입니다.
그리고 조금 더 수행하면,,,Memory Allocation Failure가 발생하는데요,
그럼 16GB memory를 다 사용하지 못하는 게 아닌가 해서요.
어떻게 하면, 이 Memory를 모두 사용할 수 있는 걸까요?
Kernel Configuration이 잘못된 걸까요?
조언 부탁 드립니다.
PAE 와도 관련이 있을까요?
Kernel에서 PAE관련 Option을 Enable하긴 했거든요..
Memory Allocation Failure가
Memory Allocation Failure가 발생하는 것은 버그같습니다.
malloc()만 가지고는 메모리를 효율적으로 많이 잡아먹을 수 없습니다.
아래처럼 memset()도 같이 써보세요.
4GB 가상주소공간 중 사용자 영역으로 3GB 할당되어있습니다.
실제 해보니 한 프로세스가 3063808 (=11968*256) KB 정도 잡아먹을 수 있군요.
여러 프로세스를 이용하면 16GB 모두 잡아 먹을 수 있을 듯 합니다.
댓글 달기