All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 00/11] fs/ceph: optimize struct layouts
@ 2026-08-24 18:41 Max Kellermann
  2026-08-24 18:41 ` [PATCH v5 01/11] fs/ceph/super: remove unused field `i_cap_migration_resv` Max Kellermann
                   ` (11 more replies)
  0 siblings, 12 replies; 13+ messages in thread
From: Max Kellermann @ 2026-08-24 18:41 UTC (permalink / raw)
  To: idryomov, amarkuze, xiubo.li, ceph-devel, linux-kernel; +Cc: Max Kellermann

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
v3->v4:
 - drop the buggy ceph_in_snap() change from ceph_d_prune()
 - fix -Wunused-variable on BITS_PER_LONG<64
v4->v5:
 - drop "Fixes" tag from "i_cap_migration_resv" patch
 - fix multi-line comment style
 - drop the "pool_id" 32 bit patch (may break RBD)

Max Kellermann (11):
  fs/ceph/super: remove unused field `i_cap_migration_resv`
  fs/ceph/super: make field `i_truncate_pagecache_size` optional
  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       |   7 ++-
 fs/ceph/cache.c      |   4 +-
 fs/ceph/caps.c       |   6 +--
 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/quota.c      |   6 +--
 fs/ceph/snap.c       |   8 ++--
 fs/ceph/super.h      | 103 +++++++++++++++++++++++++++++++------------
 fs/ceph/xattr.c      |   8 ++--
 13 files changed, 156 insertions(+), 94 deletions(-)

-- 
2.47.3


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2026-08-25 12:17 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-24 18:41 [PATCH v5 00/11] fs/ceph: optimize struct layouts Max Kellermann
2026-08-24 18:41 ` [PATCH v5 01/11] fs/ceph/super: remove unused field `i_cap_migration_resv` Max Kellermann
2026-08-24 18:41 ` [PATCH v5 02/11] fs/ceph/super: make field `i_truncate_pagecache_size` optional Max Kellermann
2026-08-24 18:41 ` [PATCH v5 03/11] fs/ceph/super.h: convert ceph_inode_xattr fields to `bool` Max Kellermann
2026-08-24 18:41 ` [PATCH v5 04/11] fs/ceph/super.h: convert ceph_cap_snap.writing " Max Kellermann
2026-08-24 18:41 ` [PATCH v5 05/11] fs/ceph: consistently use `u32` for `time_warp_seq` Max Kellermann
2026-08-24 18:41 ` [PATCH v5 06/11] fs/ceph/super: reorder fields to eliminate padding holes Max Kellermann
2026-08-24 18:41 ` [PATCH v5 07/11] fs/ceph: remove i_truncate_mutex, use i_fragtree_mutex for both Max Kellermann
2026-08-24 18:41 ` [PATCH v5 08/11] fs/ceph/super.h: add `const` to helpers Max Kellermann
2026-08-24 18:41 ` [PATCH v5 09/11] fs/ceph/super.h: add helper ceph_in_snap() Max Kellermann
2026-08-24 18:41 ` [PATCH v5 10/11] fs/ceph: use ceph_vino() etc. instead of accessing i_vino directly Max Kellermann
2026-08-24 18:41 ` [PATCH v5 11/11] fs/ceph: remove redundant inode number from ceph_inode_info Max Kellermann
2026-08-25 12:16 ` [PATCH v5 00/11] fs/ceph: optimize struct layouts Alex Markuze

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.