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 79B28C7EE3A for ; Thu, 29 Aug 2024 08:26:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 001A56B00C0; Thu, 29 Aug 2024 04:26:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id ECD2B6B00C2; Thu, 29 Aug 2024 04:26:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D94456B00C4; Thu, 29 Aug 2024 04:26:42 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id B604D6B00C0 for ; Thu, 29 Aug 2024 04:26:42 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 5E9BBAA011 for ; Thu, 29 Aug 2024 08:26:42 +0000 (UTC) X-FDA: 82504601844.19.076947E Received: from mail-yb1-f169.google.com (mail-yb1-f169.google.com [209.85.219.169]) by imf23.hostedemail.com (Postfix) with ESMTP id BD81E140003 for ; Thu, 29 Aug 2024 08:26:40 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=YLkiYP0E; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf23.hostedemail.com: domain of jingxiangzeng.cas@gmail.com designates 209.85.219.169 as permitted sender) smtp.mailfrom=jingxiangzeng.cas@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724919928; a=rsa-sha256; cv=none; b=V61dmgOzMk7jEJCnqdGUqXQ3+wo8ibIGrX0J4lsQ/scOgfB3CaI9Num5lPHYa3A7k8oZ4L Pjh9V2PcoWbjmQvP4zYcmeLCEM/ftaZU7e6xPBfyO12+H0GUSBJzSJtxdSKIcrUgEOGNUV 4KnjOY5NruNSBEGZ3GIMRLe5Og9LLdg= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=YLkiYP0E; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf23.hostedemail.com: domain of jingxiangzeng.cas@gmail.com designates 209.85.219.169 as permitted sender) smtp.mailfrom=jingxiangzeng.cas@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724919928; 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-type:content-transfer-encoding:in-reply-to: references:dkim-signature; bh=KEnTVgaHTXfOXzVjkNo97FOyg2V3RJy3YcKdta4Y9kU=; b=0+HwT0NsH1BfbgIrvhsKoslExhW7SMZ70Pmk4FquZggZtMeJ67C2+FVQVJxtteCMZS43+s ENfwJhdT6mDFwuP8DD40csBR88gnLRJSDSeC3wJ5vle5TVC904cp/QTcaE1/i8XuSpbV3Q TYFt9+93/UuBDa+niofqxBfEEJ+bPEY= Received: by mail-yb1-f169.google.com with SMTP id 3f1490d57ef6-e0b7efa1c1bso420450276.3 for ; Thu, 29 Aug 2024 01:26:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1724920000; x=1725524800; darn=kvack.org; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=KEnTVgaHTXfOXzVjkNo97FOyg2V3RJy3YcKdta4Y9kU=; b=YLkiYP0EyfGslXiwdDZLzMn0Y0iD7CYFlWp5UPKGNECEdIbLvi683/TsH5DlzGfe3Z 6/1R00PxzX7t+wdRtH1ldFd+DEP7SmjWsdTW8Gpj+IYup6D0EW7dbzK0vlITbOjxQkhQ DQGhX/NzhSOtxqNem34NEYl4UjeSvHRYRILLxYPj7XE1PIDRN+shV3sBHP66kbgHrCn4 STFrwdI5HoOUmkw9IJWIDeMv1N8WdS/Y9c9S73E/gPZKjLmgCuPJUJv/vYOkI76QT7ds 3o3Zpd7J2bBNqlyLIZ04l/W+DZeWGE75Gv9+IkeJNEICXxDPeZLsI9yK6UJKVKHVK0OC Q/rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724920000; x=1725524800; h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=KEnTVgaHTXfOXzVjkNo97FOyg2V3RJy3YcKdta4Y9kU=; b=MCBS4qHZqAPU296gtisfC4B9NqMCDvjnBKmps9CzkbbqSJW8acogdC0RXYQici6L7B /XlQ+WXT0+oJ2NnNzuM3yS/taq6Tno4jjw29y7OfN5xm/Lib20yrzdn5H/va8oXIuzBW 3+mk8gbPPk6v4Yy1HtfSVDgkB0i70snYK/kZC6JhkZ8AccIiRJmBlqVg+eplwqJ9KCPz H5AC8PAveHdARkR9V0y8rJgoTpLrV6Wacq7CvgkqiCet4HjqXlwzRPXcTvXxi75YSqjW JAqmBD9VEnqphPlZfZpeCjoIhK9Gb5C3c0rkQEo5rc9GOsRFHDoyMk1N5W+j/txNfDYG gINQ== X-Gm-Message-State: AOJu0Yzlefa2x7w0ij486EY18dAjGjKYNpaerVUVRtXZscRo8UgA3fvD 9UAxrEbIytC34JOHDbQ+SkGATtOtQXGgiCvXs0t8iRn7OQ4g+OFSevY3+/VCCvR9et9SStNr2jR oKVjjVQ6drLbAiizDjFqfTlLhRoc= X-Google-Smtp-Source: AGHT+IEIywkjCb3ZuJS/JtYhyVJ4aRAVKXHH+x+VqgJRjXG2D4ZVS07kqqBFIzmOYzj7dfxbfidJRs4zzOv6F8POnHw= X-Received: by 2002:a05:6902:158e:b0:e11:6093:296 with SMTP id 3f1490d57ef6-e1a5ab73399mr2087209276.18.1724919999594; Thu, 29 Aug 2024 01:26:39 -0700 (PDT) MIME-Version: 1.0 From: jingxiang zeng Date: Thu, 29 Aug 2024 16:26:28 +0800 Message-ID: Subject: [PATCH] mm/mglru: wake up flushers when legacy cgroups run out of clean caches To: akpm@linux-foundation.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Yu Zhao , Alexander Motin , Kairui Song Content-Type: multipart/alternative; boundary="000000000000d78a430620ce3b81" X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: BD81E140003 X-Stat-Signature: de8nu5g831b8h1xm64993mobehih36i1 X-Rspam-User: X-HE-Tag: 1724920000-950247 X-HE-Meta: U2FsdGVkX1/gKTxW6JLQWEkCQviNgZ3eA+GtqqsQx3ZBLXZ/JyZGto5tYWTItdqP/TM1eTk1FE/D+lYh92Is6lf5W4iSlxW7H7WMDZYNCARlSvBwMdlYwq/tAHIV1BbK90PAAhLOZ9TGWGIppujncgALOLeIsCqQp9jTjcYk/K8lHKId2XEQg0cwRwNLIWbQPZZUte6axy8oY7/NR2iwwP7NrHnuKahGKHzlMV0SvHy5ktc/IOUrKZuffKnFNUnjaeJD2CJUlk60NxwTjLu1HPnkitKjFMeegxbrJTpE52eUP5p6fjXJqWRSD43t/MdOpN5ltE+RmsUPIMlTXoMTtELaOmrViXYh0w6nz/c1hQtD3BbcvbEISgp6PpKSf8rIyoSzFE8mbhugewrOpcgmXV5tTf9+Zo6FWvTUK8ihBbuI+LletU9ZprpDqYs0oLEpVHTnmcjru4/L4cTlgfIgaDvOiqCmZhPDkK0JDbws3gqNMuNRsH68r7A/Ygz/NOF/uc2JLbBv6qISHrSDYzUczBEEdzm86G3qjrcxQtH3Xs2sHgq8cv0XMZt+ao2t+qdkVFhpDZsgISUgYnCjyc1MyY0m1dx6hk7H5W1ts0sxeCpail7D6//TOY5eAhKgCsDVJK9hPhj3XDyzs+f5zrn7xU2eCSQoThefWDKdAVHWelx2wupvYRglC3nHTFuReiRruvsTuYtf3CQYe8HVg8GCTnn9FZFyawikOTuzj+I9vbGi8CSKegz/j/6436aukQOsYIesAl7rGELcauWjoHfXeTWD992hxCM4L2RymMqADZVbf71kZbsUCDVHRoo661HlFfEULDuj8Its1o7OG1rRexi0yeWKJXO6FMnr2Wt+UYMlCcZ72lLI5uMzvrIhCBxt6+axZSpxHuLrZiFmI4ThXY6bWogurUCCIQogqnxIThL2FT6DQQoXPCSxjkG8+O8Scy5zuxogi0G96uoru4R 9M+DQvFb dMQsU+eIGRMVIT16I9xl/f0S3OQNAvtY72qGw8JijcNLPc947lKUXBjzOpfGltdsqaY1ByyZheShvkP3+MNYt+NwT09NLCR2ylM/E6LE1Ip87Jyfp67mLgG9sUbWsVpx08wHHUs0X5fQIi6Mt0bu1AB4MsEenCZ1IC3xvAv5JK5X9U3qEuXdMBq+0Dh4Kerg4BT1h2OeJBI0KlT/53kt+vuJmNddHL2NeGGPARW6xgR1JrO1Pf7QocEIsKUVCEYK1bVh8h2yPI2uelizMvaL6x0sSu28Coxjc86bBxzJnSRHyjKcBdCA6CgFTZGe1yDeMfX0sMjta9SOZc2GFAldTdV7BptLxB4sPj0PaJdnLew1MvtQhZ8YubT65r/hXuOUbD20oNdq01hBqmJfEH/AToHDBW1AlB6/WCAaEMDoSXBuW5tMEk/TOnxF8+47c5HF1gFg9V7klR3DsaDBw1hKe03BntvYqoMnKIa09fchwzfc6iNzX3bF/zizeb1Lcdbx+PGxW X-Bogosity: Ham, tests=bogofilter, spamicity=0.056865, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: --000000000000d78a430620ce3b81 Content-Type: text/plain; charset="UTF-8" Commit 14aa8b2d5c2e ("mm/mglru: don't sync disk for each aging cycle") removed the opportunity to wake up flushers during the MGLRU page reclamation process can lead to an increased likelihood of triggering OOM when encountering many dirty pages during reclamation on MGLRU. This leads to premature OOM if there are too many dirty pages in cgroup: Killed dd invoked oom-killer: gfp_mask=0x101cca(GFP_HIGHUSER_MOVABLE|__GFP_WRITE), order=0, oom_score_adj=0 Call Trace: dump_stack_lvl+0x5f/0x80 dump_stack+0x14/0x20 dump_header+0x46/0x1b0 oom_kill_process+0x104/0x220 out_of_memory+0x112/0x5a0 mem_cgroup_out_of_memory+0x13b/0x150 try_charge_memcg+0x44f/0x5c0 charge_memcg+0x34/0x50 __mem_cgroup_charge+0x31/0x90 filemap_add_folio+0x4b/0xf0 __filemap_get_folio+0x1a4/0x5b0 ? srso_return_thunk+0x5/0x5f ? __block_commit_write+0x82/0xb0 ext4_da_write_begin+0xe5/0x270 generic_perform_write+0x134/0x2b0 ext4_buffered_write_iter+0x57/0xd0 ext4_file_write_iter+0x76/0x7d0 ? selinux_file_permission+0x119/0x150 ? srso_return_thunk+0x5/0x5f ? srso_return_thunk+0x5/0x5f vfs_write+0x30c/0x440 ksys_write+0x65/0xe0 __x64_sys_write+0x1e/0x30 x64_sys_call+0x11c2/0x1d50 do_syscall_64+0x47/0x110 entry_SYSCALL_64_after_hwframe+0x76/0x7e memory: usage 308224kB, limit 308224kB, failcnt 2589 swap: usage 0kB, limit 9007199254740988kB, failcnt 0 ... file_dirty 303247360 file_writeback 0 ... oom-kill:constraint=CONSTRAINT_MEMCG,nodemask=(null),cpuset=test, mems_allowed=0,oom_memcg=/test,task_memcg=/test,task=dd,pid=4404,uid=0 Memory cgroup out of memory: Killed process 4404 (dd) total-vm:10512kB, anon-rss:1152kB, file-rss:1824kB, shmem-rss:0kB, UID:0 pgtables:76kB oom_score_adj:0 Wake up flushers when legacy cgroups run out of clean caches. Fixes: 14aa8b2d5c2e ("mm/mglru: don't sync disk for each aging cycle") Signed-off-by: Zeng Jingxiang Signed-off-by: kasong --000000000000d78a430620ce3b81 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Commit 14aa8b2d5c2e ("mm/mglru: don't sync disk f= or each aging cycle")
removed the opportunity to wake up flushers d= uring the MGLRU page
reclamation process can lead to an increased likeli= hood of triggering
OOM when encountering many dirty pages during reclama= tion on MGLRU.

This leads to premature OOM if there are too many dir= ty pages in cgroup:
Killed

dd invoked oom-killer: gfp_mask=3D0x10= 1cca(GFP_HIGHUSER_MOVABLE|__GFP_WRITE),
order=3D0, oom_score_adj=3D0
=
Call Trace:
=C2=A0 <TASK>
=C2=A0 dump_stack_lvl+0x5f/0x80=C2=A0 dump_stack+0x14/0x20
=C2=A0 dump_header+0x46/0x1b0
=C2=A0 oo= m_kill_process+0x104/0x220
=C2=A0 out_of_memory+0x112/0x5a0
=C2=A0 me= m_cgroup_out_of_memory+0x13b/0x150
=C2=A0 try_charge_memcg+0x44f/0x5c0=C2=A0 charge_memcg+0x34/0x50
=C2=A0 __mem_cgroup_charge+0x31/0x90
= =C2=A0 filemap_add_folio+0x4b/0xf0
=C2=A0 __filemap_get_folio+0x1a4/0x5b= 0
=C2=A0 ? srso_return_thunk+0x5/0x5f
=C2=A0 ? __block_commit_write+0= x82/0xb0
=C2=A0 ext4_da_write_begin+0xe5/0x270
=C2=A0 generic_perform= _write+0x134/0x2b0
=C2=A0 ext4_buffered_write_iter+0x57/0xd0
=C2=A0 e= xt4_file_write_iter+0x76/0x7d0
=C2=A0 ? selinux_file_permission+0x119/0x= 150
=C2=A0 ? srso_return_thunk+0x5/0x5f
=C2=A0 ? srso_return_thunk+0x= 5/0x5f
=C2=A0 vfs_write+0x30c/0x440
=C2=A0 ksys_write+0x65/0xe0
= =C2=A0 __x64_sys_write+0x1e/0x30
=C2=A0 x64_sys_call+0x11c2/0x1d50
= =C2=A0 do_syscall_64+0x47/0x110
=C2=A0 entry_SYSCALL_64_after_hwframe+0x= 76/0x7e

=C2=A0memory: usage 308224kB, limit 308224kB, failcnt 2589=C2=A0swap: usage 0kB, limit 9007199254740988kB, failcnt 0

=C2=A0 = ...
=C2=A0 file_dirty 303247360
=C2=A0 file_writeback 0
=C2=A0 ...=

oom-kill:constraint=3DCONSTRAINT_MEMCG,nodemask=3D(null),cpuset=3Dt= est,
mems_allowed=3D0,oom_memcg=3D/test,task_memcg=3D/test,task=3Ddd,pid= =3D4404,uid=3D0
Memory cgroup out of memory: Killed process 4404 (dd) to= tal-vm:10512kB,
anon-rss:1152kB, file-rss:1824kB, shmem-rss:0kB, UID:0 p= gtables:76kB
oom_score_adj:0

Wake up flushers when legacy cgroups= run out of clean caches.

Fixes: 14aa8b2d5c2e ("mm/mglru: don&#= 39;t sync disk for each aging cycle")
Signed-off-by: Zeng Jingxiang= <linuszeng@tencent.com>=
Signed-off-by: kasong <kasong@= tencent.com>
--000000000000d78a430620ce3b81--