Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 18 Nov 2020 19:47:24 +0000 (UTC)
From:      Mateusz Guzik <mjg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r367814 - head/sys/sys
Message-ID:  <202011181947.0AIJlOXu003910@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mjg
Date: Wed Nov 18 19:47:24 2020
New Revision: 367814
URL: https://svnweb.freebsd.org/changeset/base/367814

Log:
  fd: reorder struct file to reduce false sharing
  
  The size on LP64 is 80 bytes, which is just more than a cacheline, does
  not lend itself to easy shrinking and rounding up to 2 would be a huge
  waste given NOFREE marker.
  
  The least which can be done is to reorder it so that most commonly used
  fields are less likely to span different lines, and consequently suffer
  less false sharing.
  
  With the change at hand most commonly used fields land in the same line
  about 3/4 of the time, as opposed to 2/4.

Modified:
  head/sys/sys/file.h

Modified: head/sys/sys/file.h
==============================================================================
--- head/sys/sys/file.h	Wed Nov 18 19:44:30 2020	(r367813)
+++ head/sys/sys/file.h	Wed Nov 18 19:47:24 2020	(r367814)
@@ -177,14 +177,14 @@ struct fadvise_info {
 };
 
 struct file {
+	volatile u_int	f_flag;		/* see fcntl.h */
+	volatile u_int 	f_count;	/* reference count */
 	void		*f_data;	/* file descriptor specific data */
 	struct fileops	*f_ops;		/* File operations */
-	struct ucred	*f_cred;	/* associated credentials. */
 	struct vnode 	*f_vnode;	/* NULL or applicable vnode */
+	struct ucred	*f_cred;	/* associated credentials. */
 	short		f_type;		/* descriptor type */
 	short		f_vnread_flags; /* (f) Sleep lock for f_offset */
-	volatile u_int	f_flag;		/* see fcntl.h */
-	volatile u_int 	f_count;	/* reference count */
 	/*
 	 *  DTYPE_VNODE specific fields.
 	 */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202011181947.0AIJlOXu003910>