2012-12-19 23 views
5

İstemci tarafında NFS özniteliği önbelleğini temizlemenin bir yolunu bulmalıyım. stat() çağrısı, önbellek özniteliği önbellekten cpm okur ve gerçek değeri değil, gerçek değerin önbelleğe yansıtılması için 3 saniyeye kadar sürer. montaj işleri sırasında 'noac' seçeneğini kullanmak ancak uzun vadede performansı etkileyecektir.nfs özniteliği önbelleği nasıl akıtılır?

Aynı dosyanın sahibi üzerinde vs. gibi bir çözüm yapmak gibi çözümlere rastladım, ancak bir stat() yapmadan önce öznitelik önbelleğini temizlemek için uygun bir yöntem var mı? ve bu prob sadece FreeSD değil, sadece Redhat Linux'ta olur. Birisi açıklayabilir mi?

+0

kullandığınız redhat versiyonu? Belki de bir hatadır ve bunu bildirmek daha iyi olur. Bir hatayı [redhat's bugzilla] (https://bugzilla.redhat.com/) adresinde doldurabilirsiniz. –

cevap

2

Bu, NFS'ye özgü değildir, ancak çekirdek bırakma önbelleklerine sahip olabilirsiniz. Bu genellikle IO kıyaslaması yapıldığında yapılır, ancak NFS için de çalışır.

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.