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 2718EC43334 for ; Sat, 4 Jun 2022 10:35:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4D8F56B0071; Sat, 4 Jun 2022 06:35:27 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 484496B0073; Sat, 4 Jun 2022 06:35:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 34D016B0074; Sat, 4 Jun 2022 06:35:27 -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 24DEF6B0071 for ; Sat, 4 Jun 2022 06:35:27 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay13.hostedemail.com (Postfix) with ESMTP id E6BD861134 for ; Sat, 4 Jun 2022 10:35:26 +0000 (UTC) X-FDA: 79540196652.03.2027CB0 Received: from mail-pf1-f193.google.com (mail-pf1-f193.google.com [209.85.210.193]) by imf22.hostedemail.com (Postfix) with ESMTP id 432B2C004F for ; Sat, 4 Jun 2022 10:35:22 +0000 (UTC) Received: by mail-pf1-f193.google.com with SMTP id bo5so8986778pfb.4 for ; Sat, 04 Jun 2022 03:35:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=date:from:to:cc:message-id:in-reply-to:references:subject :mime-version:content-transfer-encoding:content-disposition; bh=7+Vijt1MmRlglM0RAhiDFZa/De73PheL/nJ1Y6TP4mg=; b=fNk+wU+DGYtPgG+Iju3kGdOyw8wpYvWGyfqNV6GwAnks4Q8oBo/sK+6U+Pc97W4r7x pD/hcQ7HCt6iAC2QnCXa+vErQS9Z43A7skPBwhGnM7TrE0r1L9wSFehUynRf6Wy27sNt 1rUQPVEyfXdWsNpwYkLxCnlju4sB4ZC/cneGeHJA+veN37tvH8TNc4Yl0h/ginXuneqg y+SuVwvfOsLnEnTTyd70CF4lHIoCbIdylu9d4d4ZTMUsPKKnWMoQFQBoVK229Btgdrwa uBsoawepodYH8JHaq/HUhJ1BNBFVq27XlJJDFVOooAdWSMrhE7mSxntKLlIFUmPXrt4c 8z3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:message-id:in-reply-to :references:subject:mime-version:content-transfer-encoding :content-disposition; bh=7+Vijt1MmRlglM0RAhiDFZa/De73PheL/nJ1Y6TP4mg=; b=UL6V0yvhHHCRr++ZSmg9K//mxFYbO676hxCxnPosTOY5949kXs34urZrFTt/cFg7L5 Y6KXWYhhfssB9CsbQ91TDSyJmHUpAOxvdC/ZXtfFxB+Sa6a+s2gh3cuBPqmg1gXoKNow R81C/9zINLGhteH17F2AbuZvjzm1Edv3/QwqvfusiR+iSsqecVQKOKp1bUPwgFQZ9vfB 5MTmtbYsQWQIGqCSol3b2FmKAQRCMXK1yUJdiMhq3TUtykKQdmIiyMOBurE20tAtnUmS fPB1dTecGlgJAL59PVs8lVe15LC/ORMbkrUu4lj+LDfn62l4w2KaZyuRsic4jF91yUaf An/Q== X-Gm-Message-State: AOAM532oVSw5ySpJDlX3F01qOb1PBQUzU1WcO2ol03Pe6SM/DtEz3lZA KFTu1bR2yAMtarEE+ciAtz8= X-Google-Smtp-Source: ABdhPJzLS1o0rUf644L3/MWMFdGVzogH3ajNhHeorqFsKKa5P8DMxoVpEm+jHn4CmYziDDgz86t3LA== X-Received: by 2002:a63:4964:0:b0:3fc:a87a:bd8d with SMTP id y36-20020a634964000000b003fca87abd8dmr12575373pgk.257.1654338924703; Sat, 04 Jun 2022 03:35:24 -0700 (PDT) Received: from pc ([103.142.140.127]) by smtp.gmail.com with ESMTPSA id ik29-20020a170902ab1d00b00163f3e91ea0sm6916153plb.238.2022.06.04.03.35.21 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sat, 04 Jun 2022 03:35:23 -0700 (PDT) Date: Sat, 4 Jun 2022 18:35:19 +0800 From: Zackary Liu To: Michal Hocko Cc: "=?utf-8?Q?akpm=40linux-foundation.org?=" , "=?utf-8?Q?linux-mm=40kvack.org?=" , "=?utf-8?Q?linux-kernel=40vger.kernel.org?=" Message-ID: <6BC32F66-2AC4-450D-90D5-B7A09455B617@getmailspring.com> In-Reply-To: References: Subject: Re: [PATCH] mm/oom_kill: break evaluation when a task has been selected X-Mailer: Mailspring MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=fNk+wU+D; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf22.hostedemail.com: domain of zackary.liu.pro@gmail.com designates 209.85.210.193 as permitted sender) smtp.mailfrom=zackary.liu.pro@gmail.com X-Stat-Signature: hc4a836sabi86d3pgbifoeyrh84ezukc X-Rspam-User: X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 432B2C004F X-HE-Tag: 1654338922-941037 X-Bogosity: Ham, tests=bogofilter, spamicity=0.001429, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Jun 1 2022, at 3:45 pm, Michal Hocko wrote: > On Sat 14-05-22 15:52:28, Zhaoyu Liu wrote: >> oom points no longer need to be calculated if a task is oom_task_origin(), >> so return 1 to stop the oom_evaluate_task(). > > This doesn't really explain why this is really desired. Is this a fix, > optimization? > > Please also note that this change has some side effects. For one, the > task marked as oom origin will get killed even if there is still a > pending oom victim which hasn't been fully dismantled. Is this > intentional? Thank you very much for reminding. >From my point of view, the victim was marked in the last oom, and now it has entered the oom again, which means that the system still has no deprecated memory available. In order to ensure that the system can return to normal as soon as possible, killing the origin task immediately should be A good choice, and the role of this patch is to end oom_evaluate_task and return true as soon as the origin task is found. Maybe this patch is not the optimal solution, it has a trade-off. It is an honor to discuss with you, thank you very much! zackary >> Signed-off-by: Zhaoyu Liu >> --- >> mm/oom_kill.c | 4 ++-- >> 1 file changed, 2 insertions(+), 2 deletions(-) >> >> diff --git a/mm/oom_kill.c b/mm/oom_kill.c >> index 3996301450e8..b407fba21d19 100644 >> --- a/mm/oom_kill.c >> +++ b/mm/oom_kill.c >> @@ -308,7 +308,7 @@ static enum oom_constraint >> constrained_alloc(struct oom_control *oc) >> static int oom_evaluate_task(struct task_struct *task, void *arg) >> { >> struct oom_control *oc = arg; >> - long points; >> + long points = 0; >> >> if (oom_unkillable_task(task)) >> goto next; >> @@ -349,7 +349,7 @@ static int oom_evaluate_task(struct task_struct >> *task, void *arg) >> oc->chosen = task; >> oc->chosen_points = points; >> next: >> - return 0; >> + return points == LONG_MAX; >> abort: >> if (oc->chosen) >> put_task_struct(oc->chosen); >> -- >> 2.17.1 > > -- > Michal Hocko > SUSE Labs >