Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
mm,unmap: avoid flushing TLB in batch if PTE is inaccessible
0Day/LKP reported a performance regression for commit 7e12beb ("migrate_pages: batch flushing TLB"). In the commit, the TLB flushing during page migration is batched. So, in try_to_migrate_one(), ptep_clear_flush() is replaced with set_tlb_ubc_flush_pending(). In further investigation, it is found that the TLB flushing can be avoided in ptep_clear_flush() if the PTE is inaccessible. In fact, we can optimize in similar way for the batched TLB flushing too to improve the performance. So in this patch, we check pte_accessible() before set_tlb_ubc_flush_pending() in try_to_unmap/migrate_one(). Tests show that the benchmark score of the anon-cow-rand-mt test case of vm-scalability test suite can improve up to 2.1% with the patch on a Intel server machine. The TLB flushing IPI can reduce up to 44.3%. Link: https://lore.kernel.org/oe-lkp/[email protected] Link: https://lore.kernel.org/oe-lkp/[email protected]/ Link: https://lkml.kernel.org/r/[email protected] Fixes: 7e12beb ("migrate_pages: batch flushing TLB") Signed-off-by: "Huang, Ying" <[email protected]> Reported-by: kernel test robot <[email protected]> Reviewed-by: Nadav Amit <[email protected]> Reviewed-by: Xin Hao <[email protected]> Cc: Mel Gorman <[email protected]> Cc: Hugh Dickins <[email protected]> Cc: Matthew Wilcox (Oracle) <[email protected]> Cc: David Hildenbrand <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
- Loading branch information