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 X-Spam-Level: X-Spam-Status: No, score=-4.2 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, FSL_HELO_FAKE,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2B4F0C3F2D1 for ; Mon, 2 Mar 2020 19:18:35 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id E4A3620842 for ; Mon, 2 Mar 2020 19:18:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Zx8s5Bg2" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E4A3620842 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 763AB6B0003; Mon, 2 Mar 2020 14:18:34 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 714026B0005; Mon, 2 Mar 2020 14:18:34 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 627EB6B0006; Mon, 2 Mar 2020 14:18:34 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0031.hostedemail.com [216.40.44.31]) by kanga.kvack.org (Postfix) with ESMTP id 4862E6B0003 for ; Mon, 2 Mar 2020 14:18:34 -0500 (EST) Received: from smtpin09.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 06D6F8248068 for ; Mon, 2 Mar 2020 19:18:34 +0000 (UTC) X-FDA: 76551383706.09.chain37_67d567dbe0035 X-HE-Tag: chain37_67d567dbe0035 X-Filterd-Recvd-Size: 7254 Received: from mail-pj1-f66.google.com (mail-pj1-f66.google.com [209.85.216.66]) by imf06.hostedemail.com (Postfix) with ESMTP for ; Mon, 2 Mar 2020 19:18:33 +0000 (UTC) Received: by mail-pj1-f66.google.com with SMTP id s8so209416pjq.0 for ; Mon, 02 Mar 2020 11:18:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=0tzGafxyUv+AX08DrZkYz0Ukezlffh99B/TMiusLDeM=; b=Zx8s5Bg2AJS95f8mLPJp4QwT65ICHpJ9wSrGeIAgMiFDeVyuAQ2LrOtVYT0Uy4EP+T f2of3DZSr36IwJs/rNHhgKhCj7u9+ZTy9GYMW3pe6+F9gdV7HBeexJlrLOcibpEGbazE A2W8Bi6lIrxu3VbU5cvslutujRzDd19elWLd096iskX7ebJmssBR/8oZLe2kqpHaTfIF XOJFcNWJBVe1CFAVRjGDKwHBYytTBxaWMtiUJisrzjFgy01EKI6JnEXt6xLYj6jO4onK p1LbDtSvCGDxko/cbpxB03Ig9Owxs9XqTr4KYiyQd7UztQCPs367uv+VJzPw4uPM0B0D DoWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition:in-reply-to:user-agent; bh=0tzGafxyUv+AX08DrZkYz0Ukezlffh99B/TMiusLDeM=; b=iKI/Xd4Aa5Bozsiw4zc+KDJx56xqxnPr7AvBlrsdLb7/WZIg8TTsvb+7cTCFbufT6Y v/u0cwLOozTHYno20qfZd4Cz+GXcAk+DFZKhkfQ7Tf6zpjIJ/mAr2iwSd8M9z/Fq/Z1G suBEAs7+jq6qq9t92g5UDaAsNvYuBY2CxPCAbHuSyT/RCCuFpZtTpBGktlac6GlFGtVT Uazw+sHnjL4kWMzdwdfIgo1xaTZ+1bLfd8dbkCOrV7A97Nr21XFMILZIzk6U7BX4IcRR 3BNryz5MMjDAFmM7b+mNee2EumuQwQB/occpSU9gYz6g2zffrY2Q5ladPfHedRaCVtPc 0IxA== X-Gm-Message-State: ANhLgQ3H7Y6rl2z1vK/QRxMj6dLLUk2A/YZjI1o7Ere4kRkdk0qjJvcJ 80GN+LBD2BvcBPcvXHrsEYs= X-Google-Smtp-Source: ADFU+vv5YyRdbG8XTDrAFP8c/l1X9NzQSoHH3jxBCDln/htZj+UEpelmxtLk+mulsM7PjoLo385JEg== X-Received: by 2002:a17:90a:9908:: with SMTP id b8mr410083pjp.93.1583176712177; Mon, 02 Mar 2020 11:18:32 -0800 (PST) Received: from google.com ([2620:15c:211:1:3e01:2939:5992:52da]) by smtp.gmail.com with ESMTPSA id e12sm6231858pff.168.2020.03.02.11.18.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2020 11:18:30 -0800 (PST) Date: Mon, 2 Mar 2020 11:18:28 -0800 From: Minchan Kim To: Suren Baghdasaryan Cc: kbuild test robot , Andrew Morton , kbuild-all@lists.01.org, Linux Memory Management List Subject: Re: [PATCH v6 2/7] mm: introduce external memory hinting API Message-ID: <20200302191828.GA234476@google.com> References: <20200219014433.88424-3-minchan@kernel.org> <202002210332.t4nZu8oC%lkp@intel.com> <20200220211510.GA226145@google.com> <20200220212135.GB226145@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.12.2 (2019-09-21) 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: On Fri, Feb 28, 2020 at 02:14:56PM -0800, Suren Baghdasaryan wrote: < snip > > > > diff --git a/mm/madvise.c b/mm/madvise.c > > > index f75c86b6c463..f29155b8185d 100644 > > > --- a/mm/madvise.c > > > +++ b/mm/madvise.c > > > @@ -17,6 +17,7 @@ > > > #include > > > #include > > > #include > > > +#include > > > #include > > > #include > > > #include > > > @@ -986,6 +987,18 @@ madvise_behavior_valid(int behavior) > > > } > > > } > > > > > > +static bool > > > +process_madvise_behavior_valid(int behavior) > > > +{ > > > + switch (behavior) { > > > + case MADV_COLD: > > > + case MADV_PAGEOUT: > > > + return true; > > > + default: > > > + return false; > > > + } > > > +} > > > + > > > /*/ > > > * The madvise(2) system call. > > > * > > > @@ -1033,6 +1046,11 @@ madvise_behavior_valid(int behavior) > > > * MADV_DONTDUMP - the application wants to prevent pages in the given range > > > * from being included in its core dump. > > > * MADV_DODUMP - cancel MADV_DONTDUMP: no longer exclude from core dump. > > > + * MADV_COLD - the application uses the memory less so the kernel can > > "kernel can" implies that kernel might not deactivate the pages, which > IIUC is not the case. Maybe rephrase as "MADV_COLD - the application > is not expected to use this memory soon, deactivate pages in this > range so that they can be reclaimed easily if memory pressure > happens."" That is much better. > > > > + * deactivate the memory to evict them quickly when the memory > > > + * pressure happen. > > > + * MADV_PAGEOUT - the application uses the memroy very rarely so kernel can > > s/memroy/memory Fixed. > > > > + * page out the memory instantly. > > same nit about the usage of "kernel can". Maybe rephrase as > "MADV_PAGEOUT - the application is not expected to use this memory > soon, page out the pages in this range immediately."" Yub. > > > > * > > > * return values: > > > * zero - success > > > @@ -1150,3 +1168,49 @@ SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior) > > > { > > > return do_madvise(current, current->mm, start, len_in, behavior); > > > } > > > + > > > +SYSCALL_DEFINE5(process_madvise, int, pidfd, unsigned long, start, > > > + size_t, len_in, int, behavior, unsigned long, flags) > > > +{ > > > + int ret; > > > + struct fd f; > > > + struct pid *pid; > > > + struct task_struct *task; > > > + struct mm_struct *mm; > > > + > > > + if (flags != 0) > > > + return -EINVAL; > > > + > > > + if (!process_madvise_behavior_valid(behavior)) > > > + return -EINVAL; > > > + > > > + f = fdget(pidfd); > > > + if (!f.file) > > > + return -EBADF; > > > + > > > + pid = pidfd_pid(f.file); > > > + if (IS_ERR(pid)) { > > > + ret = PTR_ERR(pid); > > > + goto fdput; > > > + } > > > + > > > + task = get_pid_task(pid, PIDTYPE_PID); > > > + if (!task) { > > > + ret = -ESRCH; > > > + goto fdput; > > > + } > > > + > > > + mm = mm_access(task, PTRACE_MODE_ATTACH_FSCREDS); > > > + if (IS_ERR_OR_NULL(mm)) { > > > + ret = IS_ERR(mm) ? PTR_ERR(mm) : -ESRCH; > > > + goto release_task; > > > + } > > > + > > > + ret = do_madvise(task, mm, start, len_in, behavior); > > > + mmput(mm); > > > +release_task: > > > + put_task_struct(task); > > > +fdput: > > > + fdput(f); > > > + return ret; > > > +} > > > -- > > > 2.25.0.265.gbab2e86ba0-goog > > > > > > > Reviewed-by: Suren Baghdasaryan Thanks, Suren!