drop_caches가 "사용 가능한" 메모리를 늘리는 이유는 무엇입니까?

drop_caches가 "사용 가능한" 메모리를 늘리는 이유는 무엇입니까?

관리 중인 proxmox 7 노드에서 메모리 부족 문제가 발생했습니다. 비슷한 문제에 대해 읽었을 때 linuxatemyram.com으로 이동했고, 이 페이지를 읽은 후 "사용된" 메모리 대신 "사용 가능한" 메모리를 모니터링하기 시작했습니다. 그러나 문제는 지속되었습니다(가동 시간에 따라 사용 가능한 메모리가 감소함).

그런 다음 명령을 실행하여 무료 Linux 캐시를 강제로 사용할 수 있음을 발견했습니다 echo 3 > /proc/sys/vm/drop_caches. 나는 "사용된" 메모리가 자유로워지는 것을 기대했지만 "사용 가능한" 메모리가 증가할 것이라고는 기대하지 않았습니다. 왜냐하면 제가 이해하는 한 사용 가능한 메모리도 Linux에서 캐싱을 위해 사용되기 때문에 사용되는 것으로 간주되기 때문입니다.

그러나 다음과 같이 drop_caches 이후 "사용 가능한" 메모리가 증가했습니다.

root@proxmox13:~$ free -h
               total        used        free      shared  buff/cache   available
Mem:            31Gi        29Gi       1.1Gi        67Mi       258Mi       977Mi
Swap:             0B          0B          0B
root@proxmox13:~$ echo 2 > /proc/sys/vm/drop_caches
root@proxmox13:~$ free -h
               total        used        free      shared  buff/cache   available
Mem:            31Gi        26Gi       4.1Gi        67Mi       205Mi       3.9Gi
Swap:             0B          0B          0B

왜 증가했는가? 캐싱에 사용된 경우 해제된 메모리가 이전에 사용 가능한 것으로 간주되지 않은 이유는 무엇입니까?

당신의 도움을 주셔서 감사합니다.

답변1

높은 수준에서는 무료로 사용할 수 있습니다....을 더한인간의 편의를 위해 캐시 및 기타 쉽게 회수할 수 있는 것.https://www.linuxatemyram.com/무슨 일이 일어나고 있는지 설명하기 위해 사용 가능한 것을 사용합니다. 무료를 제외하는 다양한 캐시에 대한 다른 카운터가 존재합니다.

실제로 Linux VMM은 복잡하고 지저분합니다. 간단한 계산으로 메모리 사용량이 정확히 합산되는 경우는 거의 없습니다. 제 생각에는/proc/meminfo에 캐시된 것은 페이지 캐시를 의미합니다.하지만 너도 떨어졌어덴트리와 아이노드. 그래서 무료의 버프/캐시는 크게 변하지 않았습니다. 커널 객체를 자세히 조사해야 한다면 슬랩탑을 사용해 보십시오.

32개 중 1GB는 용량 계획 관점에서 볼 때 많은 양이 아닙니다. VM 호스트당 게스트 수를 줄이거나 물리적 메모리를 늘리는 것이 좋습니다.

/proc/sys/vm/drop_caches캐시를 삭제하고 디스크에서 데이터를 다시 읽는 작업으로 인해 성능이 저하될 수 있는 작업은 사용하지 마십시오 . 이는 사람들이 호스트를 재부팅하기에는 너무 게으른 경우 콜드 스토리지 성능 테스트를 위한 것입니다.

재부팅에 대해 말하면 프로그램은 천천히 감소하기 위해 메모리를 누수할 필요가 없습니다. 내부의 VM 호스트와 게스트는 아마도 수천 개의 작업을 실행하고 있으며 그 중 일부는 계속 실행되고 다양한 메모리 할당을 유지합니다. 소프트웨어 업데이트를 위해 몇 달에 한 번씩 재부팅해야 하므로 "누출"이 느린 한 자세히 조사할 가치가 없을 수도 있습니다.

다음을 확인하여 메모리 모니터링을 개선하세요.압력 실속 정보. 제가 실제로 관심을 갖는 지표는 작업이 메모리 부족으로 인해 지연되고 PSI가 이를 추적하는지 여부입니다.

관련 정보