<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 01:26:16 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Whamcloud Community JIRA</title>
    <link>https://jira.whamcloud.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.4.14</version>
        <build-number>940014</build-number>
        <build-date>05-12-2023</build-date>
    </build-info>


<item>
            <title>[LU-2565] reduce ldiskfs inode size</title>
                <link>https://jira.whamcloud.com/browse/LU-2565</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;I noticed on the server that the ldiskfs_inode_cache is &lt;em&gt;just&lt;/em&gt; over 1kB in size (1048 bytes on 2.7.56), which means only 3 inodes can fit into a 4kB page.  It would be useful to reduce the inode size to be &amp;lt;= 1024 bytes in order to improve the memory efficiency by 1/3.&lt;/p&gt;</description>
                <environment></environment>
        <key id="17072">LU-2565</key>
            <summary>reduce ldiskfs inode size</summary>
                <type id="4" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11310&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="4" iconUrl="https://jira.whamcloud.com/images/icons/priorities/minor.svg">Minor</priority>
                        <status id="5" iconUrl="https://jira.whamcloud.com/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="10100">Low Priority</resolution>
                                        <assignee username="wc-triage">WC Triage</assignee>
                                    <reporter username="adilger">Andreas Dilger</reporter>
                        <labels>
                            <label>easy</label>
                    </labels>
                <created>Thu, 3 Jan 2013 14:14:05 +0000</created>
                <updated>Wed, 13 Feb 2019 07:12:20 +0000</updated>
                            <resolved>Wed, 13 Feb 2019 07:12:20 +0000</resolved>
                                    <version>Lustre 2.5.0</version>
                    <version>Lustre 2.8.0</version>
                                                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                            <comments>
                            <comment id="177621" author="adilger" created="Tue, 13 Dec 2016 19:02:53 +0000"  >&lt;p&gt;On RHEL 6.6 the &lt;tt&gt;ldiskfs_inode_info&lt;/tt&gt; is 1056 bytes in size, but is only using 1040 bytes, so it could be shrunk with a bit of effort to reduce MDS memory usage by 1/3 for this slab.  This can be seen easily with the &lt;tt&gt;pahole&lt;/tt&gt; tool from the &lt;tt&gt;dwarves&lt;/tt&gt; package:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;# pahole -C ldiskfs_inode_info ldiskfs/ldiskfs/ldiskfs.ko |
struct ldiskfs_inode_info {
        __le32                     i_data[15];           &lt;span class=&quot;code-comment&quot;&gt;/*     0    60 */&lt;/span&gt;
        __u32                      i_dtime;              &lt;span class=&quot;code-comment&quot;&gt;/*    60     4 */&lt;/span&gt;
        &lt;span class=&quot;code-comment&quot;&gt;/* --- cacheline 1 boundary (64 bytes) --- */&lt;/span&gt;
        ldiskfs_fsblk_t            i_file_acl;           &lt;span class=&quot;code-comment&quot;&gt;/*    64     8 */&lt;/span&gt;
        struct semaphore           i_append_sem;         &lt;span class=&quot;code-comment&quot;&gt;/*    72    24 */&lt;/span&gt;
        ldiskfs_lblk_t             i_dir_start_lookup;   &lt;span class=&quot;code-comment&quot;&gt;/*    96     4 */&lt;/span&gt;
        ldiskfs_group_t            i_block_group;        &lt;span class=&quot;code-comment&quot;&gt;/*   100     4 */&lt;/span&gt;
        &lt;span class=&quot;code-object&quot;&gt;long&lt;/span&gt; unsigned &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;          i_state_flags;        &lt;span class=&quot;code-comment&quot;&gt;/*   104     8 */&lt;/span&gt;
        &lt;span class=&quot;code-object&quot;&gt;long&lt;/span&gt; unsigned &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;          i_flags;              &lt;span class=&quot;code-comment&quot;&gt;/*   112     8 */&lt;/span&gt;
        struct rw_semaphore        xattr_sem;            &lt;span class=&quot;code-comment&quot;&gt;/*   120    32 */&lt;/span&gt;
        &lt;span class=&quot;code-comment&quot;&gt;/* --- cacheline 2 boundary (128 bytes) was 24 bytes ago --- */&lt;/span&gt;
        struct list_head           i_orphan;             &lt;span class=&quot;code-comment&quot;&gt;/*   152    16 */&lt;/span&gt;
        loff_t                     i_disksize;           &lt;span class=&quot;code-comment&quot;&gt;/*   168     8 */&lt;/span&gt;
        struct rw_semaphore        i_data_sem;           &lt;span class=&quot;code-comment&quot;&gt;/*   176    32 */&lt;/span&gt;
        &lt;span class=&quot;code-comment&quot;&gt;/* --- cacheline 3 boundary (192 bytes) was 16 bytes ago --- */&lt;/span&gt;
        struct inode               vfs_inode;            &lt;span class=&quot;code-comment&quot;&gt;/*   208   592 */&lt;/span&gt;
        &lt;span class=&quot;code-comment&quot;&gt;/* --- cacheline 12 boundary (768 bytes) was 32 bytes ago --- */&lt;/span&gt;
        struct jbd2_inode          jinode;               &lt;span class=&quot;code-comment&quot;&gt;/*   800    48 */&lt;/span&gt;
        &lt;span class=&quot;code-comment&quot;&gt;/* --- cacheline 13 boundary (832 bytes) was 16 bytes ago --- */&lt;/span&gt;
        &lt;span class=&quot;code-object&quot;&gt;long&lt;/span&gt; unsigned &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;          i_ext_generation;     &lt;span class=&quot;code-comment&quot;&gt;/*   848     8 */&lt;/span&gt;
        struct ldiskfs_ext_cache   i_cached_extent;      &lt;span class=&quot;code-comment&quot;&gt;/*   856    24 */&lt;/span&gt;

        &lt;span class=&quot;code-comment&quot;&gt;/* XXX last struct has 4 bytes of padding */&lt;/span&gt;

        struct timespec            i_crtime;             &lt;span class=&quot;code-comment&quot;&gt;/*   880    16 */&lt;/span&gt;
        &lt;span class=&quot;code-comment&quot;&gt;/* --- cacheline 14 boundary (896 bytes) --- */&lt;/span&gt;
        struct list_head           i_prealloc_list;      &lt;span class=&quot;code-comment&quot;&gt;/*   896    16 */&lt;/span&gt;
        spinlock_t                 i_prealloc_lock;      &lt;span class=&quot;code-comment&quot;&gt;/*   912     4 */&lt;/span&gt;
        ldiskfs_group_t            i_last_alloc_group;   &lt;span class=&quot;code-comment&quot;&gt;/*   916     4 */&lt;/span&gt;
        unsigned &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;               i_reserved_data_blocks; &lt;span class=&quot;code-comment&quot;&gt;/*   920     4 */&lt;/span&gt;
        unsigned &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;               i_reserved_meta_blocks; &lt;span class=&quot;code-comment&quot;&gt;/*   924     4 */&lt;/span&gt;
        unsigned &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;               i_allocated_meta_blocks; &lt;span class=&quot;code-comment&quot;&gt;/*   928     4 */&lt;/span&gt;

        &lt;span class=&quot;code-comment&quot;&gt;/* XXX 4 bytes hole, &lt;span class=&quot;code-keyword&quot;&gt;try&lt;/span&gt; to pack */&lt;/span&gt;

        sector_t                   i_da_metadata_calc_last_lblock; &lt;span class=&quot;code-comment&quot;&gt;/*   936     8 */&lt;/span&gt;
        &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;                        i_da_metadata_calc_len; &lt;span class=&quot;code-comment&quot;&gt;/*   944     4 */&lt;/span&gt;
        &lt;span class=&quot;code-object&quot;&gt;short&lt;/span&gt; unsigned &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;         i_delalloc_reserved_flag; &lt;span class=&quot;code-comment&quot;&gt;/*   948     2 */&lt;/span&gt;
        __u16                      i_extra_isize;        &lt;span class=&quot;code-comment&quot;&gt;/*   950     2 */&lt;/span&gt;
        spinlock_t                 i_block_reservation_lock; &lt;span class=&quot;code-comment&quot;&gt;/*   952     4 */&lt;/span&gt;

        &lt;span class=&quot;code-comment&quot;&gt;/* XXX 4 bytes hole, &lt;span class=&quot;code-keyword&quot;&gt;try&lt;/span&gt; to pack */&lt;/span&gt;

        &lt;span class=&quot;code-comment&quot;&gt;/* --- cacheline 15 boundary (960 bytes) --- */&lt;/span&gt;
        qsize_t                    i_reserved_quota;     &lt;span class=&quot;code-comment&quot;&gt;/*   960     8 */&lt;/span&gt;
        struct list_head           i_aio_dio_complete_list; &lt;span class=&quot;code-comment&quot;&gt;/*   968    16 */&lt;/span&gt;
        spinlock_t                 i_completed_io_lock;  &lt;span class=&quot;code-comment&quot;&gt;/*   984     4 */&lt;/span&gt;

        &lt;span class=&quot;code-comment&quot;&gt;/* XXX 4 bytes hole, &lt;span class=&quot;code-keyword&quot;&gt;try&lt;/span&gt; to pack */&lt;/span&gt;

        ldiskfs_io_end_t *         cur_aio_dio;          &lt;span class=&quot;code-comment&quot;&gt;/*   992     8 */&lt;/span&gt;
        atomic_t                   i_aiodio_unwritten;   &lt;span class=&quot;code-comment&quot;&gt;/*  1000     4 */&lt;/span&gt;
        tid_t                      i_sync_tid;           &lt;span class=&quot;code-comment&quot;&gt;/*  1004     4 */&lt;/span&gt;
        struct mutex               i_aio_mutex;          &lt;span class=&quot;code-comment&quot;&gt;/*  1008    32 */&lt;/span&gt;
        &lt;span class=&quot;code-comment&quot;&gt;/* --- cacheline 16 boundary (1024 bytes) was 16 bytes ago --- */&lt;/span&gt;
        __u64                      i_fs_version;         &lt;span class=&quot;code-comment&quot;&gt;/*  1040     8 */&lt;/span&gt;
        tid_t                      i_datasync_tid;       &lt;span class=&quot;code-comment&quot;&gt;/*  1048     4 */&lt;/span&gt;

        &lt;span class=&quot;code-comment&quot;&gt;/* size: 1056, cachelines: 17, members: 37 */&lt;/span&gt;
        &lt;span class=&quot;code-comment&quot;&gt;/* sum members: 1040, holes: 3, sum holes: 12 */&lt;/span&gt;
        &lt;span class=&quot;code-comment&quot;&gt;/* padding: 4 */&lt;/span&gt;
        &lt;span class=&quot;code-comment&quot;&gt;/* paddings: 1, sum paddings: 4 */&lt;/span&gt;
        &lt;span class=&quot;code-comment&quot;&gt;/* last cacheline: 32 bytes */&lt;/span&gt;
};
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                            <comment id="241836" author="adilger" created="Wed, 13 Feb 2019 07:12:20 +0000"  >&lt;p&gt;&lt;tt&gt;ldiskfs_inode_info&lt;/tt&gt; is up to 1072 bytes in size with 1050 bytes in use, so shrinking it seems difficult at this point.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="14995">LU-1548</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                            <customfield id="customfield_10890" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10390" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hzveiv:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10090" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>5994</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>