lkml.org 
[lkml]   [2022]   [Sep]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH v3 4/4] arm64: support batched/deferred tlb shootdown during page reclamation
    On Wed, Sep 21, 2022 at 6:53 PM Anshuman Khandual
    <anshuman.khandual@arm.com> wrote:
    >
    >
    > On 8/22/22 13:51, Yicong Yang wrote:
    > > +static inline void arch_tlbbatch_add_mm(struct arch_tlbflush_unmap_batch *batch,
    > > + struct mm_struct *mm,
    > > + unsigned long uaddr)
    > > +{
    > > + __flush_tlb_page_nosync(mm, uaddr);
    > > +}
    > > +
    > > +static inline void arch_tlbbatch_flush(struct arch_tlbflush_unmap_batch *batch)
    > > +{
    > > + dsb(ish);
    > > +}
    >
    > Just wondering if arch_tlbbatch_add_mm() could also detect continuous mapping
    > TLB invalidation requests on a given mm and try to generate a range based TLB
    > invalidation such as flush_tlb_range().
    >
    > struct arch_tlbflush_unmap_batch via task->tlb_ubc->arch can track continuous
    > ranges while being queued up via arch_tlbbatch_add_mm(), any range formed can
    > later be flushed in subsequent arch_tlbbatch_flush() ?
    >
    > OR
    >
    > It might not be worth the effort and complexity, in comparison to performance
    > improvement, TLB range flush brings in ?

    Probably it is not worth the complexity as perf annotate shows
    "
    Further perf annonate shows 95% cpu time of ptep_clear_flush
    is actually used by the final dsb() to wait for the completion
    of tlb flush."

    so any further optimization before dsb(ish) might bring some improvement
    but seems minor.

    Thanks
    Barry

    \
     
     \ /
      Last update: 2022-09-21 09:17    [W:3.277 / U:0.608 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site