From owner-svn-src-head@freebsd.org Wed Nov 18 19:47:24 2020 Return-Path: Delivered-To: svn-src-head@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 9DC04470F25; Wed, 18 Nov 2020 19:47:24 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Cbtcr44yHz4Zbj; Wed, 18 Nov 2020 19:47:24 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 7F04017822; Wed, 18 Nov 2020 19:47:24 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 0AIJlOHx003911; Wed, 18 Nov 2020 19:47:24 GMT (envelope-from mjg@FreeBSD.org) Received: (from mjg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 0AIJlOXu003910; Wed, 18 Nov 2020 19:47:24 GMT (envelope-from mjg@FreeBSD.org) Message-Id: <202011181947.0AIJlOXu003910@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mjg set sender to mjg@FreeBSD.org using -f From: Mateusz Guzik Date: Wed, 18 Nov 2020 19:47:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r367814 - head/sys/sys X-SVN-Group: head X-SVN-Commit-Author: mjg X-SVN-Commit-Paths: head/sys/sys X-SVN-Commit-Revision: 367814 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Nov 2020 19:47:24 -0000 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. */