많은 양의 데이터를 디스크에 쓴 후 메모리 버퍼/캐시 사용량을 높일 수 있습니까?

많은 양의 데이터를 디스크에 쓴 후 메모리 버퍼/캐시 사용량을 높일 수 있습니까?

내 Apache 서버에서는 사용자 정의 Apache 모듈을 사용하여 파일에 대한 요청 로깅을 활성화했습니다.

결국 로그 파일은 수 기가바이트에 달할 수 있습니다. Nagios를 사용하면 메모리 사용량이 평소보다 높다는 것을 알았습니다(사용 가능한 메모리가 4-5GB 적음).캐시됨메모리(예: 명령을 사용하여 buff/cache에 보고된 내용 free -m)

여기에 이미지 설명을 입력하세요.

  • 19: 로그 비활성화
  • 20: 로그 활성화
  • 21: 로그 활성화 + VM 메모리 추가

지금까지는 명확하지 않음이것은 사실이지만 나중에 다시 읽어야 할 경우를 대비하여 Linux가 디스크에 기록된 내용을 일시적으로 메모리에 보관하기를 바랍니다.

이것이 의미가 있습니까, 아니면 주로 디스크에서 읽는 것(기록된 것이 아닌)을 위한 캐시입니까?

일단 연결이 닫히면 할당한 내용이 자동으로 정리되므로(한 가지 가능성은 TCP/IP 지연 연결이 많이 있다는 것입니다) 따라서 Apache 모듈에 메모리 누수가 있다고 생각하지 않습니다. 따라서 AFAIK는 그렇지 않습니다. 캐시 메모리에는 나타나지 않습니다.

답변1

나는 Linux가 나중에 다시 읽어야 할 경우를 대비하여 디스크에 기록된 내용을 일시적으로 메모리에 보관하기를 원합니다.

맞습니다. 여기 보이는 것이 바로 그것입니다. 디스크에 기록된 데이터는 짧은 시간 내에 (보통 다른 프로세스에 의해) 다시 읽는 것이 일반적이며, 캐시는 디스크에서 읽는 데이터와 디스크에 쓰는 데이터 모두에 사용됩니다.

일반적으로 여유 메모리는 메모리 낭비이므로 데이터를 캐시하는 데 사용하는 것이 좋습니다.

답변2

내 질문에 대답하자면: 예, 가능합니다.

다음 명령은 캐시를 지운 다음 임의의 데이터를 파일에 씁니다.

sysctl -w vm.drop_caches=3          ; drop memory cache   
free -m                             ; check memory
head -c 1G </dev/urandom >myfile    ; create a 1G random file
free -m                             ; check memory

결과는 다음과 같습니다.

              Before : free: 474  cache: 143  avail: 450
After (100M written) : free: 371  cache: 246  avail: 428
After (  1G written) : free:  72  cache: 543  avail: 414 

디스크에 기록된 데이터가 많을수록 용량도 커집니다.은닉처되다, 동시에무료기억력 저하.효과가있다메모리는 (예상대로) 어느 정도 변경되지 않은 상태로 유지됩니다.

관련 정보