Linux가 거의 가득 찼을 때 왜 메모리 캐시를 제거합니까?


14

다음은 512MB의 RAM과 nginx / php-fpm / mysqld를 통해 CentOS를 실행하는 VPS의 메모리 그래프가 하루에 수천 명의 방문자에게 (대부분 정적) 콘텐츠를 제공하는 모습입니다.

주간 메모리 그래프

(x 축의 요일)

보시다시피 캐시 및 버퍼 영역에서 상당히 뛰어납니다. 메모리 캐시가 불규칙적 인 간격으로 제거됩니다 (책임있는 크론 작업 제외). 일반적으로 항상 크지는 않지만 더 이상 자랄 수없는 지점에서 제거됩니다. 때로는 거의 절반 만 완전히 지워집니다.

이러한 제거의 논리를 이해하려고합니다. 파일 데이터가 훨씬 오래 캐시되고 메모리 캐시가 지워질 때 평소보다 더 많은 메모리를 사용하는 다른 프로그램을 보지 못합니다.

이 정상적인 동작입니까, 아니면 뭔가 빠졌습니까?

업데이트 : 메모리 업그레이드로 그래프가 안정화 된 것 같습니다. 여전히 작은 방울이 보이지만 업그레이드 이전만큼 중요하지 않습니다.

메모리 업그레이드 후


OpenVZ / Virtuozzo 컨테이너입니까, 아니면 XEN 또는 KVM과 같은 실제 VM입니까?
jordanm

1
그들이 무엇인지 설명 할 수는 없지만 같은 행동을 나타내는 VPS가 있습니다. dl.dropbox.com/u/1578899/memory-week.png
EightBitTony

@jordanm Xen 기반 가상 머신입니다.
redburn

@EightBitTony 공유해 주셔서 감사합니다. 당신은 조금 더 자연스럽게 보이지만 메모리 캐시에서 비슷한 (그러나 더 예측 가능한) 패턴의 하락을 분명히 봅니다.
redburn

Munin 2가 약간의 차이 (당신의 스모 더 그래프)를 초래할 정도로 충분히 다르게 데이터를 그래프로 표시 / 수집하는지 궁금했지만, 심지어 내 사이클조차도 매일이 아닌주기의 중간에 하락을 보여줍니다. 물론 이상하다.
EightBitTony

답변:


3

많은 것들이 될 수 있습니다. 어쩌면 실행중인 프로그램 중 하나가 때때로 많은 RAM을 사용하고 있습니다. 실제로 x 축에서 몇 주가 지나면 훨씬 더 높은 해상도 (예 : 분당 1 회 또는 2 초)로 샘플링하여 진행중인 작업에 대한 자세한 정보를 얻어 캐시가 삭제되도록해야합니다. ps그리고 top그 시간 동안 (평균 부하 포함) 출력도 유용 할 것이다.


그렇습니다. 우리는 메모리 사용이 1 분 정도에 아주 짧고 갑자기 발생하고 Munin에 의해 발견되지 않는 경우 캐시를 덤프 할 수 있다는 사실을 이론적으로 알 수 있습니다.
EightBitTony

헤더는 실제로 1 주일의 데이터를 표시한다는 점에서 약간 혼란 스럽습니다. 따라서 요일은 x-as의 요일입니다. 폴링 빈도에 관해서 : Munin은 5 분마다 데이터를 가져 오며 주파수를 변경할 수 있다고 생각하지 않습니다. 나는 nginx, mysql, php-fpm 및 munin-node 만 실행하고 있습니다. 아마도 mysql 캐시와 관련이 있습니까?
redburn

나는 5 초마다 파일에 출력을 쓰는 최고 (메모리 사용량별로 정렬)를 한 다음 해당 파일을 분석하고 캐시 된 메모리가 갑자기 떨어진 지점에서 비정상적인 동작을 나타내는 프로세스를 찾지 못했습니다. 프로세스 가이 많은 메모리를 사용하고 여전히 5 초 창을 벗어날 수 없다면, 이것이 원인 일 수 있다고 확신하지 못합니다. 그러나 amok을 실행하는 프로세스가 없다면 무엇이 될 수 있습니까?
redburn

시스템 메모리 캐시 프로세스 기여는 (쉽게)에 반영되지 않습니다 얼마나 :이 스레드는 조금 오래된,하지만 방법에 대한 빠른 관측이다 위에 매우 활동적인 프로세스는 자신없이 매우 빠르게 캐시에 물건을 쌓아 수 있기 때문에, 할당 된 메모리가 많이 증가합니다. 예를 들어, 전송을 위해 작은 청크로 매우 큰 파일을 읽는 경우 – 프로세스는 할당 된 수 MB 이상을 사용하지 않을 수 있지만 이러한 MB는 캐시에서 참조를 지속적으로 변경하고 누적합니다. 따라서 최고 출력에서 ​​살펴볼 것은 갑자기 CPU 시간이 누적되는 것입니다.
goldilocks

: 당신은이에 관심이있을 수 cognitivedissonance.ca/cogware/plog
금발 미녀

2

가능한 이유 중 하나는 로그와 같이 파일이 커지면서 주어진 크기에 도달하면 제거, 압축 또는 다른 곳으로 전송되기 때문입니다.

두 경우 모두, 원래 파일이 제거 되 자마자 캐시 크기 (OS에 메모리 압력이없는 경우 전체)가 캐시에서 해제됩니다.


흥미로운 아이디어이지만 가장 활동적인 로그 파일은 회전하기 전에 파일 크기가 25MB를 거의 넘지 않으며 캐시 / 버퍼 사용량은 약 200MB 감소하는 경향이 있습니다.
redburn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.