현재 프로그램이 종료 시 스택 할당을 취소하지 않는 문제에 봉착했습니다. 이는 Linux 페이지 캐싱의 자연스러운 동작인 것 같습니다.
데스크탑을 열면 약 300-500MB 정도 실행됩니다. Ardor와 같이 RAM을 많이 사용하는 다른 프로그램을 열기 위해 브라우저를 닫은 후사용된램은 떨어졌지만할당된RAM은 크게 변경되지 않았거나 최대 2.2GB 정도로 떨어집니다.
같은 문제도 논의 중이것철사. 내가 찾은 해결책은 다음 명령을 실행하여 PageCache만 지우는 것이었습니다.
sync; echo 1 > /proc/sys/vm/drop_caches
다음은 dentry와 inode를 지웁니다.
sync; echo 2 > /proc/sys/vm/drop_caches
다음은 PageCace AND dentry 및 inode를 지웁니다.
sync; echo 3 > /proc/sys/vm/drop_caches
그러나 매번 이것을 실행하고 싶지는 않습니다. 나는 내 작업 공간이 프로그램 간에 RAM의 모든 비트를 자유롭게 활용할 수 있기를 원합니다.
시스템 수준에서 PageCache를 구성하는 방법이 있습니까, 아니면 일종의 리스너로 서비스를 실행한 다음 프로그램이 닫힐 때 위 명령을 트리거하는 것과 같은 간단한 작업을 수행해야 합니까?
Brave를 켠 다음 예를 참조하세요.
닫은 뒤에 또 하나 있어요
부팅 시 RAM은 다음과 같습니다.
시스템 메시지:
커널: 5.10.56-1-lts
플라바: 아치
데스크탑: i3-Gap
테스트된 프로그램: Brave, Chromium, Firefox, Ardor, Gimp, Inkscape
답변1
이는 "종료 시 스택 할당을 해제하지 않는" 프로그램과 다릅니다. 당신이 보고 있는 것은 디스크의 데이터가 RAM에 캐시되어 있다는 것입니다. 이는 당신이 링크한 질문에 대한 답변에서 설명했듯이 정상적인 것입니다.
사용하지 않는 RAM은 낭비되는 RAM입니다.
캐시를 삭제하여 "수정"하려고 해서는 안 됩니다. 메모리가 부족해지면 커널은 필요에 따라 캐시된 데이터의 양을 자동으로 줄입니다. 캐시에 데이터를 저장하면 데이터에 액세스하는 데 필요한 시간이 줄어듭니다.
이것이 실제로 작동하는지 확인하려면 Brave를 시작하고 중지한 후 다시 시작해 보십시오. 이제 중지하고 캐시를 삭제한 후 다시 시작하여 시간이 얼마나 걸리는지 확인하십시오.
페이지 캐시는 프로그램이 종료될 때 자동으로 지워질 수 없습니다. 한 가지 이유는 페이지 캐시의 내용이 특정 프로세스와 관련이 없기 때문입니다. 너할 수 있다특정 프로세스에서 사용하는 페이지 캐시의 양을 다음 위치에 배치하여 제한합니다.그룹cgroup이 사용할 수 있는 메모리 양을 제한합니다. 여기에는 페이지 캐시가 포함됩니다.
답변2
당신이 요구하는 것은 컴퓨터가 나중에 뭔가를 기억해야 할 경우를 대비해 지금 뭔가를 잊어버리게 만드는 것입니다. 필요할 때 캐시된 데이터(디스크에서 검색할 수 있는 데이터)를 삭제하지만 이전에는 삭제하지 않습니다. 오래전에 잊어버리면 아깝습니다. 망각은 비용이 적게 들기 때문에 마지막 순간에 망각할 수 있습니다.
데이터를 잘못 해석하고 있습니다. 캐시 및 버퍼 메모리를 "사용 중"으로 생각하지 마십시오.
답변3
이 문제를 발견한 다른 사람들의 대답은 다음과 같습니다.HD 매개변수표시되는 줄을 찾아서 주석 처리를 해제하세요 write_cache = off
. 아직 테스트하지는 않았지만 나중에 결과를 반환해야 합니다.
기술적으로 다른 정답에서 볼 수 있듯이 쓰기-읽기 캐싱이 기본값인 이유가 있습니다.최대예. Linux가 메모리를 관리하는 방식을 어지럽히면 데이터가 손실되고 저장 매체의 조기 성능 저하가 발생할 수 있습니다. 모두가 논의하고 싶어하는 성능 문제는 말할 것도 없습니다.
나에게 이것은 문제가 되지 않습니다. 실제로 중요하지 않은 메모리를 무시하는 것이 바람직합니다.