Received: by 2002:a25:683:0:0:0:0:0 with SMTP id 125csp481887ybg; Tue, 9 Jun 2020 05:49:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz08Ja0f8qGJEnKt0ShnPuVVL7Tm8DIJaRh/f9lCOG6ZHkP801H/7Xr+IkZ7lVtqoLYL0DG X-Received: by 2002:a17:906:d8bc:: with SMTP id qc28mr10253420ejb.167.1591706944696; Tue, 09 Jun 2020 05:49:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1591706944; cv=none; d=google.com; s=arc-20160816; b=YHS1F962v5xqwv4TyTaYaiunBRUwHs4e6Kj94blMOOC4OyoTh7yigD6eJzPDN3Ui/z DTFTWwCPIm/nHgoSN18NUBqKE5USlEIdhk0Lkujqan3wrjl7qMx2XgJZMT8HHXPo9zdv EGU6BwzUa855v9TkrWQ/LUg2mfezEUOKcWhL1yTMVPi6juMqZbptqzdRxBs2ky68NCOS v03ASdHQQwX2QRlUdIC4LsHzGAol+AeX9sy1Tm9NglBi4lpocaYvBgZ3SoRaH+SLIhEC VcAH1ScvlaKYM5KmcHQWt6OzybAf1msqaDSGk1n/baqiy1aHNi3FoDOi9XmZF1req4gE ZUPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dmarc-filter :dkim-signature; bh=14BbUKA8gwFuHIS7l3zksIQLyrm5UF4WwK4qtAEQ7i8=; b=GmvkCT9RmOON+u9BDgmdqZBfPuHjtAMlQ80ZKHc3NeEM0PWcKY88abw22j370nRU7H e5A2gUOQL/RkxXLQLuBUtMYTVFDV9SrrbTzAUk20YuVQAkWdbGiPfln+nVasB5UUksRs NN5D6Ifxa26Uz5G4M83tSx0CRVs4lVIXXPjOWUjiefR7pzimrXj6AzgDxLAhhIIs0XfA NHSWIfYj9n7CoJTqPFxpKk3oN3U3qEEdElimYC5Q8mdL00XQz4cH11Cm9KSVEgIQJPv/ eg6FasQ7v/efNGkYCgyPnyEg/wakSHdAK2NKp6RHexyhqKRomHJlYVHes1WWC3f4GJiH WGLQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@mg.codeaurora.org header.s=smtp header.b=eyGuIIOS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id gg13si10758541ejb.266.2020.06.09.05.48.41; Tue, 09 Jun 2020 05:49:04 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=fail header.i=@mg.codeaurora.org header.s=smtp header.b=eyGuIIOS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728126AbgFIK7V (ORCPT + 99 others); Tue, 9 Jun 2020 06:59:21 -0400 Received: from mail27.static.mailgun.info ([104.130.122.27]:61893 "EHLO mail27.static.mailgun.info" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726463AbgFIK7U (ORCPT ); Tue, 9 Jun 2020 06:59:20 -0400 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1591700359; h=Content-Transfer-Encoding: Content-Type: In-Reply-To: MIME-Version: Date: Message-ID: From: References: Cc: To: Subject: Sender; bh=14BbUKA8gwFuHIS7l3zksIQLyrm5UF4WwK4qtAEQ7i8=; b=eyGuIIOS2C0ShV8uazxLXHb5RkA/XJHjlbvC0FtLDNyPW3jR3m/3IReRBmjDBFgFQyZ++epf mIug425ilTimTZ0yDWJrnrl86MKH8d0rFLz158H3bxxL/yytUrIIl+fgyx8qbGJHXnMx5G7N Y+IG1QtTWL60bUNxe2I/znbT1BI= X-Mailgun-Sending-Ip: 104.130.122.27 X-Mailgun-Sid: WyI0MWYwYSIsICJsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnIiwgImJlOWU0YSJd Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n11.prod.us-west-2.postgun.com with SMTP id 5edf6b7a9545e9541f864646 (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Tue, 09 Jun 2020 10:59:06 GMT Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 0568BC43391; Tue, 9 Jun 2020 10:59:05 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-caf-mail-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=2.0 tests=ALL_TRUSTED,SPF_NONE, URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from [192.168.1.102] (unknown [183.83.143.239]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: charante) by smtp.codeaurora.org (Postfix) with ESMTPSA id 24780C433CA; Tue, 9 Jun 2020 10:59:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org 24780C433CA Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=none smtp.mailfrom=charante@codeaurora.org Subject: Re: [PATCH] mm, page_alloc: skip ->waternark_boost for atomic order-0 allocations To: Andrew Morton , mgorman@suse.de, mhocko@kernel.org, minchan@kernel.org Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, vinmenon@codeaurora.org References: <1589882284-21010-1-git-send-email-charante@codeaurora.org> <20200604144347.7804bc81bbd6dd3027a1cb10@linux-foundation.org> From: Charan Teja Kalla Message-ID: Date: Tue, 9 Jun 2020 16:29:00 +0530 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.9.0 MIME-Version: 1.0 In-Reply-To: <20200604144347.7804bc81bbd6dd3027a1cb10@linux-foundation.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Adding more people to get additional reviewer inputs. On 6/5/2020 3:13 AM, Andrew Morton wrote: > On Tue, 19 May 2020 15:28:04 +0530 Charan Teja Reddy wrote: > >> When boosting is enabled, it is observed that rate of atomic order-0 >> allocation failures are high due to the fact that free levels in the >> system are checked with ->watermark_boost offset. This is not a problem >> for sleepable allocations but for atomic allocations which looks like >> regression. >> >> This problem is seen frequently on system setup of Android kernel >> running on Snapdragon hardware with 4GB RAM size. When no extfrag event >> occurred in the system, ->watermark_boost factor is zero, thus the >> watermark configurations in the system are: >> _watermark = ( >> [WMARK_MIN] = 1272, --> ~5MB >> [WMARK_LOW] = 9067, --> ~36MB >> [WMARK_HIGH] = 9385), --> ~38MB >> watermark_boost = 0 >> >> After launching some memory hungry applications in Android which can >> cause extfrag events in the system to an extent that ->watermark_boost >> can be set to max i.e. default boost factor makes it to 150% of high >> watermark. >> _watermark = ( >> [WMARK_MIN] = 1272, --> ~5MB >> [WMARK_LOW] = 9067, --> ~36MB >> [WMARK_HIGH] = 9385), --> ~38MB >> watermark_boost = 14077, -->~57MB >> >> With default system configuration, for an atomic order-0 allocation to >> succeed, having free memory of ~2MB will suffice. But boosting makes >> the min_wmark to ~61MB thus for an atomic order-0 allocation to be >> successful system should have minimum of ~23MB of free memory(from >> calculations of zone_watermark_ok(), min = 3/4(min/2)). But failures are >> observed despite system is having ~20MB of free memory. In the testing, >> this is reproducible as early as first 300secs since boot and with >> furtherlowram configurations(<2GB) it is observed as early as first >> 150secs since boot. >> >> These failures can be avoided by excluding the ->watermark_boost in >> watermark caluculations for atomic order-0 allocations. > > Do we have any additional reviewer input on this one? > >> --- a/mm/page_alloc.c >> +++ b/mm/page_alloc.c >> @@ -3709,6 +3709,18 @@ static bool zone_allows_reclaim(struct zone *local_zone, struct zone *zone) >> } >> >> mark = wmark_pages(zone, alloc_flags & ALLOC_WMARK_MASK); >> + /* >> + * Allow GFP_ATOMIC order-0 allocations to exclude the >> + * zone->watermark_boost in its watermark calculations. >> + * We rely on the ALLOC_ flags set for GFP_ATOMIC >> + * requests in gfp_to_alloc_flags() for this. Reason not to >> + * use the GFP_ATOMIC directly is that we want to fall back >> + * to slow path thus wake up kswapd. >> + */ >> + if (unlikely(!order && !(alloc_flags & ALLOC_WMARK_MASK) && >> + (alloc_flags & (ALLOC_HARDER | ALLOC_HIGH)))) { >> + mark = zone->_watermark[WMARK_MIN]; >> + } >> if (!zone_watermark_fast(zone, order, mark, >> ac->highest_zoneidx, alloc_flags)) { >> int ret; > > It would seem smart to do > > --- a/mm/page_alloc.c~mm-page_alloc-skip-waternark_boost-for-atomic-order-0-allocations-fix > +++ a/mm/page_alloc.c > @@ -3745,7 +3745,6 @@ retry: > } > } > > - mark = wmark_pages(zone, alloc_flags & ALLOC_WMARK_MASK); > /* > * Allow GFP_ATOMIC order-0 allocations to exclude the > * zone->watermark_boost in their watermark calculations. > @@ -3757,6 +3756,8 @@ retry: > if (unlikely(!order && !(alloc_flags & ALLOC_WMARK_MASK) && > (alloc_flags & (ALLOC_HARDER | ALLOC_HIGH)))) { > mark = zone->_watermark[WMARK_MIN]; > + } else { > + mark = wmark_pages(zone, alloc_flags & ALLOC_WMARK_MASK); > } > if (!zone_watermark_fast(zone, order, mark, > ac->highest_zoneidx, alloc_flags)) { > > but that makes page_alloc.o 16 bytes larger, so I guess don't bother. > -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project