티스토리 뷰


보통 리눅스에서 "현재 free가 몇이야?" 라는 질문에서 free는, 실제 사용 가능한 메모리의 의미를 내포합니다.


하지만, 위와 같이 free command로 확인하는
free 필드는 buffers와 cached를 사용중(used)인 메모리로 간주하고 계산됩니다.
(즉 used에 buffers와 cached가 포함되어 있고 free 필드에는 buffers와 cached가 포함되지 않았다는 의미)

커널 내부적으로 buffers나 cached는 메모리가 부족한 경우 언제든지 free되어 가용 될 수 있지만,

사용자 관점에서는 그저 어딘가(두리뭉실)에서 붙잡고 있는 메모리로 여겨지기 때문에 사용중인 영역으로 표현한것이 아닐까요? (엄밀히 말하자면 아직 storage와의 sync가 되지 않은 메모리라고..)

반면, free command에서 "-/+ buffers/cache:" 로 표현되는 used와 free는 위에 언급된것과 내용이 조금 다롭니다.


이때의 used는 buffers와 cache를 포함하지 않고,
free는 buffers와 cache를 포함한 메모리를 나타냅니다.


이 필드(-/+)는 아마도 커널 관점이라고 하는것이 옳지 싶은데,
이유가 어찌되었든 관점의 차이고, 실제 사용 가능한 메모리는 분명,

free < 실제 사용 가능한 메모리 < free+(buffers,cached)
정도가 될 것입니다.

추가로 buffers와 cache의 차이점은 아래와 같습니다.
Buffers are associated with a specific block device, and cover caching of filesystem metadata as well as tracking in-flight pages. The cache only contains parked file data. That is, the buffers remember what's in directories, what file permissions are, and keep track of what memory is being written from or read to for a particular block device. The cache only contains the contents of the files themselves.


메모리 이야기가 나온 김에 /proc/meminfo 에서 출력되는 정보는 링크를 확인하도록 합시다.


좌우지간, 개발자인 필자는 buffers와 cached를 free 영역으로 포함시키렵니다 :)


'개발 > Linux' 카테고리의 다른 글

file_operations - compat_ioctl()  (0) 2012.03.07
likely, unlikely  (0) 2011.12.27
데이터 종류에 따른 메모리 영역  (0) 2011.12.22
gdb 옵션  (0) 2011.12.20
function kernel_thread()  (0) 2011.12.15
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
Total
Today
Yesterday