[OpenAFS-devel] [grand.central.org #87977] MAX_FILESERVER_THREAD
vs FD_HANDLE_SETASIDE
Rainer Toebbicke
rtb@pclella.cern.ch
Mon, 03 Mar 2008 09:05:56 +0100
Been there, done that: namei-avoid-spurious-emfile-20071126 is the
answer I suppose.
Dan Hyde schrieb:
> I submitted a bug report last night, but wanted to go into more
> details, and also work out possible solutions.
>
> Back in '99, Transarc introduced to the fileserver a least recently
> used (LRU) cache of file descriptors. The idea was that when it came
> time to close a file, it didn't actually get closed but instead got put
> on a lru cache (perhaps removing and closing the oldest if the cache
> was full). When opening a file the cache was searched, and if found
> was removed and used. The size of this cache was chosen to not exceed
> the operating system maximum allowed number of open files, AND leave
> room to allow each running thread to open one more file, each. Both
> FD_HANDLE_SETASIDE and MAX_FILESERVER_THREAD were 64.
>
> Unfortunately, AFS 3.5 changed MAX_FILESERVER_THREAD to 128 and didn't
> change FD_HANDLE_SETASIDE to match. This means the cache size no
> longer allows each thread to open an additional file (up to 64 of them
> will be at risk, depending on how many threads you are using). If
> fileserver load gets high enough, an open can fail, and cause an
> Abort("VPutVnode: can't open index file!\n"). We've had this happen.
>
> I'd like to discuss possible solutions. One solution is to make sure
> people know the problem so the problem doesn't occur again, but that
> might not be the best solution. Below is what I submitted.
>
> Comments?
>
> ========
> diff -u vol/ihandle.h vol/ihandle.h
> --- vol/ihandle.h Thu Dec 20 10:50:41 2007
> +++ vol/ihandle.h Thu Feb 28 16:37:17 2008
> @@ -193,7 +193,8 @@
> #define STREAM_HANDLE_MALLOCSIZE 1
>
> /* Number of file descriptors needed for non-cached I/O */
> -#define FD_HANDLE_SETASIDE 64
> +/* This number is related to MAX_FILESERVER_THREAD in viced/viced.h */
> +#define FD_HANDLE_SETASIDE 128
>
> /* Don't try to have more than 256 files open at once if you are planning
> * to use fopen or fdopen. The FILE structure has an eight bit field for
> _______________________________________________
> OpenAFS-devel mailing list
> OpenAFS-devel@openafs.org
> https://lists.openafs.org/mailman/listinfo/openafs-devel
>
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Rainer Toebbicke
European Laboratory for Particle Physics(CERN) - Geneva, Switzerland
Phone: +41 22 767 8985 Fax: +41 22 767 7155