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 A07AEC47422 for ; Fri, 26 Jan 2024 09:29:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1C5676B00A7; Fri, 26 Jan 2024 04:29:14 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 1748C6B00B6; Fri, 26 Jan 2024 04:29:14 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 03C206B00BF; Fri, 26 Jan 2024 04:29:13 -0500 (EST) 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 E3F426B00A7 for ; Fri, 26 Jan 2024 04:29:13 -0500 (EST) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 864531A04DB for ; Fri, 26 Jan 2024 09:29:13 +0000 (UTC) X-FDA: 81720938586.09.D58D568 Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) by imf02.hostedemail.com (Postfix) with ESMTP id AE42E8000E for ; Fri, 26 Jan 2024 09:29:11 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=D2G9GM7Z; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf02.hostedemail.com: domain of huangzhaoyang@gmail.com designates 209.85.167.52 as permitted sender) smtp.mailfrom=huangzhaoyang@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1706261351; 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=fkuT80Nd2CrCGFE0QyltfIZ25KKAHv/Lip39TXBqmQk=; b=7Gggu4k+iwNWGpnYcf5GEfLBQCC8KhK1o6jwZNsrSEsl42vexfbz+7xDuBzb01YbRlRLxv rSY4lzLTAzttw5ifKqSfojgOAoMbFUHbZ/FdKFp4MFPaTeiPhyy4yah738LaG5MSLavXI0 ghuvga8oLpNUclpti3bG18SjYG9M9Eo= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=D2G9GM7Z; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf02.hostedemail.com: domain of huangzhaoyang@gmail.com designates 209.85.167.52 as permitted sender) smtp.mailfrom=huangzhaoyang@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1706261351; a=rsa-sha256; cv=none; b=5tNY8Pa+zJjM54PxoMyO2wfLdUI5RSx1n5itzU/tphm2GVuY6D6aYcJcoGKgZmXsBlRAam KWZMPKjpfKMREM9WBdXAgOofMEzZ3w8dGx4PEaShzmyosiTf1JQDixu7+BCJ4HgbyYoD2D 0A/sm1YDA0oX3nmaQJvzn3JSGScwSO0= Received: by mail-lf1-f52.google.com with SMTP id 2adb3069b0e04-50f11e3ba3aso265412e87.1 for ; Fri, 26 Jan 2024 01:29:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706261350; x=1706866150; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=fkuT80Nd2CrCGFE0QyltfIZ25KKAHv/Lip39TXBqmQk=; b=D2G9GM7ZXP3baHproSBdLhrFRMTWaL6OhfCdCfbTa9bllGK4k/Xfq495lXA20PCOQz NE+htD80zC3sNIWKxQiVxyPBEVgSTtnDkwDvUFj2YMOU9XTDkMx/X/7TGE67C1gyyxfi ow4pj92jIDfkNaN+OLH1/9rB8VBNaV09tLGfx4iU1wN4ceHKInR5Ltv/lZ6l3TjeZvtR Odk1NZkTocLRsFle3/ErYgkRTLpcipSrx8m3IBguU/KiY7j0RJL3+af1S2iFZwxr1ZhZ Nl5kTVVtrywxWPlx+c5ickBoFTpAUcEwHPSl6maTzm8M0cPbiyV0a7KggN16eK22FYTZ 8A3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706261350; x=1706866150; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fkuT80Nd2CrCGFE0QyltfIZ25KKAHv/Lip39TXBqmQk=; b=sTw5U+7yvXZ09xmVUJAzkmP4CgxOR1xc0l9sukPmRlUDfMtb8uI6NRrjg6eILXTclP /6xQEbYV8swCuLUNlAA8mHTlTGxKOD0FFDGINS4cWqNIPK8QVOCVLY8/px0riPZal5/Z ezPzAp9dWoz1+0rFOBTewKbeQ6X0iZva0e3LP0Bm/DAXxCSie4Xi83Sf5NeuAImf6iQK vaXaQzOIMQx67nEuTCZcX5PBVvG7UcTMYsxuOYj5P3acQ+BChTJmBwoPEttGyE96lr5o PY7fxFAycdq3CqgCxtf8GVJK9XywyAr1X4MJKpe8WdHLZUB/emPxsqeKGUs7Ou5BJt+6 Q5oA== X-Gm-Message-State: AOJu0Yx+k1VLg3nBCl7aqCnzPCLercYVOhpilEEtyoZ3ASTtR/CUbRtC MHO40UN1b6AfxJipZrlN+TyHR10lxRhOnQDF4DjakEah0DMuUvhOgqlwFOIGMDigmeTo1R2TyYB whJmVsFqYo9n9cgV9sy9zLE3NJuA= X-Google-Smtp-Source: AGHT+IHV6gJ2ig0SHMuOTHGQ+PLhYhpTaXEWeuYlswOgs1YTMiZiy85Ixu1kYbFdpgt0BVJ8+WbJ4vEwQODjQvUsc68= X-Received: by 2002:a05:6512:31d1:b0:50e:aa04:b2eb with SMTP id j17-20020a05651231d100b0050eaa04b2ebmr1762991lfe.42.1706261349518; Fri, 26 Jan 2024 01:29:09 -0800 (PST) MIME-Version: 1.0 References: <20240125071901.3223188-1-zhaoyang.huang@unisoc.com> In-Reply-To: From: Zhaoyang Huang Date: Fri, 26 Jan 2024 17:28:58 +0800 Message-ID: Subject: Re: [PATCHv3 1/1] block: introduce content activity based ioprio To: Matthew Wilcox Cc: "zhaoyang.huang" , Alexander Viro , Christian Brauner , linux-fsdevel@vger.kernel.org, Andrew Morton , Jens Axboe , Yu Zhao , Damien Le Moal , Niklas Cassel , "Martin K . Petersen" , Hannes Reinecke , Linus Walleij , linux-mm@kvack.org, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, steve.kang@unisoc.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: AE42E8000E X-Stat-Signature: 3o8xpopf8bo638y7snkh9wdn116p4ykb X-HE-Tag: 1706261351-273911 X-HE-Meta: U2FsdGVkX19FzpyghGPCyaTL5Uz9tPd71mrIS+hW83CtK2mpku5+a3s80AJOZpeaR6Wn7VUprMPpxkyl3nHvR/CIMsiDPiJIW5WWY+QvSZ+aGr3/nygGtwnXOTdujcpkwmjAGgg6WIOuXY1mpszanidF6cwkwf5jySWe7HctfvHdJuhMF/+SfpbjhkWPb1BnjPZoT657Rq7j3LgOTYOR1kNrLe8ks0g8IXD+pQOyKD0AwdwhDPcAz4DPp5bhYweaFzXXG2iIjgNzIXd1L2rE3Cq7Aiv1gd45eon+x+wNQAQNGOhmSLpNxTpc5Qdn3lG6hmmkgz1SzsXDv7z+SSPvycli5UUSy4FIuvWchclVSJlwA6FnM+ba8XehBEFMRjvJKgb8gWE4VUlh3ZlUGROvWRJy8v4QvUk67wRslnC/XqLYfIL2wBWFvlf2Avuy4m4Bu+bD9hY2mu0lEGt5K99auM3w8jqEIg/FGml+/J835v14n88TPw7QB4BWa0lEKHemqsfh+Vl8MCtd91KIRRxj5CxICBGM9JiMqSQfva6ZRSWFgAeKd2rs7BTpIWGU4qfo6+EHhyOnT/jykJoX1mEZet6q5leg8d9CwhMwIlwezzOXyLgmPK89dPNDxgI8GcCeJljr6imZ6MdNm4mxtsb9mKN/Bhi9sqR9GceB+BqGpinEq+i88mPrwRgVknMSMHvHxGtdXF30EthNboRFP0wpMesbgP5Al22z5YQQENfANKTOkBGjJlWPocvGwTfBTarPi0TLVPEiJ8Obw2VNHc6Wg481kVjvOcp5r/vVlmyHj3s1YPRfloREFdiBSV6IpTzTissz7IAu+3pgyKmH4soO+Emtk4vxJstnP626A9DS6twqyZuH7+DFzDXQ98pE8/FyMmNsx/pxj5ftg2fhZlD+b+xWhJvtBKfny2ggI/U3q+sYlWqBjBULv6VvCDfTQ7jyg2Hy44XvMs6Yh6+txOw soju2sgy FptaIZwDZCfwmUHudU7Q91Y1l1Oy37mLN1ALCPlZayxo4Gn57HlDABDnB9DMa6dw8c1aIkA2M2xKJKQYuWgb3uhCDyirApttzfn3J2uYaA/Jfu3df9XhF2SkR+IuXWsBdTlG3y+/qg9Ss0YACEqpDNYB8OwDydo8IM1pM7oY4tXJV26p3W4TBh+zVlaTp3DUmowu2JiQgDraXHQUru6tWy2wfKyPHpnRljpcSutWLr6nAdSt6gdGBJOJcGfCo5pl3qktjf83g2OlAWCTiUGGNdlOD5YPeN+rc4UOy5dau6fSI2oB8TRVAPmKj6aAVlQ9mAbV0HCV2S15QwkC/E5Qc5pwJvam64sSlCiAAy2u+92fNEHIsCEG7gkR+ZxxmlcW8ejyL6n1oCSZQT5uoxo2dkO6X7eNZiePAFISJ 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 Fri, Jan 26, 2024 at 4:55=E2=80=AFPM Matthew Wilcox wrote: > > On Fri, Jan 26, 2024 at 03:59:48PM +0800, Zhaoyang Huang wrote: > > loop more mm and fs guys for more comments > > I agree with everything Damien said. But also ... ok, I will find a way to solve this problem. > > > > +bool BIO_ADD_FOLIO(struct bio *bio, struct folio *folio, size_t len, > > > + size_t off) > > You don't add any users of these functions. It's hard to assess whether > this is the right API when there are no example users. Actually, the code has been tested on ext4 and f2fs by patchv2 on a v6.6 6GB android system where I get the test result posted on the commit message. These APIs is to keep block layer clean and wrap things up for fs. > > > > + activity +=3D (bio->bi_vcnt + 1 <=3D IOPRIO_NR_ACTIVITY && > > > + PageWorkingset(&folio->page)) ? 1 : 0; > > folio_test_workingset(). > > > > + return bio_add_page(bio, &folio->page, len, off) > 0; > > bio_add_folio(). > > > > +int BIO_ADD_PAGE(struct bio *bio, struct page *page, > > > + unsigned int len, unsigned int offset) > > > +{ > > > + int class, level, hint, activity; > > > + > > > + if (bio_add_page(bio, page, len, offset) > 0) { > > > + class =3D IOPRIO_PRIO_CLASS(bio->bi_ioprio); > > > + level =3D IOPRIO_PRIO_LEVEL(bio->bi_ioprio); > > > + hint =3D IOPRIO_PRIO_HINT(bio->bi_ioprio); > > > + activity =3D IOPRIO_PRIO_ACTIVITY(bio->bi_ioprio); > > > + activity +=3D (bio->bi_vcnt <=3D IOPRIO_NR_ACTIVITY &= & PageWorkingset(page)) ? 1 : 0; > > > + bio->bi_ioprio =3D IOPRIO_PRIO_VALUE_ACTIVITY(class, = level, hint, activity); > > > + } > > why are BIO_ADD_PAGE and BIO_ADD_FOLIO so very different from each > other? These two API just repeat the same thing that bio_add_page and bio_add_folio do. > > > > static __always_inline __u16 ioprio_value(int prioclass, int priolev= el, > > > - int priohint) > > > + int priohint) > > why did you change this whitespace? > > > > { > > > if (IOPRIO_BAD_VALUE(prioclass, IOPRIO_NR_CLASSES) || > > > - IOPRIO_BAD_VALUE(priolevel, IOPRIO_NR_LEVELS) || > > > - IOPRIO_BAD_VALUE(priohint, IOPRIO_NR_HINTS)) > > > + IOPRIO_BAD_VALUE(priolevel, IOPRIO_NR_LEVELS)= || > > > + IOPRIO_BAD_VALUE(priohint, IOPRIO_NR_HINTS)) > > ditto These white spaces are trimmed by vim, I will change them back in next vers= ion. > > > > return IOPRIO_CLASS_INVALID << IOPRIO_CLASS_SHIFT; > > > > > > return (prioclass << IOPRIO_CLASS_SHIFT) | > > > (priohint << IOPRIO_HINT_SHIFT) | priolevel; > > > } > > > - > > more gratuitous whitespace change >