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 DBD7CEB64D7 for ; Fri, 23 Jun 2023 10:49:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6882F8D0002; Fri, 23 Jun 2023 06:49:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6374E8D0001; Fri, 23 Jun 2023 06:49:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 526278D0002; Fri, 23 Jun 2023 06:49:32 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 40F548D0001 for ; Fri, 23 Jun 2023 06:49:32 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 0CD7DB0B5C for ; Fri, 23 Jun 2023 10:49:32 +0000 (UTC) X-FDA: 80933691384.16.B68054E Received: from mx.sberdevices.ru (mx.sberdevices.ru [45.89.227.171]) by imf14.hostedemail.com (Postfix) with ESMTP id D9A99100008 for ; Fri, 23 Jun 2023 10:49:26 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=sberdevices.ru header.s=mail header.b=P11jX83O; spf=pass (imf14.hostedemail.com: domain of AVRomanov@sberdevices.ru designates 45.89.227.171 as permitted sender) smtp.mailfrom=AVRomanov@sberdevices.ru; dmarc=pass (policy=quarantine) header.from=sberdevices.ru ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1687517369; a=rsa-sha256; cv=none; b=P2PFdqB4esax6RgVi4AMp4ZDlQXyP8tV2+bwcSdrn2mW4DMuPzZGPyal1Zik/c1mzg308b wdHlRcLYdA9vAc0jI7eeDjA4HcOlvQRuy5RbwUqufBpxf/8/OzqHDGpSxI7PoY49fyvIzE RmkvV882Hdrxo8gWUMYPX8FeFcjFTi0= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=sberdevices.ru header.s=mail header.b=P11jX83O; spf=pass (imf14.hostedemail.com: domain of AVRomanov@sberdevices.ru designates 45.89.227.171 as permitted sender) smtp.mailfrom=AVRomanov@sberdevices.ru; dmarc=pass (policy=quarantine) header.from=sberdevices.ru ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1687517369; 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=o7SjNQ7Zf16HDqlpdkyqkg/PUSUWOCHMtcBhIcmmOgA=; b=Cx0FtgRwmyvFU+pWRfTdl07Z8oxkUuQdbbTH+LR6U2f+5FAJf5ujJ+T9+VPEIEeR0Fh00b ep88gy+k862b/t1SYEXUeN6AgmrihyQY+3ejf6EaoTAv1h36/lRlJwvBPqRCgA8EQqUKTe ymbcQkq2cXQAJkZL00c1UbIJ582hlUA= Received: from s-lin-edge02.sberdevices.ru (localhost [127.0.0.1]) by mx.sberdevices.ru (Postfix) with ESMTP id CF7595FDBC; Fri, 23 Jun 2023 13:49:24 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sberdevices.ru; s=mail; t=1687517364; bh=o7SjNQ7Zf16HDqlpdkyqkg/PUSUWOCHMtcBhIcmmOgA=; h=From:To:Subject:Date:Message-ID:Content-Type:MIME-Version; b=P11jX83O8gNbA0Dr4PFeIxgAX0AsZHK+QVw6K0usllJ7rSokxuxvnElJtCaF4gsX8 JqjJN9f0hXhbA5gjfxqgna4I/pmqZx92FE1VCP1zS18DeqvKxfbuesXLfBoxQiixNz 97CmQwG6CS1Cg7HR83UptoVQDagLTywV0i+psegwvZl2Y002P60pTP1NFVUWkkHTxU gimafgcIIrKbcTYzcUv/rRw5Jvg24ux9/QBWmfhVdEJSs4X/It/lxn/D0Zl1O2Euwf JjCoIzByvm3TUlRKbF14VrlBHzEnWaiyvg4aI67PA1eoTFCrQiJ9it8Z+Z0rkPCyPX 5AzfT5fH/JBPg== Received: from p-i-exch-sc-m02.sberdevices.ru (p-i-exch-sc-m02.sberdevices.ru [172.16.192.103]) by mx.sberdevices.ru (Postfix) with ESMTP; Fri, 23 Jun 2023 13:49:23 +0300 (MSK) From: Alexey Romanov To: Sergey Senozhatsky CC: Minchan Kim , Andrew Morton , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" Subject: Re: [PATCH 1/2] zsmalloc: do not scan for allocated objects in empty zspage Thread-Topic: [PATCH 1/2] zsmalloc: do not scan for allocated objects in empty zspage Thread-Index: AQHZpYzRyNUr9zsPBkK5T8L0XRRTxK+YA1KA Date: Fri, 23 Jun 2023 10:49:07 +0000 Message-ID: <20230623104917.2n6vcxvhvlwmjm2m@cab-wsm-0029881> References: <20230623044016.366793-1-senozhatsky@chromium.org> <20230623044016.366793-2-senozhatsky@chromium.org> In-Reply-To: <20230623044016.366793-2-senozhatsky@chromium.org> Accept-Language: ru-RU, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.16.18.92] Content-Type: text/plain; charset="us-ascii" Content-ID: <10E761D8E9F63E41BB49AB9A123FFF8E@sberdevices.ru> Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-KSMG-Rule-ID: 4 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiPhishing: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 1.1.2.30, bases: 2023/06/23 08:45:00 #21561595 X-KSMG-AntiVirus-Status: Clean, skipped X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: D9A99100008 X-Stat-Signature: bnnn69cx3rn367qx5puk56tq4ty8rzjc X-Rspam-User: X-HE-Tag: 1687517366-993476 X-HE-Meta: U2FsdGVkX1/iiyamgMQ8Lx4mVHq8CvqAbshcYYwl7Zja9IypKjeYeMjBJ8whT/h4k2e0AyVc8T9dsejACUOKg0fUM/b3TlNZOkzkH6P+KmxkXeSc7JOqNbCmxghuYuBpLf8lSPje1vBJRxzzfi7vExVlC3o5ngxYzfGTqra8Iviz2XoZcSeMNmq+jahFHlkt3sN+FjvAqmaKB9WcxXiFOQlUxHVeu3AFwIw8611sAvxpyqQ1oVP5Anbe7RSdbj8gAuu6ThMogIEJPLAIzW+9mDVFEdlFpZkNZOlsUJvCykdO+brsZ2rIScmdB63Dy42dYGxY9MCuEmbVmsHsCtpukv4KaQ0FgTTULvvG9GjD8wtxmxKVH3lhEUqAXxEEiqExgVtFywH/YTG+JtqJuG/kHbLVYZiHyVcBXa9fwcMtWCcC3IrUt8MDjF1ywBEt3QkNyp0apUcwOo5J8dqazzAacyB7wpdCfXn9UCh8T9aG4mqsWHT1yLpxjOrsHhY7+fFa2I29QE0xP5Yh8MTmcp1wDE+nE0H2+VqBuDmbP6/YxRH6suouih9zp8MtRPO4khFUHLYcK2fPB8P6D95Rgw3n9nBXLM4vWm5UybX0KiZEFpPDDsCML3oHrYgrkIcamYZPjMCRYIFDrgTozkGPHVrysEHSlIsAYEDSvInQygoZ0XFlTscnbAqkTRF4wKTP1HGoCewgL1T9CJ8Fl0qRDJNrkbL5/Ba7u5t7VYGGQfP1rCOdA1SALSw1oymXO08y0pYHCZEMJWI28oNKd4Y8C8bmK6B40cRnUWThP/AKV3w9ib6qfhLFBZr1tecpfjjc3dozjGgOgp/wj2DDz83/3paeApYAG/k4UFx6c+tczWMGwvzebYlnkAK8xnapWWKRpHvuStdttWmfUwUsDKhNRl1yCC45Kw1MxPjlUt7eryP0JQ5VheGjAG4vWbvJ3HtvAnB5axyNb8AIiHM8M167O8Y VgnUJfJy sJKGR2Bve9Qq6YIrpl8UTnPWO351rxpwPHn30Eni8uGEnDF2mJeb6x/dJy+PJTvJ+XHMVCnPsRmVsKrG6w7TI3tOTGDNkjglpu0+UrctWmEi/kTJeTfKiu3XMw4KAsaZyI5eN5XfEvN9J0PPDDa1OtVflDvcDQC32gqibM0oMKaJ/eNXmO+fX7Dh/aA0mjWbpaVNYjRMj6OFbzPIojtzcQINwzBcpHtyafzFNRJWbxICL+v1yXMOq+m4xlMaAed4vWc48ShjpAZMF0u6iFJc3z/zD4z8V6z6zPFDP9k50ewvkAWiJhRNB6IOTtrZtdjuxsURwz3W9NoI0oMsPJlWw0swquZPoHBs/RM8ruaIRQXUgrEVODHFcPPfh6FEkKfoepdacD0wqeHkZXt9WipxL+oPc+AFJeIsbjHRY1ykj5etZcBfP5TyKzivQQjUMwpfKSMlahe1ug0PEE3w= 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: Hello! On Fri, Jun 23, 2023 at 01:40:01PM +0900, Sergey Senozhatsky wrote: > zspage migration can terminate as soon as it moves the last > allocated object from the source zspage. Add a simple helper > zspage_empty() that tests zspage ->inuse on each migration > iteration. >=20 > Suggested-by: Alexey Romanov > Signed-off-by: Sergey Senozhatsky > --- > mm/zsmalloc.c | 9 +++++++++ > 1 file changed, 9 insertions(+) >=20 > diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c > index 3f057970504e..5d60eaedc3b7 100644 > --- a/mm/zsmalloc.c > +++ b/mm/zsmalloc.c > @@ -1147,6 +1147,11 @@ static bool zspage_full(struct size_class *class, = struct zspage *zspage) > return get_zspage_inuse(zspage) =3D=3D class->objs_per_zspage; > } > =20 > +static bool zspage_empty(struct zspage *zspage) > +{ > + return get_zspage_inuse(zspage) =3D=3D 0; > +} > + > /** > * zs_lookup_class_index() - Returns index of the zsmalloc &size_class > * that hold objects of the provided size. > @@ -1625,6 +1630,10 @@ static void migrate_zspage(struct zs_pool *pool, s= truct size_class *class, > obj_idx++; > record_obj(handle, free_obj); > obj_free(class->size, used_obj); > + > + /* Stop if there are no more objects to migrate */ > + if (zspage_empty(get_zspage(s_page))) > + break; > } > =20 > /* Remember last position in this iteration */ > --=20 > 2.41.0.162.gfafddb0af9-goog >=20 I think we can add similar check in zs_reclaim_page() function. There we also scan zspage to find the allocated object. --=20 Thank you, Alexey=