<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 01:54:48 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-5820] LFSCK 4: Record linkEA verification history in RAM</title>
                <link>https://jira.whamcloud.com/browse/LU-5820</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;Record linkEA verification history in RAM&lt;/p&gt;

&lt;p&gt;To know which linkEA entries on the object_A have been verified, LFSCK must pin object_A in RAM and record the linkEA entries verification history. To avoid exhausting available memory, not all objects are pinned in RAM. LFSCK permanently pins the object in RAM only for the first of verified link V and number of hard links &apos;N&apos; or linkEA entries &apos;L&apos; is more than one, &lt;tt&gt;(V == 1) &amp;amp;&amp;amp; (N &amp;gt; 1 || L &amp;gt; 1)&lt;/tt&gt;. Consider the following cases:&lt;/p&gt;

&lt;p&gt;    &lt;tt&gt;L &amp;gt; 1 || N &amp;gt; 1&lt;/tt&gt;&lt;br/&gt;
    LFSCK treats the linkEA entry as unverified as the in-RAM verification history is absent. It is necessary to pin the object in RAM for this case until all of the linkEA entries are verified.&lt;/p&gt;

&lt;p&gt;    &lt;tt&gt;L == 1 &amp;amp;&amp;amp; N == 1&lt;/tt&gt;&lt;br/&gt;
    Typically, this is for singly-linked object. If LFSCK finds the directory entry pointing to the object_A that matches the unique linkEA entry, then processing is complete. Otherwise if a name entry pointing to the object_A does not match the unique linkEA entry, then a new linkEA entry will be added, and &apos;L&apos; will increase (&apos;N&apos; will not increase, become the case 1). object_A and its linkEA verification history will be pinned in RAM.&lt;/p&gt;

&lt;p&gt;    It is possible that, the first found name entry matches the unique linkEA entry, then &lt;tt&gt;L == V == N == 1&lt;/tt&gt;, we neither record the object in the &lt;tt&gt;lfsck_namespace&lt;/tt&gt; or pin the object in RAM, but as the LFSCK scanning, more name entries pointing to the same object may be found, at that time, with those new linkEA entries added, the object will be pinned in RAM and recorded in the &lt;tt&gt;lfsck_namespace&lt;/tt&gt; file, and will be double scanned later. For a large system, this kind &quot;upgrading&quot; is very rare. We prefer to double scan these objects instead of pinning most unnecessary objects in RAM. &lt;/p&gt;

&lt;p&gt;    &lt;tt&gt;L == 0&lt;/tt&gt;&lt;br/&gt;
    It is usually for IGIF object. When new linkEA entries are added, it becomes the case 2 or the case 1.&lt;/p&gt;

&lt;p&gt;If too many objects are pinned in RAM, it may cause server memory pressure. To avoid exhausting memory, LFSCK needs to unpin objects from RAM. The following conditions to un-pinning are applied:&lt;/p&gt;

&lt;p&gt;    &lt;tt&gt;L == V&lt;/tt&gt;&lt;br/&gt;
    All the known linkEA entries on the object are valid. Although there may be other directory entries pointing to the object will be found as the LFSCK scanning. It is unnecessary to maintain the linkEA entries verification history, instead, add some on-disk flag &lt;tt&gt;VERIFIED&lt;/tt&gt; on the object in the &lt;tt&gt;lfsck_namespace&lt;/tt&gt; file. If more directory entries pointing to the object are found, the LFSCK can detect this flag and just adding new linkEA entries without maintaining the verification history.&lt;/p&gt;

&lt;p&gt;    Memory pressure&lt;br/&gt;
    All the objects with &lt;tt&gt;L == V&lt;/tt&gt; have been unpinned from RAM but there still is memory pressure. LFSCK will unpin some half-verified objects from RAM. Since these objects have been stored in the &lt;tt&gt;lfsck_namespace&lt;/tt&gt; when they pinned in RAM, the possible invalid linkEA entries on these unpinned half-processed objects can be handled during the double scan.&lt;/p&gt;</description>
                <environment></environment>
        <key id="17785">LU-5820</key>
            <summary>LFSCK 4: Record linkEA verification history in RAM</summary>
                <type id="7" iconUrl="https://jira.whamcloud.com/images/icons/issuetypes/task_agile.png">Technical task</type>
                            <parent id="29081">LU-6361</parent>
                                    <priority id="2" iconUrl="https://jira.whamcloud.com/images/icons/priorities/critical.svg">Critical</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="1">Fixed</resolution>
                                        <assignee username="yong.fan">nasf</assignee>
                                    <reporter username="rhenwood">Richard Henwood</reporter>
                        <labels>
                            <label>HB</label>
                    </labels>
                <created>Wed, 6 Mar 2013 15:01:04 +0000</created>
                <updated>Fri, 13 Mar 2015 00:06:41 +0000</updated>
                            <resolved>Tue, 3 Feb 2015 18:44:19 +0000</resolved>
                                    <version>Lustre 2.7.0</version>
                                    <fixVersion>Lustre 2.7.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>7</watches>
                                                                            <comments>
                            <comment id="53472" author="rhenwood" created="Wed, 6 Mar 2013 15:01:51 +0000"  >&lt;p&gt;This is a complex optimization that was omitted from LFSCK 1.5. The design is recorded here for review during future LFSCK phases.&lt;/p&gt;</comment>
                            <comment id="98725" author="adilger" created="Sat, 8 Nov 2014 22:45:49 +0000"  >&lt;p&gt;The first think to measure here is how much performance impact writing entries to &lt;tt&gt;lfsck_namespace&lt;/tt&gt; actually has. There isn&apos;t any benefit to implementing this complex change if it is not going to improve performance. This can be done by running LFSCK on a good-size filesystem with some percentage of hard links, say 1%, 5%, 10%, 25%, 50% either with the current code having &lt;tt&gt;lfsck_namespace&lt;/tt&gt; written to a file on disk, or a hack mode where it is recorded only in memory (e.g. linked list or similar).  If there is no significant difference in the performance there is no reason to implement this change. &lt;/p&gt;

&lt;p&gt;If the performance improvement is significant when inodes are not written to disk, then I think that inodes should not be written to lfsck_namespace unless they are pushed from RAM. The vast majority of objects will not need to be written to disk.&lt;/p&gt;
</comment>
                            <comment id="99463" author="gerrit" created="Tue, 18 Nov 2014 07:13:33 +0000"  >&lt;p&gt;Fan Yong (fan.yong@intel.com) uploaded a new patch: &lt;a href=&quot;http://review.whamcloud.com/12769&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/12769&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-5820&quot; title=&quot;LFSCK 4: Record linkEA verification history in RAM&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-5820&quot;&gt;&lt;del&gt;LU-5820&lt;/del&gt;&lt;/a&gt; lfsck: misc patch for LFSCK performance test&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: 653db911a0802da003c8b0c9a22fec5eaceb794b&lt;/p&gt;</comment>
                            <comment id="99654" author="gerrit" created="Thu, 20 Nov 2014 07:30:19 +0000"  >&lt;p&gt;Fan Yong (fan.yong@intel.com) uploaded a new patch: &lt;a href=&quot;http://review.whamcloud.com/12794&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/12794&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-5820&quot; title=&quot;LFSCK 4: Record linkEA verification history in RAM&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-5820&quot;&gt;&lt;del&gt;LU-5820&lt;/del&gt;&lt;/a&gt; lfsck: test performance of caching linkea&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: c1216f1cf89dcd37729dd7e5234c3b284a890f66&lt;/p&gt;</comment>
                            <comment id="99760" author="gerrit" created="Fri, 21 Nov 2014 15:08:40 +0000"  >&lt;p&gt;Fan Yong (fan.yong@intel.com) uploaded a new patch: &lt;a href=&quot;http://review.whamcloud.com/12809&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/12809&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-5820&quot; title=&quot;LFSCK 4: Record linkEA verification history in RAM&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-5820&quot;&gt;&lt;del&gt;LU-5820&lt;/del&gt;&lt;/a&gt; lfsck: not record FID for double scan repeatedly&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: 315a176e8445da3c3eb20b2c2ff5b3f94f1a2bd2&lt;/p&gt;</comment>
                            <comment id="100105" author="yong.fan" created="Wed, 26 Nov 2014 01:19:43 +0000"  >&lt;p&gt;Here are some test:&lt;/p&gt;

&lt;p&gt;-------------------------&lt;br/&gt;
Test Environment: OpenSFS Cluster					&lt;/p&gt;
&lt;div class=&apos;table-wrap&apos;&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;node&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;CPU&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;RAM&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;DISK&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;Role&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;Partition&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;mds03&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;2 * Intel(R) Xeon(R) CPU E5620 @ 2.40GHz, 16 logic processors&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;64GB&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;200GB SATA&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;MDS (MDT0), client&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;/dev/sda1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;oss01&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;2 * Intel(R) Xeon(R) CPU E5620 @ 2.40GHz, 16 logic processors&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;64GB&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;2TB DS S12S-R2240&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;OSS (OST0)&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;/dev/sda1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;


&lt;p&gt;-------------------------&lt;br/&gt;
Test Description:						&lt;br/&gt;
Use single MDT and single OST for testing namespace LFSCK performance. Create 1&apos;000 sub-directories under /ROOT, under each sub-directory, generate 10&apos;000 regular files, and N of them has two hardlinks. We test several N cases: N = 100, 200, 300, 400, 500. So the percentage of the multiple-linked files will be 1% - 5%. For each percentage, we run namespace LFSCK routine check without caching linkEA verification history in RAM, and also simulate of caching the linkEA verification history in RAM. Each case will be tested for 3 times.&lt;/p&gt;

&lt;p&gt;-------------------------&lt;br/&gt;
Raw data: (the digits that are marked as red looks some abnormal, will not be considered for the average performance)&lt;/p&gt;
&lt;div class=&apos;table-wrap&apos;&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;hardlink %&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;test cycle&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;time_phase1 (no cache linkEA)&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;time_phase2 (no cache linkEA)&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;time_phase1 (cache linkEA)&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;time_phase1 (cache linkEA)&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&lt;font color=&quot;red&quot;&gt;90&lt;/font&gt;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;98&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;2&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;101&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;100&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;3&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;99&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;99&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;2&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;102&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;2&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;97&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;2&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;2&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;100&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;2&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;102&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&lt;font color=&quot;red&quot;&gt;26&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;2&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;3&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;100&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;2&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;101&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;3&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;103&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;2&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;102&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;3&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;2&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;102&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;2&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;101&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;3&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;3&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;100&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;2&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;101&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;4&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&lt;font color=&quot;red&quot;&gt;135&lt;/font&gt;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;3&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;102&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;4&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;2&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;104&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;3&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;103&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;4&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;3&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;102&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;3&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;102&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;5&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;106&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;4&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;100&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;5&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;2&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;106&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;4&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;102&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;5&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;3&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;105&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;4&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;100&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;


&lt;p&gt;-------------------------&lt;br/&gt;
Average data without invalid ones (marked as red digits)						&lt;/p&gt;
&lt;div class=&apos;table-wrap&apos;&gt;
&lt;table class=&apos;confluenceTable&apos;&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;hardlink %&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;total time (seconds, no cache linkEA)&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;total time (seconds, cache linkEA)&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;Performance impact %&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;101&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;99&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&lt;font color=&quot;blue&quot;&gt;1.98%&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;2&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;103&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;100&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&lt;font color=&quot;blue&quot;&gt;2.91%&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;3&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;105&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;102&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&lt;font color=&quot;blue&quot;&gt;2.86%&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;4&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;106&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;103&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&lt;font color=&quot;blue&quot;&gt;2.83%&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;5&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;110&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;102&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;&lt;font color=&quot;blue&quot;&gt;7.27%&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;


&lt;p&gt;-------------------------&lt;br/&gt;
Conclusion:						&lt;br/&gt;
For the file set with 10&apos;000&apos;000 files, if the percentage of multiple-linked files is not more than 4%, then the performance improvement with caching linkEA verification history in RAM will be less 3%. In the real world, 4% multiple-linked files are very high percentage. On the other hand, the real implementation for caching linkEA verification history in RAM will be more complex than current simulation, and the performance improvement cannot achieve the simulation case because it simplifies and ignores a lot of corner/race cases.&lt;/p&gt;

&lt;p&gt;So caching linkEA verification history in RAM for most of cases may be not worth.&lt;/p&gt;</comment>
                            <comment id="100110" author="adilger" created="Wed, 26 Nov 2014 05:31:54 +0000"  >&lt;p&gt;According to &lt;a href=&quot;http://www.pdsi-scidac.org/fsstats/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://www.pdsi-scidac.org/fsstats/&lt;/a&gt; and fsstats that I&apos;ve collected from other Lustre sites, the number of files with more than one hard link is very small in HPC.  Of 24 sites that I have data for, 99.98% of 196M total inodes only had a single link, and 6/24 sites had no files with hard links at all.  Based on the performance results shown, processing time is increased by about 1% per 1% of hard-linked files, so this optimization would typically only improve speed by about 0.02% and it doesn&apos;t seem worth the extra complexity for such a marginal improvement.  Also, for very large filesystems or filesystems with many hard links the extra memory usage may also slow down normal usage due to cache pressure.&lt;/p&gt;</comment>
                            <comment id="103967" author="yong.fan" created="Tue, 20 Jan 2015 02:41:17 +0000"  >&lt;p&gt;It is verified that it may be unnecessary to cache the linkEA verification history in RAM, but just as shown above, when a lot of FIDs are recorded in the namespace LFSCK trace file, the namespace LFSCK performance slows down. In fact, the the namespace LFSCK uses trace file to record the FID of the object that has multiple hard links, or has remote name entry, or contains some uncertain inconsistency, and so on. Only single namespace LFSCK trace file is not efficient, especially when there are millions of FIDs to be recorded. So it is still valuable to improve the namespace LFSCK performance via enhancing the namespace LFSCK trace file: uses multiple namespace LFSCK trace files and per trace file based semaphore to control the concurrent access of the trace file. The patch &lt;a href=&quot;http://review.whamcloud.com/#/c/12809/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/#/c/12809/&lt;/a&gt; is for that.&lt;/p&gt;

&lt;p&gt;We need to land the &lt;a href=&quot;http://review.whamcloud.com/#/c/12809/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/#/c/12809/&lt;/a&gt; to master before b2_7 released to avoid compatibility issues in the future.&lt;/p&gt;</comment>
                            <comment id="105554" author="gerrit" created="Tue, 3 Feb 2015 18:42:56 +0000"  >&lt;p&gt;Oleg Drokin (oleg.drokin@intel.com) merged in patch &lt;a href=&quot;http://review.whamcloud.com/12809/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/12809/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-5820&quot; title=&quot;LFSCK 4: Record linkEA verification history in RAM&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-5820&quot;&gt;&lt;del&gt;LU-5820&lt;/del&gt;&lt;/a&gt; lfsck: use multiple namespace LFSCK trace files&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: 16beb6a0bd9633585781978e01c3bb21d44b2f69&lt;/p&gt;</comment>
                            <comment id="105556" author="pjones" created="Tue, 3 Feb 2015 18:44:19 +0000"  >&lt;p&gt;Landed for 2.7&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="28917">LU-6321</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|hzvkbz:</customfieldvalue>

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