2012-12-19 27 views
5

Tôi cần tìm cách xóa bộ nhớ cache thuộc tính NFS ở phía máy khách. Lệnh gọi stat() đọc ctime từ bộ nhớ cache thuộc tính chứ không phải giá trị thực, mất tối đa 3 giây để giá trị thực được phản ánh trong bộ nhớ cache. sử dụng tùy chọn 'noac' khi gắn kết hoạt động nhưng sẽ ảnh hưởng đến hiệu suất trong thời gian dài.Làm cách nào để xóa bộ nhớ cache thuộc tính nfs?

Tôi đã xem xét các giải pháp như thực hiện lệnh trên cùng một chủ sở hữu tệp vv nhưng có phương pháp thích hợp để xóa bộ đệm thuộc tính trước khi thực hiện một stat() không? và prob này chỉ xảy ra trên Redhat Linux chứ không phải FreeBSD. Bất cứ ai có thể giải thích?

+0

Phiên bản redhat bạn đang sử dụng? Có thể đó là một lỗi và bạn nên báo cáo nó. Bạn có thể điền vào một lỗi trên [redhat's bugzilla] (https://bugzilla.redhat.com/) –

Trả lời

2

Đây không phải là đặc trưng cho NFS, nhưng bạn có thể có bộ đệm thả hạt nhân. Điều này thường được thực hiện khi IO benchmarking, nhưng cũng làm việc cho 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. 
Các vấn đề liên quan