From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 70803EEB57F for ; Sat, 9 Sep 2023 05:34:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DEE076B0119; Sat, 9 Sep 2023 01:34:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D9D916B011A; Sat, 9 Sep 2023 01:34:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C8CAA6B011B; Sat, 9 Sep 2023 01:34:54 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id B9B786B0119 for ; Sat, 9 Sep 2023 01:34:54 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 92076B36F4 for ; Sat, 9 Sep 2023 05:34:54 +0000 (UTC) X-FDA: 81215944908.25.04A133C Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.221.58]) by imf26.hostedemail.com (Postfix) with ESMTP id EACA5140014 for ; Sat, 9 Sep 2023 05:34:50 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=none; spf=pass (imf26.hostedemail.com: domain of wangjiexun@tinylab.org designates 43.154.221.58 as permitted sender) smtp.mailfrom=wangjiexun@tinylab.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1694237692; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:references; bh=rh6mhDH6qOvX0TvUANBh6/wRVc1jt8cTETrBBFYKtgM=; b=sn+NJi5vBmRV6qSWKau1cChaUTkiGI3ShUHLxK7zGIVyoTQH8Rwz3YT5jeFdcjZuTdKaU9 spxK+OMw0AERluVJDl4jCXaxetT+1AQcbBWwqd0FUYlcjDD9WkQjxMLLKDkUv2EGgdZcUm fegrsK/nu4R/FitqHi//6fWm6DcNRw0= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=none; spf=pass (imf26.hostedemail.com: domain of wangjiexun@tinylab.org designates 43.154.221.58 as permitted sender) smtp.mailfrom=wangjiexun@tinylab.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1694237692; a=rsa-sha256; cv=none; b=t4ADBcpxKpe7noDxHRQ3V/IlIu10frKqQUBiy4pFcL3ZDCM0lC+4PPKtAOrcXJkQ1XydrJ UAseVx4B2t5L13ZZ1pE1aBEr27onVOyuWalmuGP2WYapWbXrHiCiPfTmg4gTXI2308xhsk IWpAelQrHO8WdDoTMDj/9SlA8J1D2pM= X-QQ-mid: bizesmtp70t1694237658tp4lqm5l Received: from wangjiexun-virtual-machine.loca ( [120.225.34.249]) by bizesmtp.qq.com (ESMTP) with id ; Sat, 09 Sep 2023 13:34:16 +0800 (CST) X-QQ-SSF: 01200000000000101000000A0000000 X-QQ-FEAT: +ynUkgUhZJk0o36SX0cCUfGQV9qDkRzv+i3m9nOEfZ4tBTXD4SiKRaZDhN5Em lVKK2DEQCPmcLkWea5WU6iKm6c+tR+XU8dS0GuqHT16j/QsH62LtLWmjalr8bNlIcQ2ud2a 0gDjOGNog3+zUi2sEZO9Vw5qGdQCEr8RofJ2awyNZbsGQAqq4YmHf/CnY734sZHyq9G1SO2 mm0zJfCHABSyzTwCf5dR72xLxxaAplYOcoQgjRovbzy5YNuOtGC3PyB26g3XfCMRXVskTnv YA6CLEyhg87Katp6A6WY852e211B7uFiutz9Eae+Vsbbu0c7hxiWDNw2Sl20KfKv9xLFoId A87Q4NyWdFBGKA1pCw1ZIqTSoDhRCAeoGIeNIA5AdMJfC7NPJmRxbNWtcERMu1i3w+w8QH+ X-QQ-GoodBg: 0 X-BIZMAIL-ID: 6414762947535876167 From: Jiexun Wang To: akpm@linux-foundation.org, brauner@kernel.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, falcon@tinylab.org, Jiexun Wang Subject: [PATCH 0/1] mm/madvise: add cond_resched() in madvise_cold_or_pageout_pte_range() Date: Sat, 9 Sep 2023 13:33:07 +0800 Message-Id: X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrgz:qybglogicsvrgz5a-0 X-Rspamd-Queue-Id: EACA5140014 X-Rspam-User: X-Stat-Signature: 69naeugsm91iu6wtuth99bp7p3td875e X-Rspamd-Server: rspam01 X-HE-Tag: 1694237690-642667 X-HE-Meta: U2FsdGVkX19lxyzpDCxy2logqjk0zB2F8BJZQGURWOA3bglZW8DDkxjhRt+Crb6DnnN6RS7BFCCA/mfv7ihK9/K9JGWQdiDaDoaKrmRmeVyJAGxb8feeTv/zXwZPUZZT0LFqpp921cScHgTCocpAO/cWTqMSvM5anXIAkP6ocxgTkS3dNhiWqHbqXUaxpQDhN7hD5c+H0CI7fFaM6IqhXpSGcvxXRnkTRO7Uoz6lAE3xisucz/cI3jwoIXd37ru4j6kuZvqHM7+y3rUZqdF0heN8nGGaDg4ZwRfI7DnkOIES+wwF2KMAvJ0avkjlDz34qSx4dNz+xIWWyt6kGZVlvDGDGX7wPkG3/K8q13EAJaUTTzozxilSFFJDx6JCeKW0I8O/krbPEuvH6hFBSqSKNIWebesPXApNmvsdNfEiJgdEksHJqWTuKGFU09omqz0+uWBitYbchcZbYAVhbXDYYzlP4ye3p4VMYK3Z+UoaRkPRy08lHnaGZqpn8kS2DFT/AuqWzIeha0GAjkwStNM1Ir554ndzUuzZ8E4WZa9NQMXxUCi/pD1zrp18VxCixn9bAJrxCdGaQF/P5SqIl7a2O63GepQdcRqggdeKZebJgpwpfiPGzgvvSbqJOKi5AKgzJktGWTdy5N7tZY5zTlStIOyLlmJCj2R07IkWRjqe287oVlLwdhS7wnZWriN8jAWNQN2TzPWkriF+a3tTWSbF3nJqR8NWpL7DQNqCCPGjgQkx8r4Q+x2wR4YhJ32xav352o6YC3yVMe0NRIG4zbwdqVoVe1p3BXxxrDVXhgKheBG9zAy9de+WUODkuK1n0TrXjYP9Xn/C56NQjCg193JBlP1a/QGxZxHi6DUBu8l3OerLmaTqbmuHtziwIE400BspdULdkjqNiIoTz1CmIxi/21mUqlwlm85JTgNKV0jrkBIcuSIJ5VhSHPJ+DFaR/2cFD+U8w8AGhoeF/vZX9Dj LlM1EKhx Kn3nza2KihsrJFZ0+EfppC2mVzA0hZgOw9wuphU2JV+cgaWDa5mBymV+u+VeXzNHTrAOPEQXYvkOqYDs= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: I conducted real-time testing on the LicheePi 4A board using Cylictest and employed Ftrace for latency tracing. I observed that madvise_cold_or_pageout_pte_range() causes significant latency under memory pressure, which can be effectively reduced by adding cond_resched() within the loop. The script I tested is as follows: echo wakeup_rt > /sys/kernel/tracing/current_tracer echo 1 > /sys/kernel/tracing/tracing_on echo 0 > /sys/kernel/tracing/tracing_max_latency stress-ng --cpu 4 --vm 4 --vm-bytes 2G & cyclictest --mlockall --smp --priority=99 --distance=0 --duration=30m echo 0 > /sys/kernel/tracing/tracing_on cat /sys/kernel/tracing/trace The tracing results before modification are as follows: # tracer: wakeup_rt # # wakeup_rt latency trace v1.1.5 on 6.5.0-rt6-r1208-00003-g999d221864bf # -------------------------------------------------------------------- # latency: 1969 us, #6/6, CPU#1 | (M:preempt_rt VP:0, KP:0, SP:0 HP:0 #P:4) # ----------------- # | task: cyclictest-250 (uid:0 nice:0 policy:1 rt_prio:99) # ----------------- # # _--------=> CPU# # / _-------=> irqs-off/BH-disabled # | / _------=> need-resched # || / _-----=> need-resched-lazy # ||| / _----=> hardirq/softirq # |||| / _---=> preempt-depth # ||||| / _--=> preempt-lazy-depth # |||||| / _-=> migrate-disable # ||||||| / delay # cmd pid |||||||| time | caller # \ / |||||||| \ | / stress-n-264 1dn.h511 1us : 264:120:R + [001] 250: 0:R cyclictest stress-n-264 1dn.h511 6us : => __ftrace_trace_stack => __trace_stack => probe_wakeup => ttwu_do_activate => try_to_wake_up => wake_up_process => hrtimer_wakeup => __hrtimer_run_queues => hrtimer_interrupt => riscv_timer_interrupt => handle_percpu_devid_irq => generic_handle_domain_irq => riscv_intc_irq => handle_riscv_irq => do_irq stress-n-264 1dn.h511 8us#: 0 stress-n-264 1d...3.. 1953us : __schedule stress-n-264 1d...3.. 1956us+: 264:120:R ==> [001] 250: 0:R cyclictest stress-n-264 1d...3.. 1968us : => __ftrace_trace_stack => __trace_stack => probe_wakeup_sched_switch => __schedule => preempt_schedule => migrate_enable => rt_spin_unlock => madvise_cold_or_pageout_pte_range => walk_pgd_range => __walk_page_range => walk_page_range => madvise_pageout => madvise_vma_behavior => do_madvise => sys_madvise => do_trap_ecall_u => ret_from_exception The tracing results after modification are as follows: # tracer: wakeup_rt # # wakeup_rt latency trace v1.1.5 on 6.5.0-rt6-r1208-00003-g999d221864bf-dirty # -------------------------------------------------------------------- # latency: 879 us, #6/6, CPU#2 | (M:preempt_rt VP:0, KP:0, SP:0 HP:0 #P:4) # ----------------- # | task: cyclictest-212 (uid:0 nice:0 policy:1 rt_prio:99) # ----------------- # # _--------=> CPU# # / _-------=> irqs-off/BH-disabled # | / _------=> need-resched # || / _-----=> need-resched-lazy # ||| / _----=> hardirq/softirq # |||| / _---=> preempt-depth # ||||| / _--=> preempt-lazy-depth # |||||| / _-=> migrate-disable # ||||||| / delay # cmd pid |||||||| time | caller # \ / |||||||| \ | / stress-n-223 2dn.h413 1us : 223:120:R + [002] 212: 0:R cyclictest stress-n-223 2dn.h413 6us : => __ftrace_trace_stack => __trace_stack => probe_wakeup => ttwu_do_activate => try_to_wake_up => wake_up_process => hrtimer_wakeup => __hrtimer_run_queues => hrtimer_interrupt => riscv_timer_interrupt => handle_percpu_devid_irq => generic_handle_domain_irq => riscv_intc_irq => handle_riscv_irq => do_irq stress-n-223 2dn.h413 9us!: 0 stress-n-223 2d...3.. 850us : __schedule stress-n-223 2d...3.. 856us+: 223:120:R ==> [002] 212: 0:R cyclictest stress-n-223 2d...3.. 875us : => __ftrace_trace_stack => __trace_stack => probe_wakeup_sched_switch => __schedule => preempt_schedule => migrate_enable => free_unref_page_list => release_pages => free_pages_and_swap_cache => tlb_batch_pages_flush => tlb_flush_mmu => unmap_page_range => unmap_vmas => unmap_region => do_vmi_align_munmap.constprop.0 => do_vmi_munmap => __vm_munmap => sys_munmap => do_trap_ecall_u => ret_from_exception After the modification, the cause of maximum latency is no longer madvise_cold_or_pageout_pte_range(), so this modification can reduce the latency caused by madvise_cold_or_pageout_pte_range(). Jiexun Wang (1): add cond_resched() in madvise_cold_or_pageout_pte_range() mm/madvise.c | 9 +++++++++ 1 file changed, 9 insertions(+) -- 2.34.1