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 ED94FC36014 for ; Tue, 1 Apr 2025 14:01:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C1AA2280003; Tue, 1 Apr 2025 10:01:09 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BA1E3280001; Tue, 1 Apr 2025 10:01:09 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A448A280003; Tue, 1 Apr 2025 10:01:09 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 8129B280001 for ; Tue, 1 Apr 2025 10:01:09 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 0F3BB560D4 for ; Tue, 1 Apr 2025 14:01:10 +0000 (UTC) X-FDA: 83285636700.04.0D9B786 Received: from tor.source.kernel.org (tor.source.kernel.org [172.105.4.254]) by imf10.hostedemail.com (Postfix) with ESMTP id 4613FC0016 for ; Tue, 1 Apr 2025 14:01:08 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=PVaWvAtX; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf10.hostedemail.com: domain of kees@kernel.org designates 172.105.4.254 as permitted sender) smtp.mailfrom=kees@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1743516068; a=rsa-sha256; cv=none; b=gX8lrPPULknbLOS2Ey9HR+bhKPVSOCFFDse01L0GN3o7rq4n9WwlvoEkjo607hhSQB4Upr AF3YlhFdDa7c92gmmt5/Y52yc/oXHWhbnP4i4W7l2VhUW/pivA2TwsXxzDuKIyJi/lmfz9 5Qlv6SFU+XSsgczOiNURI1q+y1tg+pc= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=PVaWvAtX; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf10.hostedemail.com: domain of kees@kernel.org designates 172.105.4.254 as permitted sender) smtp.mailfrom=kees@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1743516068; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=sHgdcTrWq28s2zDRwqPpTmtqld498wheDqUVaCMkF64=; b=k4fF5EzqYLI3Skw7oHSCvErd7NVFkjJe0ryrVbYBC6N2rSRHKQ06hEsowCezsRClhy3gOr gjrd47cdrw3XrBuk60iMSD7wQlYCiSvEVA1v2IAxzlYwN3oeKNexwUHWt0hfU8krYGpdot rpIz4Npc0soVvX6+D8XeXCwJmnPN9p4= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id BF9676112E; Tue, 1 Apr 2025 14:01:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0B840C4CEE4; Tue, 1 Apr 2025 14:01:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1743516067; bh=OZal3L7mtXEder/H6CrdBAslI+LzGs7YCRqR7XqIJ0I=; h=Date:From:To:CC:Subject:In-Reply-To:References:From; b=PVaWvAtXXIQZkeYWCOq//UgHRMDvzmQc3DehzBvwNwjIv1+6KFa5EI2+zipoVSLsN I6DV7DjmmjRCDsHK1fTU4z+a3eb7OltU0DCuN4kj2fv83QRev6MdUKZ7ahyazZGKva VzCfxDZVmkyDM0jj1CF96rRNavhbTVGnoGMqlmRWhGf9Okw5JZPOUYG5Dg8i8Idze7 8irxkcJixXmxZ1c4IRgNn2bK0TkVmwWSUTI4HzqZZGe+lMmTEfbKzG8lNyYFx2zgwX iSqdgwfHTBirqpwMC8phRvTIY2DubJSIysXgQZ/DMrHc4pjDCDjxuqORFZxYNMnh7d NVbpiP5T4oDAQ== Date: Tue, 01 Apr 2025 07:01:04 -0700 From: Kees Cook To: Yafang Shao , joel.granados@kernel.org CC: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, Josef Bacik , linux-mm@kvack.org Subject: =?US-ASCII?Q?Re=3A_=5BPATCH=5D_proc=3A_Avoid_costly_high-order?= =?US-ASCII?Q?_page_allocations_when_reading_proc_files?= User-Agent: K-9 Mail for Android In-Reply-To: <20250401073046.51121-1-laoar.shao@gmail.com> References: <20250401073046.51121-1-laoar.shao@gmail.com> Message-ID: <3315D21B-0772-4312-BCFB-402F408B0EF6@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 4613FC0016 X-Stat-Signature: k1inwyyyepxp95awa16cntc67ywcgqpy X-Rspam-User: X-Rspamd-Server: rspam06 X-HE-Tag: 1743516068-809739 X-HE-Meta: U2FsdGVkX19ABsgQjQpzqKORyIed0+iCJMN24XF7GSqDiTrwUJy/wmu9lw9XZtF+H+XFey44tZixqDs15OFqAcuLb1egD8VKVjn33G6jXHriFOTrCCyhRbImFcIOSLnnlUhkL4b47M7TSD4dEI9/4HAOEGcveIPLFpCmEk2yfX0ILHCWlsIdnowgSIXF9tqh57qDExrETUUlen3TtHQgs4/fOZrWA74k65MXsuHaLevDhtg9F9XIrhMRm0ANlFw7pXR3EcZX/z/IcQNon8Vvwm+S1egYJsqqJ5Eg/9yflMRMmKsD3XKYjIrpG83YZmAPNBL4a/j4QnxBA5yT/YLkYN3LKuct7WkjvZ3lht+qQMY3GQemUXeSOGuWS3moCP381TSDUcgM1oMgDJhlQulW/K5Ssm1C2tQxWJBS5X6feYO+B5eX7AvYYosfyPI2mBybZ5iCBa92I6J/Om8IPD9I0+SnkftmAp3b+24Tito2QDb/YJLuvZC7bI2ahzelzVi13eoyJUiH7OmSBVw2p0fJhrMnm94N0Dowts0iDzwLyRLRv1ULpmGL8m9MydJnHHx4yPgEPhWIISU+NhWpGQaeUXTSua+RO5t/6RXGqtaYGijAu+iXjjKz1Xs2l9a3Ei5euvpRS+XPW5RFLJgH4pVkFnUif2QVEss69ZHzMnv159OuKSbePDRslXrYEsTpPIG9pMd2JU4nwMuUJAUIHGxl9XyoEXzacoFgWro2VzKB1p4kWYGx7WaIIHLwIWyY8HiGLs2A9POZWgNuYIg8hItAMbLhawgDdrbtuY609r5GwCzxLacEUImxlPuDkkWl1YhjbT3Or7vcod48iADwTsRkvefg3fnFnUAjcbNlZs3Moolq4SxYhwB9KUXC+9ZIj0xeUV4p3glAFs/jvELxoYrlG6JwjUti4sruPaOO8PZZ7ZscGpgW9m+02NbyXuo2Rz/zrhlM7fLyssJ6EHnjwTU 6X9CJ0Qq JJCjE92mCCxhLKyOuzMPptAcIYKuiPETVUgFxeSU+G5w9nolfOGickYaZkIKl+C9OAIFk1dDiht9DoeWWaKj3PBM6lGClHIUo87rSCDT1a+r+c02JaLLSTtEkEeCv7h2WFu+adNS4T92qK0qy6EVQFyB7go2h9MeCis6asTgbtGlx38XrzIc/St6nA49samaHfpteF/YNjHl+l6JeatOt2qUQt6AZgPh4eqm93M2Ht4PBzqWC7f5ac4Tv7ULSW0saKDOYWGMnLptGnhYk87iZrmCJGZWnZN8jC+fB6LHO1jTVixxioeB8ezu19vlsQ2cFvlBzBC+JBWG1GajRoEVcaIWBTU3AyrbRdAb3vdZrznsnEaLFmue20kvK8y33vFV/9Pd+QgWON4B2CDGKq+Dod+smTtBmmaoXVYiS//lt6M9zgG3C3SgNX6L5VQ== 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: List-Subscribe: List-Unsubscribe: On April 1, 2025 12:30:46 AM PDT, Yafang Shao w= rote: >While investigating a kcompactd 100% CPU utilization issue in production,= I >observed frequent costly high-order (order-6) page allocations triggered = by >proc file reads from monitoring tools=2E This can be reproduced with a si= mple >test case: > > fd =3D open(PROC_FILE, O_RDONLY); > size =3D read(fd, buff, 256KB); > close(fd); > >Although we should modify the monitoring tools to use smaller buffer size= s, >we should also enhance the kernel to prevent these expensive high-order >allocations=2E > >Signed-off-by: Yafang Shao >Cc: Josef Bacik >--- > fs/proc/proc_sysctl=2Ec | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > >diff --git a/fs/proc/proc_sysctl=2Ec b/fs/proc/proc_sysctl=2Ec >index cc9d74a06ff0=2E=2Ec53ba733bda5 100644 >--- a/fs/proc/proc_sysctl=2Ec >+++ b/fs/proc/proc_sysctl=2Ec >@@ -581,7 +581,15 @@ static ssize_t proc_sys_call_handler(struct kiocb *i= ocb, struct iov_iter *iter, > error =3D -ENOMEM; > if (count >=3D KMALLOC_MAX_SIZE) > goto out; >- kbuf =3D kvzalloc(count + 1, GFP_KERNEL); >+ >+ /* >+ * Use vmalloc if the count is too large to avoid costly high-order pag= e >+ * allocations=2E >+ */ >+ if (count < (PAGE_SIZE << PAGE_ALLOC_COSTLY_ORDER)) >+ kbuf =3D kvzalloc(count + 1, GFP_KERNEL); Why not move this check into kvmalloc family? >+ else >+ kbuf =3D vmalloc(count + 1); You dropped the zeroing=2E This must be vzalloc=2E > if (!kbuf) > goto out; >=20 Alternatively, why not force count to be PAGE_SIZE = writes in proc/sys? -Kees --=20 Kees Cook