Linux
1822902 회원
3807 온라인
109645 솔루션
새 메시지

그놈의 시스템 모니터 ( system monitor ) 에서 표시되는 used memory 값은 어떻게 구해지는 건가요?

 
박한진
조언자

그놈의 시스템 모니터 ( system monitor ) 에서 표시되는 used memory 값은 어떻게 구해지는 건가요?

아래 그림은 현재 제가 사용하는 시스템의 그림입니다.

하나는 system monitor의 그림이고 하나는

/proc/meminfo 내용입니다.

아무리 매치를 시켜보려고 해도



system monitor에서 나타내어지는 used memory의 값이 어떻게 산출되었는지 알길이 없네요..



윈도우 처럼 used-buffers-cached 이렇게 구하라는 말도 있고 ...



산출 방법 아시는 고수분의 답변 부탁드립니다.



2 응답 2
신동인
비정기 조언자

그놈의 시스템 모니터 ( system monitor ) 에서 표시되는 used memory 값은 어떻게 구해지는 건가요?

안녕하세요,리눅스에서 메모리관련 설명자료를 드립니다.



※ 리눅스 메모리관련 설명자료



1. FREE 명령

# free

total used free shared buffers cached

Mem: 4100240 370608 3729632 0 44128 157872

-/+ buffers/cache: 168608 3931632

Swap: 2040208 0 2040208



total : used + free + shared + buffers + cached + -/+ buffers/cache의 첫값



- 항목설명

total : 전체 메모리의 양

used : 사용중인 메모리의 양

free : 사용되지 않는 메모리의 양

shared: 프로세스 공유메모리의 양

buffer: 디스크 버퍼캐슈의 양

cached: 디스크상에 케쉬된 메모리의 양

-/+ buffers/cache: 프로세스에서만 사용되는 메모리의 양(첫번째 값)

free + buffers + cached (두번째 값)

swap : Swap의 사용양





2. /proc/meminfo값

# cat /proc/meminfo

total: used: free: shared: buffers: cached:

Mem: 4198645760 379994112 3818651648 0 45187072 161660928

Swap: 2089172992 0 2089172992

MemTotal: 4100240 kB

MemFree: 3729152 kB

MemShared: 0 kB

Buffers: 44128 kB

Cached: 157872 kB

SwapCached: 0 kB

Active: 205232 kB

ActiveAnon: 64800 kB

ActiveCache: 140432 kB

Inact_dirty: 46144 kB

Inact_laundry: 14848 kB

Inact_clean: 0 kB

Inact_target: 53232 kB

HighTotal: 0 kB

HighFree: 0 kB

LowTotal: 4100240 kB

LowFree: 3729152 kB

SwapTotal: 2040208 kB

SwapFree: 2040208 kB

CommitLimit: 4090320 kB

Committed_AS: 239744 kB

HugePages_Total: 0

HugePages_Free: 0

Hugepagesize: 262144 kB



- 항목설명

MemTotal : MemFree + MemShared + Buffers + Cached + Swapcached

위 값에 free값의 -/+ buffers/cache의 첫값응 더하면 됨.



cached(첫번째) : (Hash Table에 사용주인 메모리) - (buffer로 사용중인 메모리)

Cached(여덟번째) : (Hash Table에 사용주인 메모리) - (buffer로 사용중인 메모리)

- SwapCached값





3. vmstat명령

# vmstat -k

procs memory swap io system cpu

r b swpd free buff cache si so bi bo in cs us sy id wa

1 0 0 3737024 41136 157792 0 0 26 13 1030 22 0 0 99 1

# vmstat -ak

procs memory swap io system cpu

r b swpd free inact active si so bi bo in cs us sy id wa

0 0 0 3733424 46128 203616 0 0 26 13 1030 22 0 0 99 1



- 항목설명

swpd : 사용된 버춸메모리양(디스크)

free : 사용되지 않는 메모리양

buff : 버퍼로 사용된 메모리양(디스크)

cache : 캐쉬로 남아있는 메모리양(디스크)

inact : 활성화되어 있지 않는 메모리양

active: 활성화된 메모리양





4. 메모리분석

- 리눅스의 특성상 메모리의 free양만을 가지고 메모리가 부족한 것을

정의하는 것은 의미가 없는 상황입니다. 리눅스의 특성상 필요 시

시스템의 성능향상을 위하여 free의 메모리를 cache로 사용하는 특성이

있기 때문입니다. 이러한 사유로 메모리의 부족을 판단할 수 있는 것은

스왑핑이 발생되는지 여부에 따라서 결정하는 것이 가장 유용한 것으로

보여집니다. 특히 Disk I/O관련 작업이 많은 경우에 이러한 현상이

일어날 수 있음을 염두에 두시길 바랍니다.
신동인
비정기 조언자

그놈의 시스템 모니터 ( system monitor ) 에서 표시되는 used memory 값은 어떻게 구해지는 건가요?

안녕하세요,리눅스에서 메모리관련 설명자료를 드립니다.



※ 리눅스 메모리관련 설명자료



1. FREE 명령

# free

total used free shared buffers cached

Mem: 4100240 370608 3729632 0 44128 157872

-/+ buffers/cache: 168608 3931632

Swap: 2040208 0 2040208



total : used + free + shared + buffers + cached + -/+ buffers/cache의 첫값



- 항목설명

total : 전체 메모리의 양

used : 사용중인 메모리의 양

free : 사용되지 않는 메모리의 양

shared: 프로세스 공유메모리의 양

buffer: 디스크 버퍼캐슈의 양

cached: 디스크상에 케쉬된 메모리의 양

-/+ buffers/cache: 프로세스에서만 사용되는 메모리의 양(첫번째 값)

free + buffers + cached (두번째 값)

swap : Swap의 사용양





2. /proc/meminfo값

# cat /proc/meminfo

total: used: free: shared: buffers: cached:

Mem: 4198645760 379994112 3818651648 0 45187072 161660928

Swap: 2089172992 0 2089172992

MemTotal: 4100240 kB

MemFree: 3729152 kB

MemShared: 0 kB

Buffers: 44128 kB

Cached: 157872 kB

SwapCached: 0 kB

Active: 205232 kB

ActiveAnon: 64800 kB

ActiveCache: 140432 kB

Inact_dirty: 46144 kB

Inact_laundry: 14848 kB

Inact_clean: 0 kB

Inact_target: 53232 kB

HighTotal: 0 kB

HighFree: 0 kB

LowTotal: 4100240 kB

LowFree: 3729152 kB

SwapTotal: 2040208 kB

SwapFree: 2040208 kB

CommitLimit: 4090320 kB

Committed_AS: 239744 kB

HugePages_Total: 0

HugePages_Free: 0

Hugepagesize: 262144 kB



- 항목설명

MemTotal : MemFree + MemShared + Buffers + Cached + Swapcached

위 값에 free값의 -/+ buffers/cache의 첫값응 더하면 됨.



cached(첫번째) : (Hash Table에 사용주인 메모리) - (buffer로 사용중인 메모리)

Cached(여덟번째) : (Hash Table에 사용주인 메모리) - (buffer로 사용중인 메모리)

- SwapCached값





3. vmstat명령

# vmstat -k

procs memory swap io system cpu

r b swpd free buff cache si so bi bo in cs us sy id wa

1 0 0 3737024 41136 157792 0 0 26 13 1030 22 0 0 99 1

# vmstat -ak

procs memory swap io system cpu

r b swpd free inact active si so bi bo in cs us sy id wa

0 0 0 3733424 46128 203616 0 0 26 13 1030 22 0 0 99 1



- 항목설명

swpd : 사용된 버춸메모리양(디스크)

free : 사용되지 않는 메모리양

buff : 버퍼로 사용된 메모리양(디스크)

cache : 캐쉬로 남아있는 메모리양(디스크)

inact : 활성화되어 있지 않는 메모리양

active: 활성화된 메모리양





4. 메모리분석

- 리눅스의 특성상 메모리의 free양만을 가지고 메모리가 부족한 것을

정의하는 것은 의미가 없는 상황입니다. 리눅스의 특성상 필요 시

시스템의 성능향상을 위하여 free의 메모리를 cache로 사용하는 특성이

있기 때문입니다. 이러한 사유로 메모리의 부족을 판단할 수 있는 것은

스왑핑이 발생되는지 여부에 따라서 결정하는 것이 가장 유용한 것으로

보여집니다. 특히 Disk I/O관련 작업이 많은 경우에 이러한 현상이

일어날 수 있음을 염두에 두시길 바랍니다.