pungjoo

[Linux] Memory 예제 본문

미분류

[Linux] Memory 예제

pungjoo.kim 2006.07.13 16:33

앞으로 설명할 부분에서는 swap사용, cpu 응답 속도, disk I/O 등등 여러가지 Memory로 인해 파생되는 문제들은
논외로합니다. 우선 이해하기 쉽게 Memory의 내용에만 충실합시다.


[자료 1]

Linux에서 memory 관련된 정보를 얻는 command 및 방법은 많겠지만 free라는 command로 나온 값을 약간 가공하면 [자료 1]과 같은 모습입니다. 위 Data는 10분에 1번씩 찍은 값입니다.

[자료 1]과 같은 data를 놓고 볼때 흔히들 단편적으로 free라는 항목만 보고 total대비 수치가 낮기 때문에 memory가 부족한 것으로 오해를 합니다. 즉, [자료 2] 처럼..

[자료 2]

[자료 2]에서 푸른색 부분이 used이며 붉은색 부분이 free부분입니다. 
[자료 2]을 보고 상식적으로 생각해 보면 어떻게 시스템이 한쉬도 숨 없이 99%이상 Memory를 사용할 수 있을까요?

이상하죠?..

자.. 그럼 동일한 data를 갖고 세부적으로 표현해 보겠습니다.

[자료 3]

그냥 위에 이상하다라고 언급한 그림과 비교해 '아.. 뭔가 역동 적으로 사용하는구나'라고 느끼면 됩니다.

[자료 3]의 free라는 항목은 [자료 2]의 하단의 붉은색과 같은 부분입니다.
[자료 3]에서 shared 부분은 값이 0이기 때문에 표기하지 않았습니다.
[자료 3]에서 [자료 2]와 대비해서 buffers/cached가 생겼습니다.

실제로 Total Memory - Free Memory = 사용중인 Memory가 맞습니다. 그러나 그 사용중이다라고 하는 Memory가 O/S 영역에서 사용되는 부분도 포함하고 있다라는 것이 문제입니다.

즉 O/S 영역에서 사용되고 있다라는 부분이 buffers/cached입니다. 당연히 O/S도 Memory하에서 작동하니까 Memory가 필요한것은 자명한 사실이지만, O/S는 최적의 성능을 보장하기 위해서 buffers/cached를 사용합니다. [자료 3]변화의 폭이 심한 cached의 용도는 대부분이 I/O의 성능을 보장하기 위해서 disk에서 읽은 값은 memory에 저장하는 부분입니다.

위와 같은 연유에 Application에서 가용한 Memory는 buffers/cached부분도 포함해야 합니다.
그래서 Application에서 사용중인 Memory는 [자료 3]에서 붉은색으로 표기된 부분이 됩니다.


[자료 4]

[자료 4]는 [자료 3] 부분에서 업무시간을 나타냅니다. 즉, 업무시간내에서는 대략 적으로 Memory를 87% ~ 90%를 지속적으로 사용하는 것을 보실 수 있습니다. ( 점심 시간에는 사용량이 감소합니다. )

@
1 Comments
댓글쓰기 폼