Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Reference
- reflection
- Keep-Alive
- Proxy
- toString
- singleton
- Session
- http/1.1
- http
- getRequestURI
- chunked
- unmodifiableList
- object
- Transfer-Encoding
- cookie
- urlclassloader
- clone
- Content-Length
- InvocationHandler
- Java
Archives
- Today
- Total
pungjoo
[Linux] Memory 예제 본문
앞으로 설명할 부분에서는 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%를 지속적으로 사용하는 것을 보실 수 있습니다. ( 점심 시간에는 사용량이 감소합니다. )
@
Comments