Thread (10 messages) flat view 10 messages, 3 authors, 2022-10-28

Re: [PATCH v4 2/2] arm64: support batched/deferred tlb shootdown during page reclamation

From: Barry Song <hidden>
Date: 2022-09-28 00:25:00
Also in: linux-arm-kernel, linux-doc, linux-mips, linux-mm, linux-riscv, linux-s390, lkml

On Tue, Sep 27, 2022 at 10:15 PM Yicong Yang [off-list ref] wrote:
On 2022/9/27 14:16, Anshuman Khandual wrote:
quoted
[...]

On 9/21/22 14:13, Yicong Yang wrote:
quoted
+static inline bool arch_tlbbatch_should_defer(struct mm_struct *mm)
+{
+    /* for small systems with small number of CPUs, TLB shootdown is cheap */
+    if (num_online_cpus() <= 4)
It would be great to have some more inputs from others, whether 4 (which should
to be codified into a macro e.g ARM64_NR_CPU_DEFERRED_TLB, or something similar)
is optimal for an wide range of arm64 platforms.
I have tested it on a 4-cpus and 8-cpus machine. but i have no machine
with 5,6,7
cores.
I saw improvement on 8-cpus machines and I found 4-cpus machines don't need
this patch.

so it seems safe to have
if (num_online_cpus()  < 8)
Do you prefer this macro to be static or make it configurable through kconfig then
different platforms can make choice based on their own situations? It maybe hard to
test on all the arm64 platforms.
Maybe we can have this default enabled on machines with 8 and more cpus and
provide a tlbflush_batched = on or off to allow users enable or
disable it according
to their hardware and products. Similar example: rodata=on or off.

Hi Anshuman, Will,  Catalin, Andrew,
what do you think about this approach?

BTW, haoxin mentioned another important user scenarios for tlb bach on arm64:
https://lore.kernel.org/lkml/393d6318-aa38-01ed-6ad8-f9eac89bf0fc@linux.alibaba.com/ (local)

I do believe we need it based on the expensive cost of tlb shootdown in arm64
even by hardware broadcast.
Thanks.
quoted
quoted
+            return false;> +
+#ifdef CONFIG_ARM64_WORKAROUND_REPEAT_TLBI
+    if (unlikely(this_cpu_has_cap(ARM64_WORKAROUND_REPEAT_TLBI)))
+            return false;
+#endif
+
+    return true;
+}
+
[...]

.
Thanks
Barry
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help