[OpenAFS] Defining size of AFS client disk cache

Jeffrey Hutzelman jhutz@cmu.edu
Tue, 06 Jul 2004 14:54:13 -0400


On Tuesday, July 06, 2004 16:41:05 +0100 "Wheeler, JF (Jonathan) " 
<J.F.Wheeler@rl.ac.uk> wrote:

> I thought I understood the rules for defining the size of the disk cache
> for an AFS client, in that the third parameter of the file
> /usr/vice/etc/cacheinfo should be no more than 90% of the size of the disk
> partition user for the cache.  For a particular Linux client running
> OpenAFS version 1.11, I have:
>
> [csflnx61] $ cat /usr/vice/etc/cacheinfo
> /afs:/usr/vice/cache:100000
> [csflnx61] $ df -k /usr/vice/cache
> Filesystem           1k-blocks      Used Available Use% Mounted on
> /dev/hda6               116648     95031     15595  86% /afscache
> [csflnx61] $ fs getcacheparms
> AFS using 88916 of the cache's available 100000 1K byte blocks.
>
> Note that 100000/1166.48 = 85.7 %.  Yet a user copying several large files
> from AFS into a Unix partition or running md5sum -c on those files
> generates input/output errors at random points (i.e. the errors nearly
> always occur, but not at the same point).  Reducing the size of the
> available cache by issuing the command (as root);
>
> fs setcachesize 90000
>
> allows either of the commands above to complete successfully.
>
> Note that the files involved consist of approximately 850 Mb of data.  Any
> comments would be welcome.  The system where the error was first seen is a
> multi-user system, so it is important to get the configuration right; this
> is the fist time we have seen his sort of problem for some time
> (previously it was also the available cache size which was wrong).

On many (all?) platforms, some access to cache files is performed with the 
user's credentials.  This means that if the user is not root, they are 
subject to the usual minimuim-free-space restrictions with respect to the 
cache partition.  That means that a write will fail if it would cause the 
minimum free space to go below the specified limit.

Note that the cache contains data which does not count toward the cache 
usage limit but _does_ count as space used on the disk.  This includes the 
contents of directories in the underlying filesystem as well as various 
bits of metadata kept by the cache manager.

This means that on a filesystem with a 10% minfree, setting the cache size 
to 90% of the total filesystem size will not work.

-- Jeffrey T. Hutzelman (N3NHS) <jhutz+@cmu.edu>
   Sr. Research Systems Programmer
   School of Computer Science - Research Computing Facility
   Carnegie Mellon University - Pittsburgh, PA