NFS 프로토콜에 대한 페이지 캐싱 비활성화

NFS 프로토콜에 대한 페이지 캐싱 비활성화

공유 NFS 서버에서 파일을 읽는 NFS 클라이언트가 있습니다.
서버에서는 파일 읽기 작업을 모니터링합니다.
문제는 동일한 컴퓨터에서(다른 사용자를 사용하여) 동일한 파일을 읽을 때입니다. NFS 프로토콜을 통해(클라이언트에서, 따라서 서버에서) 파일 읽기 작업을 1개만 호출합니다.

조사 후(이 스레드) - 페이지 캐시를 지울 때 다음과 같은 사실을 발견했습니다.

echo 1 > /proc/sys/vm/drop_caches

READ FILE 작업이 다시 호출됩니다.

커널/운영 체제가 NFS 프로토콜에 대한 페이지 캐싱을 비활성화하도록 강제할 수 있습니까?

답변1

불가능한. NFS 서버에서 파일을 실행하려고 하면 어떤 일이 일어날지 상상해 보십시오. 파일은 메모리에 매핑되지만 페이지 캐싱이 허용되지 않기 때문에 실제로 메모리로 읽히지는 않습니다. 프로그램이 실행되기 시작하지만 메모리 맵이 RAM에 캐시되지 않기 때문에 즉시 페이지 오류가 발생합니다. 스타터가 아닙니다. 글쎄, 규칙을 약간 완화하여 해당 페이지에 대해 페이지 캐시를 한 번만 채울 수 있다고 가정해 보겠습니다. NFS 서버에서 RAM으로 읽어와 페이지 결함을 해결한 다음 즉시 제거합니다. 프로그램은 명령어를 실행한 다음 다시 페이지 폴트를 실행할 수 있습니다.

방금 설명한 사고 실험보다 조금 덜 우스꽝스러운 방식으로 작동하게 만들 수 있습니다. 특히 read()대신 일반에 대해 이야기하고 있기 때문에 mmap()그렇습니다. 그러나 귀하의 솔루션은 여전히 ​​가상 메모리 작동의 기본 방식과 성능이 완전히 일치하지 않습니다. 정말 안 좋을 것입니다.

관련 정보