<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:19:53 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-8709] parallel asynchronous readahead</title>
                <link>https://jira.whamcloud.com/browse/LU-8709</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;Tracker for parallel async readahead improvement from DDN, as described in &lt;a href=&quot;http://www.eofs.eu/_media/events/lad16/19_parallel_readahead_framework_li_xi.pdf&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://www.eofs.eu/_media/events/lad16/19_parallel_readahead_framework_li_xi.pdf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note that it would be very desirable in the single thread case if the copy_to_user was also handled in parallel, as this is a major CPU overhead on many-core systems and if it can be parallelized it may increase the peak read performance.&lt;/p&gt;

&lt;p&gt;As for lockahead integration with readahead, I agree that this is possible to do this, but it is only useful if the client doesn&apos;t get full-file extent locks.  It would also be interesting if the write code detected sequential or strided writes and did lockahead at write time.&lt;/p&gt;</description>
                <environment></environment>
        <key id="40684">LU-8709</key>
            <summary>parallel asynchronous readahead</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="3">Duplicate</resolution>
                                        <assignee username="lixi_wc">Li Xi</assignee>
                                    <reporter username="adilger">Andreas Dilger</reporter>
                        <labels>
                            <label>perf_optimization</label>
                    </labels>
                <created>Fri, 14 Oct 2016 23:03:15 +0000</created>
                <updated>Wed, 10 Feb 2021 19:57:18 +0000</updated>
                            <resolved>Wed, 10 Feb 2021 19:57:18 +0000</resolved>
                                    <version>Lustre 2.10.0</version>
                                                        <due></due>
                            <votes>0</votes>
                                    <watches>17</watches>
                                                                            <comments>
                            <comment id="171890" author="paf" created="Tue, 1 Nov 2016 12:39:30 +0000"  >&lt;p&gt;About lockahead/readahead integration.  There&apos;s not much use for lockahead in the &quot;read&quot; case, since locks can overlap.  At least, I&apos;ve never come up with a realistic scenario where it&apos;s relevant/helpful.&lt;/p&gt;

&lt;p&gt;Assuming it&apos;s not totally invalid to tie this stuff together, we could do possibly do something positive by recognizing strided writing.  There are some complexities there - For example, we&apos;d need to make a non-blocking lockahead lock request for at least the first one, to cancel the full file locks the clients are exchanging (normal lockahead locks must be non-blocking, so they can be requested many at a time).  There&apos;s also some danger around the different clients not being coordinated when they go in to lockahead mode.&lt;/p&gt;

&lt;p&gt;I can think of how to probably make it work, but I&apos;m not totally convinced it&apos;s worth the effort.&lt;/p&gt;</comment>
                            <comment id="172098" author="gerrit" created="Thu, 3 Nov 2016 03:02:40 +0000"  >&lt;p&gt;Li Xi (lixi@ddn.com) uploaded a new patch: &lt;a href=&quot;http://review.whamcloud.com/23552&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/23552&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8709&quot; title=&quot;parallel asynchronous readahead&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8709&quot;&gt;&lt;del&gt;LU-8709&lt;/del&gt;&lt;/a&gt; llite: implement parrallel asynchronous readahead&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: 5629bfc1afbcf8913d738118f9085d3e5901f831&lt;/p&gt;</comment>
                            <comment id="172100" author="lixi" created="Thu, 3 Nov 2016 03:06:20 +0000"  >&lt;p&gt;The pushed patch is definitely not the final version, and I am going to test and optimize it further. I really needs your review and feedback in this progress. Thank you in advance!&lt;/p&gt;</comment>
                            <comment id="177251" author="dmiter" created="Fri, 9 Dec 2016 16:32:12 +0000"  >&lt;p&gt;Can you explain in more details what benchmarks you used for testing? It&apos;s not clear for me why we need new readahead algorithm instead of using standard from Linux kernel. I just make it asynchronous and parallelize for Lustre needs. This allows me significantly increase a read performance without implementing new algorithm.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                            <comment id="190030" author="adilger" created="Wed, 29 Mar 2017 18:44:28 +0000"  >&lt;p&gt;Closing as a duplicate of &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8964&quot; title=&quot;use parallel I/O to improve performance on machines with slow single thread performance&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8964&quot;&gt;&lt;del&gt;LU-8964&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;</comment>
                            <comment id="226154" author="lixi" created="Tue, 17 Apr 2018 13:17:56 +0000"  >&lt;p&gt;I am repopening this ticket because the patch inLU-8960 doesn&apos;t really improve performance as much as we can get from this patch.&lt;/p&gt;</comment>
                            <comment id="226709" author="ihara" created="Wed, 25 Apr 2018 12:11:39 +0000"  >&lt;p&gt;Here is performance resutls and comapring of patch for &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8709&quot; title=&quot;parallel asynchronous readahead&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8709&quot;&gt;&lt;del&gt;LU-8709&lt;/del&gt;&lt;/a&gt; and &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8964&quot; title=&quot;use parallel I/O to improve performance on machines with slow single thread performance&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8964&quot;&gt;&lt;del&gt;LU-8964&lt;/del&gt;&lt;/a&gt;.&lt;br/&gt;
Unfortunately, I don&apos;t see any performance improvements from patch &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8964&quot; title=&quot;use parallel I/O to improve performance on machines with slow single thread performance&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8964&quot;&gt;&lt;del&gt;LU-8964&lt;/del&gt;&lt;/a&gt; and it&apos;s even worse than without patch.&lt;br/&gt;
In fact, &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8709&quot; title=&quot;parallel asynchronous readahead&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8709&quot;&gt;&lt;del&gt;LU-8709&lt;/del&gt;&lt;/a&gt; (patch &lt;a href=&quot;http://review.whamcloud.com/23552&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/23552&lt;/a&gt;) is diferent approch and 2.3x performance improvements from patch.&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;# pdsh -w oss[01-06],mds[11-12],dcr-vm[1-4],c[01-32] &apos;echo 3 &amp;gt; /proc/sys/vm/drop_caches &apos;
# lfs setstripe -S 16m -c -1 /scratch1/out
# mpirun -np 1 /work/tools/bin/IOR -w -k -t 1m -b 256g -e -F -vv -o /scratch1/out/file

# pdsh -w oss[01-06],mds[11-12],dcr-vm[1-4],c[01-32] &apos;echo 3 &amp;gt; /proc/sys/vm/drop_caches&apos;
# mpirun -np 1 /work/tools/bin/IOR -r -k -E -t 1m -b 256g -e -F -vv -o /scratch1/out/file
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&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;Branch&lt;/th&gt;
&lt;th class=&apos;confluenceTh&apos;&gt;Single Thread Read Performance(MB/sec)&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;b2_10&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1,591&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;b2_10+&lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8709&quot; title=&quot;parallel asynchronous readahead&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8709&quot;&gt;&lt;del&gt;LU-8709&lt;/del&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;3,774&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;master&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1,793&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;master+&lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8964&quot; title=&quot;use parallel I/O to improve performance on machines with slow single thread performance&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8964&quot;&gt;&lt;del&gt;LU-8964&lt;/del&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;master+&lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8964&quot; title=&quot;use parallel I/O to improve performance on machines with slow single thread performance&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8964&quot;&gt;&lt;del&gt;LU-8964&lt;/del&gt;&lt;/a&gt;(pio=1)&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1,594&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;master+&lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8964&quot; title=&quot;use parallel I/O to improve performance on machines with slow single thread performance&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8964&quot;&gt;&lt;del&gt;LU-8964&lt;/del&gt;&lt;/a&gt;(cpu_npartitions=10,pio=0)&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;master+&lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8964&quot; title=&quot;use parallel I/O to improve performance on machines with slow single thread performance&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8964&quot;&gt;&lt;del&gt;LU-8964&lt;/del&gt;&lt;/a&gt;(cpu_npartitions=10,pio=1)&lt;/td&gt;
&lt;td class=&apos;confluenceTd&apos;&gt;1,820&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;

</comment>
                            <comment id="226712" author="ihara" created="Wed, 25 Apr 2018 12:28:52 +0000"  >&lt;p&gt; &lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;a id=&quot;30068_thumb&quot; href=&quot;https://jira.whamcloud.com/secure/attachment/30068/30068_Lustre-SingleThread.png&quot; title=&quot;Lustre-SingleThread.png&quot; file-preview-type=&quot;image&quot; file-preview-id=&quot;30068&quot; file-preview-title=&quot;Lustre-SingleThread.png&quot;&gt;&lt;img src=&quot;https://jira.whamcloud.com/secure/thumbnail/30068/_thumb_30068.png&quot; style=&quot;border: 0px solid black&quot; role=&quot;presentation&quot;/&gt;&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;

&lt;p&gt;We are more investigating what&apos;s going on b2_10+&lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8709&quot; title=&quot;parallel asynchronous readahead&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8709&quot;&gt;&lt;del&gt;LU-8709&lt;/del&gt;&lt;/a&gt;. Atatched is capture cleint performance every 1sec during IOR is running.&lt;br/&gt;
When read started on cient and the performance is pretty good (getting ~5.5GB/sec), but once memory usages reached to close to max_cache_mb, performance was getting very nustable. (e.g. sometimes we see more than 5GB/sec, but sometimes less than 3GB/sec)&lt;/p&gt;</comment>
                            <comment id="226715" author="dmiter" created="Wed, 25 Apr 2018 12:53:54 +0000"  >&lt;p&gt;The patch &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8964&quot; title=&quot;use parallel I/O to improve performance on machines with slow single thread performance&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8964&quot;&gt;&lt;del&gt;LU-8964&lt;/del&gt;&lt;/a&gt; was not used in full speed because of you use small 1Mb transfer buffer (&lt;b&gt;-t 1m&lt;/b&gt;). As I mentoined bebofe in common case the transfer buffer is split by strip size and transfer in parallel.&lt;/p&gt;

&lt;p&gt;Which version of patch &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8964&quot; title=&quot;use parallel I/O to improve performance on machines with slow single thread performance&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8964&quot;&gt;&lt;del&gt;LU-8964&lt;/del&gt;&lt;/a&gt; was used? In Patch Set 56 I significantly improve algorithm. It should more agressive read ahead.&lt;/p&gt;</comment>
                            <comment id="226724" author="ihara" created="Wed, 25 Apr 2018 14:33:09 +0000"  >&lt;blockquote&gt;
&lt;p&gt;The patch &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8964&quot; title=&quot;use parallel I/O to improve performance on machines with slow single thread performance&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8964&quot;&gt;&lt;del&gt;LU-8964&lt;/del&gt;&lt;/a&gt; was not used in full speed because of you use small 1Mb transfer buffer (-t 1m). As I mentoined bebofe in common case the transfer buffer is split by strip size and transfer in parallel.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;In fact, 1m is not small. &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.whamcloud.com/images/icons/emoticons/smile.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; And,after patch, it should keep same performance for all operations against before patch unless there are any trade off.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which version of patch &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8964&quot; title=&quot;use parallel I/O to improve performance on machines with slow single thread performance&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8964&quot;&gt;&lt;del&gt;LU-8964&lt;/del&gt;&lt;/a&gt; was used? In Patch Set 56 I significantly improve algorithm. It should more agressive read ahead.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Sure, I can try latest your patch, but please tell us what exactly configurations (e.g. pio, number of partition, RA size, etc.) you prefer.&lt;/p&gt;</comment>
                            <comment id="226726" author="paf" created="Wed, 25 Apr 2018 14:39:23 +0000"  >&lt;p&gt;Yeah, 1M is probably more common than any size larger than it.&#160; We should be very concerned with improving 1 MiB i/o.&#160; (It&apos;s one thing I would like to change about the PIO code - That it is all implemented on stripe boundaries.&#160; 8 MiB stripes are very common these days, and we could benefit from parallelizing i/o smaller than 8 MiB.)&lt;/p&gt;</comment>
                            <comment id="226777" author="dmiter" created="Thu, 26 Apr 2018 11:16:02 +0000"  >&lt;p&gt;Hmm. This is good point to pay more attention to 1Mb size buffer. But splitting into small chunks don&apos;t provide benefit because of additional overhead of parallelization. Unfortunatelly we have many restrictions in current Lustre I/O pipeline which prevent me from better parallelization and asyncronizim.&lt;/p&gt;

&lt;p&gt;I discovered that I had best performance with splitting CPUs into several partitions in the way to have 2 HW cores (whith several hyper threads) into one partition. For example, it you have a machine with 8 HW cores with 2 hyper threds in each core (16 logical CPUs) the best configuration will be split it into 4 partitions. If you have several NUMA nodes it would be good to split each of this node in the same way.&lt;/p&gt;

&lt;p&gt;I think the 8Mb size transfer buffer is good enough to see the benefits from PIO code.&lt;/p&gt;</comment>
                            <comment id="247135" author="lflis" created="Wed, 15 May 2019 08:39:01 +0000"  >&lt;p&gt;We would like to give this patch a try in a mixed-workload environment on our test filesystem. Is it possible to get this patch for current b2_10 (2.10.7) ?&lt;/p&gt;</comment>
                            <comment id="247154" author="adilger" created="Wed, 15 May 2019 14:42:11 +0000"  >&lt;p&gt;Lukasz, the patch on this ticket is not currently being developed.  The patch on &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-12043&quot; title=&quot;improve Lustre single thread read performances&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-12043&quot;&gt;&lt;del&gt;LU-12043&lt;/del&gt;&lt;/a&gt; is the one that will be landing on 2.13.&lt;/p&gt;</comment>
                            <comment id="247157" author="lflis" created="Wed, 15 May 2019 15:06:44 +0000"  >&lt;p&gt;Andreas, thank you for update, &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-12043&quot; title=&quot;improve Lustre single thread read performances&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-12043&quot;&gt;&lt;del&gt;LU-12043&lt;/del&gt;&lt;/a&gt; looks very promising. &lt;br/&gt;
I had a quick look at changes and they are all on client side - can we assume that lustre-client 2.13 may have better performance on 2.10 servers ?&lt;/p&gt;</comment>
                            <comment id="247175" author="adilger" created="Wed, 15 May 2019 19:17:05 +0000"  >&lt;p&gt;Correct, with the caveat that &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-12043&quot; title=&quot;improve Lustre single thread read performances&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-12043&quot;&gt;&lt;del&gt;LU-12043&lt;/del&gt;&lt;/a&gt; patch is mainly improving single-threaded read performance.  If there are many threads on the client the performance may not be very different, so it depends on your workload.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10120">
                    <name>Blocker</name>
                                                                <inwardlinks description="is blocked by">
                                        <issuelink>
            <issuekey id="40794">LU-8726</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="10071">LU-6</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="38243">LU-8413</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="42585">LU-8964</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="53387">LU-11416</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="55064">LU-12043</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="30068" name="Lustre-SingleThread.png" size="405854" author="ihara" created="Wed, 25 Apr 2018 12:24:08 +0000"/>
                    </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|hzyrxz:</customfieldvalue>

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