나는 "사용 가능한 RAM은 낭비되는 RAM"이라는 개념을 알고 있습니다. 내 질문은 OS가 캐시된 RAM을 빠르고 효율적으로 확보하여 최대 사용 시간 동안 응용 프로그램이 충분한 RAM을 확보할 수 있도록 하는 방법입니다.
Linux에서 호스팅되는 웹 애플리케이션이 있습니다. 일반적으로 메모리 사용률은 10~20%입니다. 그러나 코드의 특정 부분을 호출하면 최대 약 100%까지 급증하는 것을 볼 수 있습니다. (코드는 최대한 최적화되었습니다.) 이런 일이 발생하면 이메일을 실행하고 싶습니다. 메모리 활용도(캐시 또는 애플리케이션 메모리 포함)를 모니터링하는 스크립트를 작성해야 합니까?
Linux에서 Out of Memory 오류가 발생하면 캐시 메모리가 0이고 모든 RAM이 애플리케이션에 할당되었음을 의미합니까?
답변1
운영 체제는 어떻게 캐시 RAM을 신속하고 효율적으로 확보하여 응용 프로그램이 최대 사용량 동안 충분한 RAM을 확보할 수 있도록 합니까?
ARC가 갑작스러운 RAM 수요를 흡수할 만큼 빠르게 줄어들 수 없는 Linux에서 ZFS를 사용하지 않는 한, Kusalananda가 이미 언급한 것처럼 커널이 캐시를 해제하는 데 걸리는 시간은 무시할 수 있습니다.
메모리 활용도(캐시 또는 애플리케이션 메모리 포함)를 모니터링하는 스크립트를 작성해야 합니까?
저는 애플리케이션 메모리와 시스템 메모리를 모니터링합니다. 애플리케이션 메모리 공간을 확보하기 위해 캐싱을 줄이면 더 많은 디스크 I/O가 필요하므로 성능이 저하될 수 있습니다.
Linux에서 Out of Memory 오류가 발생하면 캐시 메모리가 0이고 모든 RAM이 애플리케이션에 할당되었음을 의미합니까?
메모리 부족이 발생하면 대부분의 버퍼/캐시가 해제/플러시되었지만 이것이 의미하는 것은 아닙니다.모두메모리는 응용 프로그램에서 사용됩니다. 일부 메모리는 여전히 커널, RAM 기반 파일 시스템 또는 일부 하드웨어에서 직접 사용됩니다.