Note: "permalinks" may not be as permanent as we would like,
direct links of old sources may well be a few messages off.
> Read-ahead is tunable as above, write-back is handled transparently by
> the page cache, but can be tuned to a degree using VFS API features,
> mainly size is a concern, as if the write-back gets too big then there
> is a substantial performance penalty to other i/o ops in flight when it
> finally flushes.
>
Since we're quite off-topic anyway, here's a small patch which enables
Samba 3.0.x
to avoid filling the page cache while gig's of writes are flushed to the
filesystem.
Without this patch a system would totally get stuck since it's expires
all the most
valuable dentry, inodecache and shared libs if you write a larger then
memory
file.
--- ./source/lib/system.c 2006-04-20 04:29:23.000000000 +0200
+++ ../samba-3.0.24-fadvised/./source/lib/system.c 2006-10-11
16:23:41.000000000 +0200
@@ -102,6 +102,7 @@
do {
ret = write(fd, buf, count);
} while (ret == -1 && errno == EINTR);
+ posix_fadvise(fd,0,0,POSIX_FADV_DONTNEED);
return ret;
}
@@ -142,6 +143,7 @@
ret = pwrite(fd, buf, count, off);
#endif
} while (ret == -1 && errno == EINTR);
+ posix_fadvise(fd,0,0,POSIX_FADV_DONTNEED);
return ret;
}
#endif
This avoids the 'substantial performance penalty' Ross referred to, at
least for Samba.
For NFSd's I tuned the VM to flush early-and-often while holding on the
imported
caches for as long as possible:
[sysctl kernel settings]
vm.vfs_cache_pressure = 1
vm.dirty_ratio = 2
vm.dirty_background_ratio = 1
--
Leroy