<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:53:26 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-12534] Add delete_pagevec_from_page_cache</title>
                <link>https://jira.whamcloud.com/browse/LU-12534</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;When doing shared file reads, we back up in page discard (this can also happen when writing a file, but is less of an issue).&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;a
-   32.79%     0.10%  ior              [kernel.kallsyms]        [k] osc_page_init           a
   - 32.69% osc_page_init                                                                   a
      - 32.22% osc_lru_alloc                                                                a
         - 31.58% osc_lru_reclaim                                                           a
            - 31.57% osc_lru_shrink                                                         a
               - 30.24% discard_pagevec                                                     a
                  - 27.27% cl_page_discard                                                  a
                     - 27.22% vvp_page_discard                                              a
                        - 26.55% delete_from_page_cache                                     a
                           + 23.77% _raw_qspin_lock_irq                                     a
                           + 1.58% mem_cgroup_uncharge_cache_page                           a
                             1.03% __delete_from_page_cache                                 a&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This is seen when doing the i/o 500 hard read with more data than will fit in cache on a node (and many threads).&lt;/p&gt;

&lt;p&gt;This will be very similar to &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-9920&quot; title=&quot;Use pagevec for marking pages dirty&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-9920&quot;&gt;&lt;del&gt;LU-9920&lt;/del&gt;&lt;/a&gt;, for dirtying pages, where we can take the lock once per pagevec, rather than once per page.&#160; The operation in question is trivial and also quite similar, and will be easy to convert to a pagevec:&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; void delete_from_page_cache(struct page *page)
{
        struct address_space *mapping = page-&amp;gt;mapping;
        void (*freepage)(struct page *);        BUG_ON(!PageLocked(page));        freepage = mapping-&amp;gt;a_ops-&amp;gt;freepage;
        spin_lock_irq(&amp;amp;mapping-&amp;gt;tree_lock);
        __delete_from_page_cache(page, NULL);
        spin_unlock_irq(&amp;amp;mapping-&amp;gt;tree_lock);
        mem_cgroup_uncharge_cache_page(page);        if (freepage)
                freepage(page);
        page_cache_release(page);
}
EXPORT_SYMBOL(delete_from_page_cache);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;And this should offer a decent speed up.&lt;/p&gt;</description>
                <environment></environment>
        <key id="56380">LU-12534</key>
            <summary>Add delete_pagevec_from_page_cache</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="1" iconUrl="https://jira.whamcloud.com/images/icons/statuses/open.png" description="The issue is open and ready for the assignee to start work on it.">Open</status>
                    <statusCategory id="2" key="new" colorName="default"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="wc-triage">WC Triage</assignee>
                                    <reporter username="pfarrell">Patrick Farrell</reporter>
                        <labels>
                    </labels>
                <created>Thu, 11 Jul 2019 15:20:35 +0000</created>
                <updated>Mon, 9 Sep 2019 15:57:53 +0000</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                            <comments>
                            <comment id="251123" author="pfarrell" created="Thu, 11 Jul 2019 19:31:59 +0000"  >&lt;p&gt;Turns out this is actually not easily possible - Some of the required functions aren&apos;t exported.&lt;/p&gt;

&lt;p&gt;Notably,&#160; __delete_from_page_cache(page, NULL); and&#160;mem_cgroup_uncharge_cache_page are not available.&lt;/p&gt;

&lt;p&gt;Let&apos;s stick this on the backburner, then...&#160; Something to try to get in upstream when we find the time.&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|i00jhr:</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>