|
|
Log in / Subscribe / Register

fs/ceph: optimize struct layouts

From:  Max Kellermann <max.kellermann-AT-ionos.com>
To:  idryomov-AT-gmail.com, amarkuze-AT-redhat.com, ceph-devel-AT-vger.kernel.org, linux-kernel-AT-vger.kernel.org
Subject:  [PATCH 00/12] fs/ceph: optimize struct layouts
Date:  Fri, 12 Jun 2026 18:51:52 +0200
Message-ID:  <20260612165204.86137-1-max.kellermann@ionos.com>
Cc:  Max Kellermann <max.kellermann-AT-ionos.com>
Archive-link:  Article

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: 78 */
  /* sum members: 1424, holes: 8, sum holes: 32 */
  /* member types with holes: 4, total: 4 */

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

  /* size: 1360, cachelines: 22, members: 75 */
  /* member types with holes: 2, total: 2 */

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




Copyright © 2026, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds