리눅스의 메모리 관리
글쓴이: spacelee / 작성시간: 금, 2006/01/20 - 5:25오후
이 게시판에서 많이 나온 내용이기는 한데,
몇 시간째 검색해봐도 제가 원하는 속시원한 대답을
찾기가 어려워서 다시 올려봅니다.^^;;
<현상>
app가 메모리릭이 없어도 malloc, free를 자주하면
top이나 'free'명령어에서는 app가 사용하는 메모리가
계속 올라가는 것처럼 보이는 현상이 있습니다.
리눅스 쓰시는 많은 분들이 경험하시는 내용인 것 같구요.
게시판에서도 종종 언급된 걸 봤습니다.
<질문>
1. 이 현상은 도대체 리눅스가 메모리를 어떻게 관리하고,
top, 'free'명령어는 도대체 몰 보여주길래 그런 것인가?
2. app의 메모리가 shrink되어서 정말 사용하는 메모리만
top에서 보여주는 방법은 없는 것인지?
혹은 정확히 보여주는 다른 명령어가 있는지?
(목적 : 일반 서버 운영자를 안심시키고 싶습니다.)
이런 문제에 대해서 아시는 분 좀 알려주세요.^^;;
다른 포스트를 알려주셔도 감솨..
제 검색 실력이 모지라는 것인지..ㅜㅜ
Forums:
제가 여러가지 자료를 찾다가 간단한 힌트를 보고테스트를 해봤습니다.
제가 여러가지 자료를 찾다가 간단한 힌트를 보고
테스트를 해봤습니다. (리눅스 기준)
glibc의 mallopt 옵션을 쓰면 (M_TRIM_THRESHOLD)
지정된 사이즈 이상의 메모리가 free될때 sbrk를 써서
데이터 사이즈 영역을 줄여준다고 하더군요.
1. mallopt 테스트 결과
그래서 mallopt를 써서 (M_TRIM_THRESHOLD)
이 값을 1byte로 바꾸고 테스트 해봤는데
안줄어드는 것 같습니다. ㅡㅡ;;
이건 또 왜 그런 것인지..ㅜㅜ
2. malloc에서 mmap을 쓰는 경우와 아닌 경우의 차이
malloc에서 heap에서 메모리를 빼오는 경우와
mmap을 쓰는 경우의 차이가 있고(glibc malloc.c 소스에서 봣습니다.)
mallopt에서 그 기준값을 바꿔줄 수 있다고 해서 바꿔줘봤는데,
역시 top에서는 차이가 없습니다.
이런 현상들에 대해서
어떤 도움 말씀이라도 주시면 감솨~ㅜㅜ
권위를 의심할 것,어긋남을 존경할 것,자리잡기를 거부할 것,항상 자신을 재창조할 것 - MIT 미디어랩 -
댓글 달기