LINUX 에서 PROCESS 가 사용할 수 있는 memory 범위에 관한 질문입니다.
글쓴이: chobozzang / 작성시간: 수, 2014/06/18 - 7:00오후
안녕하세요.
소스에 관한 질문이 아니여서 여기에 올려도 될 지 모르겠습니다만 Linux 개발자님들에 도움이 필요해서 글을 올리게 되었습니다.
현재 memory 를 상당히 많이 필요로 하는 프로그램을 개발해서 테스트 중인데요...
process 가 보통 OS 에서 할당된 가상메모리 보다 많이 쓰게 되면 Out of memory 시스템 로그가 뜨면서 kernel 에서 죽이는 걸로 알고 있는데요.
프로세스를 체크하다가 VmPeak 수치가 OS 에서 사용할 수 있는 가상메모리를 훨씬 넘는 경우가 발생하였습니다 ㅡ.ㅡ;;
2가지 이미지 파일인데요.
prcess_status.jpg 파일은 cat /proc/(pid)/status 로 확인한 것이고, free.jpg 는 free 명령어로 확인한 것 인데요.
free 명령어로 봤을 때 이 서버에서 사용할 수 있는 가상메모리는 약 132GB 이고, VmPeak 수치는 제가 알기로는 프로세스가 가장 많이 메모리를 사용하고 있을 때의 수치를 나타낸 걸로 알고 있는데요... 200GB 가 찍혀있습니다.
이 경우 프로그램이 죽었어야 정상이 아닌가요?(프로그램이 정상동작하고 있습니다)
File attachments:
첨부 | 파일 크기 |
---|---|
process_status.jpg | 52.43 KB |
free.jpg | 25.6 KB |
Forums:
free.jpg에서 Mem(used) +
free.jpg에서 Mem(used) + Swap(used) 하면 200GB 정도 나오는군요.
d
감사합니다. swap 부분을 생각 못했네요
음?
free에서 나오는 메모리는 physical 메모리 중 커널에서 사용가능한 부분일텐데요?
VmPeak는 지금까지의 논리 어드레스 최대 크기입니다. status와 연관을 시키려면 VmHWM와 해야하고, VmPeak와 연관시키려면 meminfo에 나오는 가상 메모리 크기와 연관을 지어보시는게 나을것 같네요.
소곤소곤
리눅스에서 free는 /proc/meminfo를
리눅스에서 free는 /proc/meminfo를 읽어들여 해석한 결과입니다.
해당 프로세스가 차지하고 있는 상주 메모리 크기는 VmRSS를 보시면 됩니다. VmHWM은 Peak RSS 입니다.
VmSize 와 VmRSS의 차이만큼의 양은 swap space에 존재한다고 보시면 됩니다.
또한, 아마 커널을 좀더 최신 버전으로 바꾸어 보면 VmSwap라는 항목이 추가로 보일 겁니다.
d
감사합니다. cat /proc/meminfo 에서 MemTotal + SwapTotal 이 서버에서 사용할 수 있는 가상메모리 크기라고 생각해도 될까요?
댓글 달기