필자는 사용자 정의 웹 OS가있는 NAS를 가지고 있으며, Mobotix IP 카메라를 보완하는 시스템을 함께 구성하는 수많은 데몬을 실행합니다.
최근 몇 주 동안, 저는 약간의 문제가 있습니다. 내장 된 리소스 모니터는 하루에 약 10 %의 메모리 사용량 증가를 보여줍니다. 90 %에 도달하면 +/- 1 % 범위 내에 있습니다.
나는 또한 내가 부르는, 최적화 된 메모리를 계산하고있다. 즉, 제거 된 버퍼와 추가 된 캐시는 매일 ~ 20 % 정도를 유지합니다.
출력 free
지금과 같은:
total used free shared buffers cached
Mem: 1901072 1731036 170036 0 146228 1207360
-/+ buffers/cache: 377448 1523624
Swap: 1048572 1648 1046924
보시다시피, 메모리는 거의 꽉 차 있지만 캐시 / 버퍼링은 대부분의 메모리를 차지하는 것처럼 보입니다.
나는 이것이 어딘가에 메모리 누수로 인해 발생했다는 느낌을 가지고 있지만 확실하지 않습니다.
어떤 프로세스가 버퍼링 / 캐시 된 메모리를 채우고 있는지 어떻게 탐지합니까?
답변
이것은 문제가되지 않습니다. 리눅스는 그렇게하기로되어 있습니다. 정말로 메모리 문제가 있다면, 모든 것이 천천히 돌아가고 프로세스가 OOM 킬러 .
Linux 커널은 디스크 캐싱에 사용되지 않는 RAM을 이용합니다. 이것은 좋은 일이며 모든 것이 더 빨리 돌아갑니다. 이 메모리는 필요한 프로그램에서 계속 사용할 수 있으며 다른 곳에서는 필요하지 않은 경우에만 캐싱에 사용됩니다. 그 이유는 free
쇼 buffers/cache
별도로 사용 가능한 메모리로 간주해야합니다.
시스템에서 사용할 수있는 실제 메모리 양은 다음과 같습니다. free
+ buffers
+ cache
, 게시 한 예에서 170036 + 146228 + 1207360 = 1523624
1.5G의 여유 메모리입니다.
이것은 매우 잘 설명되어 있습니다. RedHat 문서 :
이 예제에서 사용 가능한 총 메모리 양은 4040360KB입니다.
264,224 KB는 프로세스에서 사용하고 3776136 KB는 다른 프로세스에서 사용 가능합니다.
응용 프로그램. 첫 번째 줄에 혼란스러워하지 마십시오.
28160KB는 무료입니다! 사용량 수치를 보면 알 수 있습니다.
대부분의 메모리 사용은 버퍼 및 캐시 용입니다. Linux는 항상 시도합니다.
사용 가능한 메모리를 사용하여 디스크 작업 속도를 높이려면 RAM을 사용하십시오.
버퍼 (파일 시스템 메타 데이터) 및 캐시 (실제 내용이있는 페이지
파일 또는 블록 장치). 이렇게하면 시스템이 더 빨리 실행됩니다.
디스크 정보가 이미 I / O를 저장하는 메모리에 있기 때문에
작업. 프로그램이나 응용 프로그램에서 공간이 필요한 경우
오라클, 그럼 리눅스는 메모리를 양보하는 버퍼와 캐시를 무료로 것입니다
응용 프로그램 용. 시스템이 잠시 동안 실행되는 경우 일반적으로
첫 번째 줄의 “무료”필드 아래의 작은 숫자를보십시오.
자세한 내용은 여기를 참조하십시오 :