SharedIT | 묻고 답하기(AMP)

리눅스 memory 에 관하여,,

안녕하세요.

현재 운영중인 서버의 메모리 사용률은 다음과 같습니다.



11G 사용중인데 buffer와 cache에 80G 가 할당되어 있고 available 수치가 79G 입니다.


질문드리는 이유는,

위와같은 상황에서 엔지니어 별로 판단이 다릅니다.


어떤 사람은 used가 11G이고 available이 79G 이니 메모리 사용률이 높은 것이 아니라 정상이다.

하지만 제 생각은 free가 979M 이고 swap 마저 사용중이기에 메모리가 모두 점유되었다고 생각이 듭니다.


어떻게 판단하시나요?


또한 위 같은 경우 buffer와 cache에서 점유하고있는 부분을 명령어를 통해 clear 해주는 것이 해결방법이라고 하시는 분들이 많던데 그럴 경우 현재 실행중인 프로세스에 전혀 문제가 안생기는건가요?

여러분들의 조언을 구합니다.

감사합니다.

Tags : 태그가 없습니다.

7개의 답변이 있습니다.

Genghis Khan
  0 추천 | 약 2년 전

buffer/cache 에 crontab으로 주기적으로 지우는

부분이 있긴 한데 이렇개 하면 문제될수 있는 부분도

있으니 유념해서 진행하셔야 합니다

특히 DB서버일 경우 더 유념하셔야 합니다

topkslee
  0 추천 | 약 2년 전

지인에게 확인 해보니 메모리 비우는 동안 시스템이 잠시 멈추는 증상은

있을 수 있다고 하네요

업무가 적은 시간대에 하시는걸 권고 드립니다.

topkslee
  0 추천 | 약 2년 전
  • Mem: total 94G, available 79G

말씀하신 것처럼 available 수치가 79G면 메모리 사용률이 높은 것은 아닌게 맞습니다.

다만 buff/cache 점유율이 높기때문에 swapping이 자주 발생할 수 있는 상태입니다.

  • Swap: total 29G

메모리 사용은 할 수 있으나 메모리 caching될 때 caching할 공간이 부족하기때문에

swapping이 자주 발생한다고 봐야합니다.


* 보통 대량의 파일을 관리하는 서버에서 Cache hit가 낮으면

buff/cache 점유율이 높아질 수 있고 swapping이 높아질 수 있습니다.


이런 경우는 주기적으로 비우주는 것도 방법일 수 있습니다.


캐싱 후 아래 영역크기 등을 주기적으로 체크해볼 필요가 있습니다. 

cat /proc/meminfo 해서 memory 현황을 보시고

여기 항목 중에 Inactive(anon)와 Inactive(file), SRelaimable 이 값들이 참조된지 오래되어

swap 영역으로 이동하고 새로운 메모리로 할당할 수 있는 크기입니다.


근본적으로는 일시적인 메모리 사용 증가로 일정 SWAP을 사용하는 상황인지

지속적인 메모리 부족으로 인해 SWAP이 커지는 경우 등을 지속적으로 모니터링하여

필요하다면 메모리 증설도 고려해봐야 할수도 있구요.


제가 알기로 cache 비우기는 시스템이 영향이 없는 것으로 아는데요.

명확하게 하기 위해 지원 엔지니어에게 한번 더 확인 해보시기 바랍니다.

 

Genghis Khan
  0 추천 | 약 2년 전

linux memory 사용량에 대해 많은 Test를 통해  분석을 해봤는데요

linux memory 사용량중 available은 물리적 실제 용량이며

free memory는 남아 있는 용량이라고 볼수 있지만 buffer/cache가 81G로 

buffer : inode 실제 주소 값 / cache : 자주 사용되는 파일들이라고 보면 되겠네요

중요한게 buffer /cache 입니다.  반환이 제대로 되어야  free memory가 여유가

생기는데 반환이 제대로 하려면  초기 parameter 설정이 매우 중요합니다.





Genghis Khan | 약 2년 전

vi /proc /sys/vm/vfs_cache_pressure  

buffer와 cache  비율을 설정하는 값이고 기본 값은 100입니다.

buffer는 inode 값을 보관하는데 vfs_cache_pressure 높게 설정하면 

buffer 비율이 높이고 낮게 설정하면 cache 비율을 높게 합니다.

즉 파일 개수가 많아 buffer가 중요한 시스템이라면 vfs_cache_pressure

높게 설정해야 합니다. 





Genghis Khan | 약 2년 전

메모리가 가득차게 되면 cache 가 디스크로 옮겨저 swaping이 이뤄집니다.

/proc/sys/vm/swappiness 설정하는데  기본이 60입니다.

swappiness 높게 설정하면 캐쉬 데이터를 삭제하는 것보다  스와핑 비율이 높아지고

swappiness  낮게 설정하면 캐쉬 데이터를 스와핑시키는 것보다 삭제비율이 높아집니다.

중요한건 SWAP 까지 가면 안됩니다. 

그만큼 시스템이 느려지면 서비스 문제가 될수 있습니다.



deerokgo
  0 추천 | 약 2년 전

top 으로 좀더 자세히 확인해보세요

좀비 프로세스 등도 있을 수 있겠네요

찌롱 | 약 2년 전

좀비는 없습니다

빨간신발
  0 추천 | 약 2년 전

저는 엔지니어는 아니고 그냥 관리자입니다.

저희도 비슷하게  free가 남았는데 swap을 잡아먹는 경우가 있어서 어떻게 해야할지 고민한적이 있었습니다.

그냥 나둬도 아직까지 큰 문제가 없어서 그냥 나두고 있습니다.

가끔 swap이 필요할까? 비활성 시켜볼까?

하는 생각은 들지만 그냥 나두고 있습니다.

잘 도는 시스템은 그냥 나두자.. ㅡㅡv

찌롱 | 약 2년 전

정확한 분석을 하고싶네요ㅠ

wansoo
  0 추천 | 약 2년 전

free는 오래 켜 두면 점차적으로 줄어 드는게 일반적이다 보니...

여유가 있는 걸로 보여지네요.

혹시 사용하는데 어떤 문제가 있으신건가요?

찌롱 | 약 2년 전

swap을 사용하다보니 시스템에 느린현상이 없지는 않네요

wansoo | 약 2년 전

swap으로 인해 속도가 느려진다면,

swap disk를 빠른 디스크로 변경해서 사용하면 도움이 됩니다.

SSD 등의 디스크에다 스왑되게 해서 사용해 보세요.

찌롱 | 약 2년 전

알고싶은 부분은,

현재 상황에서의 메모리 사용량에 대한 분석입니다.