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 11142C6FD1C for ; Tue, 14 Mar 2023 09:12:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 599528E0003; Tue, 14 Mar 2023 05:11:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 54B258E0002; Tue, 14 Mar 2023 05:11:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 411C88E0003; Tue, 14 Mar 2023 05:11:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 2F33A8E0002 for ; Tue, 14 Mar 2023 05:11:59 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 0066C140F56 for ; Tue, 14 Mar 2023 09:11:58 +0000 (UTC) X-FDA: 80566936758.03.5880DE3 Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) by imf11.hostedemail.com (Postfix) with ESMTP id 2C3EA40008 for ; Tue, 14 Mar 2023 09:11:56 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=shopee.com header.s=shopee.com header.b=MMrv6ZFH; spf=pass (imf11.hostedemail.com: domain of haifeng.xu@shopee.com designates 209.85.214.181 as permitted sender) smtp.mailfrom=haifeng.xu@shopee.com; dmarc=pass (policy=reject) header.from=shopee.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1678785117; 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:dkim-signature; bh=vKgzht+gmBOBVC9nKYNuGxb9cEGGStYD0EpYNTNxlyk=; b=LncKrUz7El/G0oLEPSZrxHIAp3fjNKdqMrw8KLRWybJZA1NLxBE5gcp946ObvGn3V6hl8c 8LYQn9x/urp7j5awQyqqMApCDNQPjSpO/1oDoYg0GmonRuQ+GY70+6Db9CwORWKFyAgcvC uj9uVOnZbNjRejWl1JmMx4kVMuc41AM= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=shopee.com header.s=shopee.com header.b=MMrv6ZFH; spf=pass (imf11.hostedemail.com: domain of haifeng.xu@shopee.com designates 209.85.214.181 as permitted sender) smtp.mailfrom=haifeng.xu@shopee.com; dmarc=pass (policy=reject) header.from=shopee.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678785117; a=rsa-sha256; cv=none; b=VbAon8Uc9Yoazdyb8zREPnkvnCi9M93jkzU4f28j0+zZVX1lEXtC9CI5dJKbESOqyzcspm Rh0BnHQFjRIVGrdCYe7cjlVGmWTVFsTt7lVHOAT23tRmR9N2Z80I68QOPZDSADgDVHwMDf dabIR+JzgRPVjLEbJsFWAfhwV4VIF6g= Received: by mail-pl1-f181.google.com with SMTP id y11so15896632plg.1 for ; Tue, 14 Mar 2023 02:11:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=shopee.com; s=shopee.com; t=1678785116; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=vKgzht+gmBOBVC9nKYNuGxb9cEGGStYD0EpYNTNxlyk=; b=MMrv6ZFHPI284Taspim+FZeJ6qozn0gloLqh+CxK4nBduqnhhyIbXrePSgt5OCIHrE EvqrolF79gdgWPT8feQqTD/5LwfRwaKzK22Skvz80I4XiRYCYJplQ+niOpiXf6P/IEjz h0Ztc5KvjaGqg473FVDid4DZBxtst34g/Z+x/ROnyG+orVI/zI0/Znxy38Nwx771RuvN PYta3zARpAZxDa2rLgHEhG3jx6JoZXGifgFpezRU2rREdpRkvprpJU3FXLufhHbGSqvb +ozCg/0srVvYP2w/w2YDxZcGPx4uTbf7j3UrsOAar48T+xvMjJQ3ZZJ++mQ2x8sirVwC DADA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678785116; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=vKgzht+gmBOBVC9nKYNuGxb9cEGGStYD0EpYNTNxlyk=; b=HlbyVlc6pYDKK3t7G4LA4Zw9RnY94iIVsXXl+DRmuU1i3I3kb6+B/xAfWHZ3k/UgsG V16Z8wIaXyc5hxNcOKL67OV8//SXTB3hGJVLkSaHN6Yrnp29mtptNqbSmOWfEPDSTMgp DSkzW13SHDcT+UKoSvqK13JktnqXU4GyygKcpj09Pps4JckKia9P4VR7LSvmaOfUD/tH O8ek59tmhy8lpGaMx0FtowDPmRL1TLw/icu2LJdIVXEJfx0hU81VPGU9xWILsWRUe/Bm Ydq4vClgzHYUNXAH2AP8oV270Na3ptuRHGGmzoYHfnzV41zcfV1delAvY8Ed38vBvzhV Altg== X-Gm-Message-State: AO0yUKU+K5RZ6ZYD+TC9oB1nfKdxbhUPwqkPwWGL3vcOg2P8sG+bPGuX cst/AFi3BTJG0Hqz7EqBtk2W3g== X-Google-Smtp-Source: AK7set/QO8WXl+vPCHk6UYrPBWOwE9kYIAE8uv3WBqv12RwllKBFelhfpgPqk+c+mjFUzxhDpyZtZA== X-Received: by 2002:a17:902:e54e:b0:1a0:42c0:b2af with SMTP id n14-20020a170902e54e00b001a042c0b2afmr8081816plf.33.1678785115897; Tue, 14 Mar 2023 02:11:55 -0700 (PDT) Received: from ubuntu-haifeng.default.svc.cluster.local ([101.127.248.173]) by smtp.gmail.com with ESMTPSA id kj8-20020a17090306c800b001991942dde7sm1258594plb.125.2023.03.14.02.11.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Mar 2023 02:11:55 -0700 (PDT) From: Haifeng Xu To: mhocko@suse.com Cc: shakeelb@google.com, hannes@cmpxchg.org, akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Haifeng Xu Subject: [PATCH RESEND] mm/oom_kill: don't kill exiting tasks in oom_kill_memcg_member Date: Tue, 14 Mar 2023 09:11:36 +0000 Message-Id: <20230314091136.264878-1-haifeng.xu@shopee.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam03 X-Stat-Signature: unjnbiushr53swfr5frk6g66kkpmoobz X-Rspamd-Queue-Id: 2C3EA40008 X-HE-Tag: 1678785116-440965 X-HE-Meta: U2FsdGVkX1+nuIGE1Sspt/IQjBXSC32sNNmmeLK3YrJuEZ8mn1ivUVstDuZOyfueyG88hNZxvxN2zlxRqNjuemCegvTsjQThhXu6bPtlT4EcMrjOzmiilhBCpvwbZT9e05EOGHuC6tAyNy0DwTsuCu8Zbe/a8m/e3FTwUbqoR3Fyd57zsboGD6cDmdk/nAoiRr8l0QvIUYnPDMlpUxD8KVfi8gSFuclFx+HYi4zbrjeM/5bF/bcIipwtLuJqXoEgOWAd+M3x5oP8wcJE6TvluIznCqIVcUhKTreB0dkPKMtDQAvjfLFmHWAGPT6Kvcxr6nhAKNLTZn/1CBRQn3dRN65jgJkgrQKVxttxMibnto4QGQ1SoJpis1E3mSU6c+EcuxBm5KWDamLkRieMGKcaLBmB41c4RsvZ8kSmVoPDVZ1YOKwNoa6TLTz+hkXQF7Xk3ATuVuHbCJQPzWZZg6uC9AQ+4VmRVZJwv+exUgE53DMHkqjJDeFtxPcGRuSWGdL5oHGH1hxmzWLWdUvJ+3O7vFaq5RHoSLS/y6XpUftDjVJpc19SmoaSbsnSzjWsNKfP74zlRsfpQlKY8DFXQ6ZrsICmdLQjP1Nb7RiR0wcTZuRIh7ishFfqbHROuDgcKGkZdzAc9A8OrwxGB6Vud4MEA4WuiBfXN8KjKIrumFrcSpMXBO3RrJEwwsQ8ab8Hu4AEqrk4dcBSQHsKzhwDpqjh/r4qsTRULx7fCH+mtN3xYOtNVe/o6Lu4DZy3iaAnwL+41sp3kDn3a95CXYHOdvv2KaImsEwyaV97E1t6VkVdLlVupMiOUJXfdW05pe2EjSe4nUHDQ2hujuW073mnpHJgycgu1PD2AMpXA3hYhKaE7KagdCLQofV/YD12QxAj26Wv2HzGVE7CokAWxYgyDF8K5glIfVWHv6n9bgG5ZlJGo6F2HARqlHUKw4kPMrLTd+Rw2I81xCrWR+5c98jpUh5 F4ugf8H/ +sn4DNdICIx5Is+Poj3oA+FneoGPA++3djFVufDssOABfvitKgnNobp0Ar/PgorTRpzfoylHvTgacOzqnQPsy0Iw/COvIRPSz3DI8jKb3X6spwk366lO0jZm9+Fmlf5PW7XQeX5VtS55WYmRo3Wrl3SFjbLoA+LtBkPufqXE7SfLY2K+KkmRZiWsWZ76U5k3dO7B3rp7mPd41i2aVf7kK+G/WNx7rIkRZL8luGilzzfZC3tBXgjUZTnTO1Qem0ZuugqbpHYof+06xSGFoU6QYxskkMLV8aPXRvwuBiSYVFUt4HHAO8tWHxepBsVA3LHG9X0BYzS8omu6qcCguqeyz2SJepS7xdM5P/mwJ1SaxIPbirx57RSt03bcgq7b32X0El6zoLsORou/8P2rcHMDPbaD7vwlho5T32R0W65TqW6fwRHvIQ18FHaUIP0L0YBfel8jYL2ZZz/ar6ScejUo50dmiIQ== 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: If oom_group is set, oom_kill_process() invokes oom_kill_memcg_member() to kill all processes in the memcg. When scanning tasks in memcg, maybe the provided task is marked as oom victim. Also, some tasks are likely to release their address space. There is no need to kill the exiting tasks. In order to handle these tasks which may free memory in the future, add a function helper reap_task_will_free_mem() to mark it as oom victim and queue it in oom reaper. Signed-off-by: Haifeng Xu --- mm/oom_kill.c | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/mm/oom_kill.c b/mm/oom_kill.c index 044e1eed720e..f16bca506dc2 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c @@ -996,15 +996,43 @@ static void __oom_kill_process(struct task_struct *victim, const char *message) } #undef K +static bool reap_task_will_free_mem(struct task_struct *victim) +{ + bool ret = false; + + task_lock(victim); + if (task_will_free_mem(victim)) { + mark_oom_victim(victim); + queue_oom_reaper(victim); + ret = true; + } + task_unlock(victim); + + return ret; +} + /* * Kill provided task unless it's secured by setting * oom_score_adj to OOM_SCORE_ADJ_MIN. + * If the task is marked as oom victim or will free + * memory, there is no need to kill it again. */ static int oom_kill_memcg_member(struct task_struct *task, void *message) { if (task->signal->oom_score_adj != OOM_SCORE_ADJ_MIN && !is_global_init(task)) { get_task_struct(task); + + /* + * If the task is already exiting, don't alarm the sysadmin or kill + * its children or threads, just give it access to memory reserves + * so it can die quickly + */ + if (tsk_is_oom_victim(task) || reap_task_will_free_mem(task)) { + put_task_struct(task); + return 0; + } + __oom_kill_process(task, message); } return 0; @@ -1022,15 +1050,10 @@ static void oom_kill_process(struct oom_control *oc, const char *message) * its children or threads, just give it access to memory reserves * so it can die quickly */ - task_lock(victim); - if (task_will_free_mem(victim)) { - mark_oom_victim(victim); - queue_oom_reaper(victim); - task_unlock(victim); + if (reap_task_will_free_mem(victim)) { put_task_struct(victim); return; } - task_unlock(victim); if (__ratelimit(&oom_rs)) dump_header(oc, victim); -- 2.25.1