*nix 시스템의 각 프로세스에서 사용되는 캐시를 얻는 방법

*nix 시스템의 각 프로세스에서 사용되는 캐시를 얻는 방법

프로세스별 캐시 사용량을 알고 싶습니다. 그것을 할 수 있는 방법이 있나요? 저는 현재 우분투를 사용하고 있습니다.

문제는 내 컴퓨터가 전체 캐시를 가득 채운 다음 RAM이 필요할 때 캐시를 해제하는 대신 교체를 시작한다는 것입니다. 이것은 이상적인 상황이 아닙니다. 어떤 프로세스가 이 모든 것을 "요구"하는지 아는 것이 정말 도움이 될 것입니다. .htop

보시다시피 16GB의 캐시가 있습니다(에 따르면 그 중 일부는 버프입니다 htop). 약 45분 후 입니다 uptime. 아무 것도 스왑되지 않지만 때로는 5~7GB의 데이터만 스왑됩니다(가상 머신 등을 시작할 때).

사용자 이름@호스트 이름:[~]$ free -h
              사용 가능한 총 무료 공유 버퍼/캐시 수
메모리: 23Gi 6,4Gi 354Mi 4,6Gi 16Gi 11Gi
교환 : 23Gi 3,0Mi 23Gi

그럼에도 불구하고, 이 문제가 없더라도 누가 캐싱하고 있는지, 얼마나 캐싱하고 있는지 정확히 아는 것은 좋은 정보입니다.

답변1

프로세스별 캐시 사용량은 추적되지 않습니다. 페이지가 캐시에 존재하며 시스템의 모든 프로세스에서 사용할 수 있습니다.

대량의 파일을 검사하는 프로세스(예: 바이러스 백신 스캐너 또는 백업 도구)에서는 종종 다음과 같은 증상이 나타납니다. 스왑이 가능한 경우 대용량 파일을 계속 읽으면 스왑을 위해 다른 페이지가 제거됩니다. 시스템 성능을 향상시키기 위해 다음 사항을 고려할 수 있습니다.

대규모 스왑 파티션(예를 들어최대 절전 모드의 경우 목표는 설치된 메모리의 2/5이지만 이는 엄격한 제한은 아닙니다.vm.swappiness따라서 커널은 페이지 캐시 페이지를 제거하는 것보다 스왑이 더 비싸다고 간주하고 스왑 사용량을 늘리기보다는 캐시 사용량을 줄이는 경향이 있습니다.

관련 정보