2012-12-19 4 views
5

클라이언트 측에서 NFS 속성 캐시를 플러시하는 방법을 찾아야합니다. stat() 호출은 실제 값이 아닌 속성 캐시에서 ctime을 읽습니다. 실제 값이 캐시에 반영되도록 최대 3 초가 소요됩니다. 마운트 할 때 'noac'옵션을 사용하지만 장기적으로 성능에 영향을 미칩니다.nfs 속성 캐시를 플러시하는 방법은 무엇입니까?

파일 소유자가 같은 chown 같은 솔루션을 발견했지만 stat()을 수행하기 전에 속성 캐시를 플러시 할 수있는 적절한 방법이 있습니까? 이 문제는 FreeBSD가 아닌 Redhat Linux에서만 발생합니다. 아무도 설명 할 수 있을까요?

+0

사용하는 레드햇 버전? 어쩌면 그것은 버그이며 그것을보고하는 것이 좋습니다. [redhat의 버그 질] (https://bugzilla.redhat.com/)에서 버그를 채울 수 있습니다. –

답변

2

이것은 NFS와 관련이 없지만 커널이 캐시를 삭제하도록 할 수 있습니다. 이는 일반적으로 IO 벤치마킹 때 수행되지만 NFS에서도 작동합니다.

https://www.kernel.org/doc/Documentation/sysctl/vm.txt :

Writing to this will cause the kernel to drop clean caches, dentries and 
inodes from memory, causing that memory to become free. 

To free pagecache: 
    echo 1 > /proc/sys/vm/drop_caches 
To free dentries and inodes: 
    echo 2 > /proc/sys/vm/drop_caches 
To free pagecache, dentries and inodes: 
    echo 3 > /proc/sys/vm/drop_caches 

As this is a non-destructive operation and dirty objects are not freeable, the 
user should run `sync' first.