<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 01:52:52 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-5598] osd-zfs should allow more concurrent reads</title>
                <link>https://jira.whamcloud.com/browse/LU-5598</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;In the OBD layer, ofd_preprw_read() calls dt_bufs_get(dbo_bufs_get==osd_bufs_get_read) multiple times to prepare local buffers and then calls dt_read_prep(dbo_read_prep==osd_read_prep) once for all local buffers, in the hope that the osd driver would issue all reads concurrently in one go.&lt;/p&gt;

&lt;p&gt;But the osd-zfs driver currently issues reads and waits for IO to complete in osd_bufs_get_read(), and does NOOP in osd_read_prep (see also &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-4820&quot; title=&quot;extra memcpy in read path&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-4820&quot;&gt;&lt;del&gt;LU-4820&lt;/del&gt;&lt;/a&gt;). So in ofd_preprw_read() the reads are essentially done sequentially, i.e. no concurrent IO.&lt;/p&gt;

&lt;p&gt;The ZFS IO scheduler services reads from osd-zfs in FIFO order, i.e. no reordering or merging. It might be possible to reduce seeks by having more concurrent reads and using the Linux deadline IO scheduler under the pool - see HP-5 for an example of poor read throughput due to excessive seeks.&lt;/p&gt;</description>
                <environment></environment>
        <key id="26439">LU-5598</key>
            <summary>osd-zfs should allow more concurrent reads</summary>
                <type id="4" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11310&amp;avatarType=issuetype">Improvement</type>
                                            <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="2">Won&apos;t Fix</resolution>
                                        <assignee username="isaac">Isaac Huang</assignee>
                                    <reporter username="isaac">Isaac Huang</reporter>
                        <labels>
                            <label>zfs</label>
                    </labels>
                <created>Tue, 9 Sep 2014 03:33:49 +0000</created>
                <updated>Mon, 13 Jul 2015 17:19:27 +0000</updated>
                            <resolved>Mon, 13 Jul 2015 17:19:27 +0000</resolved>
                                    <version>Lustre 2.6.0</version>
                                                        <due></due>
                            <votes>0</votes>
                                    <watches>6</watches>
                                                                            <comments>
                            <comment id="93508" author="bzzz" created="Tue, 9 Sep 2014 05:30:32 +0000"  >&lt;p&gt;we&apos;d have to duplicate dmu_buf_hold_array_by_dnode() in osd_bufs_get_read()&lt;/p&gt;</comment>
                            <comment id="93558" author="isaac" created="Tue, 9 Sep 2014 17:45:20 +0000"  >&lt;p&gt;I&apos;m thinking about:&lt;br/&gt;
1. In osd_bufs_get_read(), call dmu_buf_hold_array_by_bonus(read=FALSE).&lt;br/&gt;
2. In osd_read_prep(), call dbuf_read() and wait for IOs to complete, i.e. duplicate parts of dmu_buf_hold_array_by_dnode().&lt;/p&gt;</comment>
                            <comment id="93814" author="isaac" created="Thu, 11 Sep 2014 22:36:59 +0000"  >&lt;p&gt;This would increase concurrency only for OBD_BRW_READ RPCs with multiple (offset, len) ranges. I wonder if it&apos;s worthwhile as the fix would likely involve patching ZFS, and it seems that it&apos;d increase read concurrency by simply adding more service threads.&lt;/p&gt;</comment>
                            <comment id="121169" author="pjones" created="Mon, 13 Jul 2015 17:19:27 +0000"  >&lt;p&gt;As per Isaac we can mark this as &quot;Won&apos;t Fix&quot;&lt;/p&gt;</comment>
                    </comments>
                    <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|hzwvqn:</customfieldvalue>

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