All of lore.kernel.org
 help / color / mirror / Atom feed
From: Max Kellermann <max.kellermann@ionos.com>
To: idryomov@gmail.com, amarkuze@redhat.com, xiubo.li@clyso.com,
	ceph-devel@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: Max Kellermann <max.kellermann@ionos.com>
Subject: [PATCH v3 00/12] fs/ceph: optimize struct layouts
Date: Wed, 12 Aug 2026 22:29:37 +0200	[thread overview]
Message-ID: <20260812202950.1800340-1-max.kellermann@ionos.com> (raw)

This patch set aims to reduce the memory usage of the Ceph filesystems
by optimizing the layout of structs, most importantly struct
ceph_inode_info:

- use `bool` instead of `int` for booelans
- use `u32` instead of `u64` where possible
- reorder fields to eliminate padding holes
- eliminate redundant fields

Without this patch set, ceph_inode_info looks like this with pahole:

	/* size: 1456, cachelines: 23, members: 79 */
	/* sum members: 1424, holes: 8, sum holes: 32 */
	/* member types with holes: 3, total: 3 */

With this patch set, struct ceph_inode_info got smaller by 96 bytes:

	/* size: 1360, cachelines: 22, members: 76 */
	/* member types with holes: 1, total: 1 */

struct ceph_cap shrinks by 24 bytes:

	/* size: 120, cachelines: 2, members: 12 */

	/* size: 96, cachelines: 2, members: 10 */

struct ceph_snap_realm shrinks by 24 bytes, too:

	/* size: 232, cachelines: 4, members: 21 */
	/* sum members: 216, holes: 3, sum holes: 12 */

	/* size: 208, cachelines: 4, members: 20 */

---
v1->v2:
 - fix CONFIG_FS_ENCRYPTION check in "i_truncate_pagecache_size" patch
 - add patches to shrink ceph_cap and ceph_snap_realm
v2->v3:
 - rebase on latest master

Max Kellermann (12):
  fs/ceph/super: remove unused field `i_cap_migration_resv`
  fs/ceph/super: make field `i_truncate_pagecache_size` optional
  include/ceph/ceph_fs.h: convert `pool_id` to u32
  fs/ceph/super.h: convert ceph_inode_xattr fields to `bool`
  fs/ceph/super.h: convert ceph_cap_snap.writing fields to `bool`
  fs/ceph: consistently use `u32` for `time_warp_seq`
  fs/ceph/super: reorder fields to eliminate padding holes
  fs/ceph: remove i_truncate_mutex, use i_fragtree_mutex for both
  fs/ceph/super.h: add `const` to helpers
  fs/ceph/super.h: add helper ceph_in_snap()
  fs/ceph: use ceph_vino() etc. instead of accessing i_vino directly
  fs/ceph: remove redundant inode number from ceph_inode_info

 fs/ceph/acl.c                |   2 +-
 fs/ceph/addr.c               |  23 ++++----
 fs/ceph/cache.c              |   4 +-
 fs/ceph/caps.c               |   8 +--
 fs/ceph/dir.c                |  20 +++----
 fs/ceph/export.c             |   8 +--
 fs/ceph/file.c               |  28 +++++-----
 fs/ceph/inode.c              |  38 ++++++++-----
 fs/ceph/mds_client.c         |  12 ++---
 fs/ceph/mds_client.h         |   2 +-
 fs/ceph/quota.c              |   6 +--
 fs/ceph/snap.c               |   8 +--
 fs/ceph/super.h              | 102 +++++++++++++++++++++++++----------
 fs/ceph/util.c               |   8 +--
 fs/ceph/xattr.c              |  18 +++----
 include/linux/ceph/ceph_fs.h |   2 +-
 16 files changed, 171 insertions(+), 118 deletions(-)

-- 
2.47.3


             reply	other threads:[~2026-08-12 20:29 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-12 20:29 Max Kellermann [this message]
2026-08-12 20:29 ` [PATCH v3 01/12] fs/ceph/super: remove unused field `i_cap_migration_resv` Max Kellermann
2026-08-12 20:29 ` [PATCH v3 02/12] fs/ceph/super: make field `i_truncate_pagecache_size` optional Max Kellermann
2026-08-12 20:29 ` [PATCH v3 03/12] include/ceph/ceph_fs.h: convert `pool_id` to u32 Max Kellermann
2026-08-12 20:29 ` [PATCH v3 04/12] fs/ceph/super.h: convert ceph_inode_xattr fields to `bool` Max Kellermann
2026-08-12 20:29 ` [PATCH v3 05/12] fs/ceph/super.h: convert ceph_cap_snap.writing " Max Kellermann
2026-08-12 20:29 ` [PATCH v3 06/12] fs/ceph: consistently use `u32` for `time_warp_seq` Max Kellermann
2026-08-12 20:29 ` [PATCH v3 07/12] fs/ceph/super: reorder fields to eliminate padding holes Max Kellermann
2026-08-12 20:29 ` [PATCH v3 08/12] fs/ceph: remove i_truncate_mutex, use i_fragtree_mutex for both Max Kellermann
2026-08-12 20:29 ` [PATCH v3 09/12] fs/ceph/super.h: add `const` to helpers Max Kellermann
2026-08-12 20:29 ` [PATCH v3 10/12] fs/ceph/super.h: add helper ceph_in_snap() Max Kellermann
2026-08-12 20:29 ` [PATCH v3 11/12] fs/ceph: use ceph_vino() etc. instead of accessing i_vino directly Max Kellermann
2026-08-12 20:29 ` [PATCH v3 12/12] fs/ceph: remove redundant inode number from ceph_inode_info Max Kellermann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260812202950.1800340-1-max.kellermann@ionos.com \
    --to=max.kellermann@ionos.com \
    --cc=amarkuze@redhat.com \
    --cc=ceph-devel@vger.kernel.org \
    --cc=idryomov@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=xiubo.li@clyso.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.