몇 가지 통계를 수행하기 위해 Python 스크립트를 실행 중인데 실제로 사용된 메모리는 약 10%로 낮습니다. 그리고 다른 프로세스에서는 더 많은 메모리를 소비하지 않습니다. 그러나 제가 사용하면 free -m
거의 95%의 메모리가 사용된 것으로 표시됩니다. 요점은 내 스크립트가 파일에서 많은 읽기를 수행해야 한다는 것인데, 문제를 일으킨 Linux 메모리 캐시 메커니즘이 있는지 궁금합니다. echo 1 >> /proc/sys/vm/drop_caches
작동하지만 수동으로 수행되는 것 같습니다. 메모리 비용을 줄이고 파일 읽기에 나쁜 영향을 주지 않으려면 어떻게 해야 합니까?
답변1
Linux 커널은 효율성을 위해 자동으로 파일을 메모리에 캐시합니다. 이것은 나쁜 것이 아닙니다. 실행하면 free -m
오른쪽에 캐시에 사용된 메모리 양이 표시됩니다. 응용 프로그램에 메모리가 필요한 경우 커널은 일부 캐시를 해제합니다. 스스로 관리하려고 해서는 안 됩니다.
답변2
나는 여기에 실제 문제가 있다고 생각하지 않습니다.
총 메모리가 얼마나 사용되고 있는지 신경쓰는 이유는 무엇입니까? 상처받는 게 있나요?
Linux는 메모리를 최대한 효율적으로 사용하려고 합니다. 사용 가능한 메모리가 많고 많은 파일을 읽는 경우 사용 가능한 메모리를 사용하여 해당 파일을 캐시합니다. 활성 메모리가 많으면 캐싱에 훨씬 적은 메모리를 사용하게 됩니다. 그것이 작동하는 방식입니다. 메모리를 전혀 사용하지 않으려면 컴퓨터에서 칩을 꺼내십시오.
많은 캐싱이 좋지 않을 수 있는 흔하지 않은 경우가 있습니다. 아마도 읽기 급증은 메모리 할당 급증 직전에 항상 발생할 수 있습니다. 아마도 귀하의 특정 사례에 대한 어떤 것이 가능한 이점이 없으며 마지막 0.1% 성능 비용을 짜내야 함을 의미할 수 있습니다. 어쩌면 당신은 제한된 수명의 RAM을 사용하는 임베디드 시스템을 사용하고 있을 수도 있습니다. 그러한 경우가 있다면 그것이 무엇인지 알려주십시오.