filedesc_sx patch (20070401a)

Robert Watson rwatson at FreeBSD.org
Wed Apr 4 07:51:11 UTC 2007


On Wed, 4 Apr 2007, Hans Petter Selasky wrote:

> Just a small comment:
>
> @@ -60,10 +60,7 @@
> 	u_short	fd_cmask;		/* mask for file creation */
> 	u_short	fd_refcnt;		/* thread reference count */
> 	u_short	fd_holdcnt;		/* hold count on structure + mutex */
> -
> -	struct	mtx fd_mtx;		/* protects members of this struct */
> -	int	fd_locked;		/* long lock flag */
> -	int	fd_wanted;		/* "" */
> +	struct	sx fd_sx;		/* protects members of this struct */
> 	struct	kqlist fd_kqlist;	/* list of kqueues on this filedesc */
> 	int	fd_holdleaderscount;	/* block fdfree() for shared close() */
> 	int	fd_holdleaderswakeup;	/* fdfree() needs wakeup */
>
> Maybe it is better if you order the elements by size. Then you don't waste 
> so many extra bytes on platforms where the fields must be aligned.

This seems reasonable; I'll merge the patch as-is first, minimizing the patch 
size of the change against filedesc.h, and then investigate what you suggest 
as a followup.  Thanks for the comment!  Generally speaking, we probably 
should be doing a structure size/layout review for things like in-memory 
inodes, vnodes, sockets, file descriptors, files, threads, etc, where small 
changes in memory overhead can make significant overall changes in memory use 
and cache efficiency.

Robert N M Watson
Computer Laboratory
University of Cambridge


More information about the freebsd-performance mailing list