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 D1776CD128A for ; Tue, 9 Apr 2024 17:52:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3EA076B007B; Tue, 9 Apr 2024 13:52:58 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 398CC6B0082; Tue, 9 Apr 2024 13:52:58 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2601D6B0083; Tue, 9 Apr 2024 13:52:58 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 09A736B007B for ; Tue, 9 Apr 2024 13:52:58 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 872D58018A for ; Tue, 9 Apr 2024 17:52:57 +0000 (UTC) X-FDA: 81990739194.26.2D58C1B Received: from mail-qv1-f44.google.com (mail-qv1-f44.google.com [209.85.219.44]) by imf08.hostedemail.com (Postfix) with ESMTP id 9E005160012 for ; Tue, 9 Apr 2024 17:52:54 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ZTXuhXXX; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf08.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.219.44 as permitted sender) smtp.mailfrom=nphamcs@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1712685174; 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=c0UtiPwH4SFRIAuAC2vMy9rB9n5VoLufAj1o9dzRWAs=; b=XWM4iQnb2G8sAtlbLrln8cHpKf7k6oIV229aGyL+Q6MQaoGFApExmdLOQdghwhNWjQtKoV r4g8DGrlB7FP8pnCQKuisSGFrQbDJcqITnVuvmLnvJxf9g7LHUR1Kt96I0RnYOGeZ0Ts1O BdLeBccg7LMwx4ExdaRUAhptNXSiAX8= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=ZTXuhXXX; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf08.hostedemail.com: domain of nphamcs@gmail.com designates 209.85.219.44 as permitted sender) smtp.mailfrom=nphamcs@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1712685174; a=rsa-sha256; cv=none; b=XixG0Qyn/DtMcrZJViECsOZ9rb9oLDsG4P0DPuo8Pyg39qgqviERUm0BS7LN9KoA69WkHC EbvycfG4NLXlL5srL82mwGK9JVUqH0ko8VXx6MfwEElHIwbom+TdcgTPhYvekezDG878si PKE73cPReitkKZP41DkwbS0yBYe7dhM= Received: by mail-qv1-f44.google.com with SMTP id 6a1803df08f44-6962950c6bfso46143696d6.2 for ; Tue, 09 Apr 2024 10:52:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712685174; x=1713289974; 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=c0UtiPwH4SFRIAuAC2vMy9rB9n5VoLufAj1o9dzRWAs=; b=ZTXuhXXXgbHGT7/7oCsJsfkyBisyoKlil8+OBD2QHQty4jD2xhp+kOd8i7ghYJ4Wo1 4Z5QS+NudKmfPSM+Mi+bysY5rPUZrvTSlDCuiNmtSlDd+K8qRqlU/yo2Q7XBKal4NkLB OEc/QKLmqslHRR5woRvWW8+spyHs6wYjYZv+wmtAhDKgld7OC6666dvnmz9OjI8fKWVp H4m6Yq3qPrGoTQNSAJrUtSm17hiwH97m7abN3FNUTjw/0sUV/sRuY2cq3R6i3RP60dZw XKCuogx/cKlgGIUxeCC0i89NUTrrTC785Br/0FkrU/Cw/jMKrPSlumI8FddBY1xtuQXd gNog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712685174; x=1713289974; 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=c0UtiPwH4SFRIAuAC2vMy9rB9n5VoLufAj1o9dzRWAs=; b=wdPaxp/2p8/edxgKglJik9XlRAwhLEbM7xtKTfDHm0rYWT/1w+38haJf0sf126molr JDbTah+/7e7TlrQoXtKUo4mRGGiwkrQSuWSJeDDvwf0CEzvTHLe01A1R7QCBDFwA5aLa j/ASejuk3hDhOMvKQ2s895Inarcg1GyPqGHUavyjVKLQjBPsye3agG2btpn6YEQssV5g lK2TXbAvoQC8N4YLYmZ/DPzzaS825unftMd6fZ/qlGyAmBqXYEdsdKh4Jq5kTkBYRlt3 3/ueWOzR/zdGaorHEocUGTi0+8rf3yTn30mY0wTpbJQl8tQpos5ONqSlC6dL2WQ35Twm PN6w== X-Forwarded-Encrypted: i=1; AJvYcCULUfJ148JGL7GB8fiaUu4HjMOajrM3SkJkltwJ6IbJ9k5sFq97nHBLxL65/SVOzdBbar+em+ndMYYotzPSqP4x85w= X-Gm-Message-State: AOJu0YyKCdeD5fGWbLUF1wNhsRqLM10uGkU6/P5s2fZFjaiqdXE6VHfu hToQPWhV35hu95jlpTxgNW7Ao4/x0y+6Hi0Mdd7PuIZZmzMMXrznBYkWUqzeeNzfP832qEABfwd 68hdfU2dLznOUG23XYiQpwYcZwZ0= X-Google-Smtp-Source: AGHT+IGFs6yv191iHz8RHo2VsrFlPtqJhQu+dOoGF/nUI4+kzFnOm73MMsuoSQdS9Ksd4j2lP8tfif1Pf1RhzwxGTfU= X-Received: by 2002:a05:6214:da1:b0:69b:2aa8:dc66 with SMTP id h1-20020a0562140da100b0069b2aa8dc66mr335535qvh.28.1712685173688; Tue, 09 Apr 2024 10:52:53 -0700 (PDT) MIME-Version: 1.0 References: <20240408121439.GA252652@bytedance> <20240408132704.f966adc8d3928df4d3b8c0a9@linux-foundation.org> <87edbf8hta.fsf@yhuang6-desk2.ccr.corp.intel.com> <20240409145740.GA543696@bytedance> In-Reply-To: <20240409145740.GA543696@bytedance> From: Nhat Pham Date: Tue, 9 Apr 2024 10:52:40 -0700 Message-ID: Subject: Re: [PATCH v2] mm: swap: prejudgement swap_has_cache to avoid page allocation To: Zhaoyu Liu Cc: "Huang, Ying" , Andrew Morton , ryncsn@gmail.com, songmuchun@bytedance.com, david@redhat.com, chrisl@kernel.org, guo.ziliang@zte.com.cn, yosryahmed@google.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 9E005160012 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: yzjnnmp5mrdw8zs7t5kyagpg1rss95xr X-HE-Tag: 1712685174-70976 X-HE-Meta: U2FsdGVkX18DnEYMP/8W+zllOY4E66C4lOmgWymkuTEr/2Bvg80LiH6JXb4ZSouqkGzW/gfTkagBziWCeJV05tVhIUS3U40n3M4Lo/Kmssk/yrpLe84cQ8ZMQTWccT0hB/nKieuNRx4vR8qN1V7lKcz8soiXsSqU0HF+OzCZha30Ad0FjPKk2aYnNKCv7826NsD32lO+QVNcOaTUhlqmIMbq/QvVV7LjuRrTHYviTM3Fzd14rAjjiSI7j9+4PtxKRgC+uVLFyCS5PvSYxeUdtvG7W/Xnc+vLmRhXP8d97QtquHXRG17RrOGIeT75Lz92gVhvl2Ic8NJCxWUvhVoNTVAn6esKjW20dEOLA25KItWTVef+61PKvVPzqXGW44nLScYkE+lc+ce4O2Qu76AprR0oAD4RAoRZqPg9Pxx7Ru4OoQDfB3mE3OoXQ5I7EBzx36ppxAr6o9vHIGQly8fhhZ8CUiyv+07q4QQxKNyDMMxTs4r28MV02SoccQq0DyUCDum02VBGQRXzGkGA+k3UfxfAifft4UFm1t59jU8Wjs1dsstE/IM45dAySqvY0iahGyEQ75Yg1NSwCU8rqp1u2UewGOBfGggzFd+1PTb7HntCmMft9A2MEFsqeZ2tamnYI+9efX+D5g5rpoRi2JaJBNx/YIOLUC6W5rAjFM7AD5Ur3x97QdVAIVhxwDEtEn0NBSu1nFDFlxs62qq+C4H+BrietaOQ+ACntigH3pxQdP9CsInEy3ZmDkgkk505fK16UH5DUjOMFvJQ1BOq2c8zDtlHvIddyjjYcGFrYnB8PtsavPD56GEQdS5KUZd7E1tbYxE2dNPlmxkb+PbXZs+2bT1Uv/XfAlVU9XdoWfeTjFc3ERlYla4kM7mjjLRo04tZPtcl/o7pXHgVxQZeh4OYYhb8IC2SQnaTVsJO9uHAGdpMUH/vPKNK+idcGrL10z3d32y6/9G3WQm0+snhDp/ PKbbmzlc B0QpDiI663KJHqOEOOW5/MYCp0ClQmkjO+clnf/yzdannO4/RRaNNOLYpJ8eIiJmsMRRFl8WoJkoGCOHchhe7EjCunD+jmvLqPLViPgVz6n6nRlUtAJQi1Ln2nR5TnizXBoge4SifcHP89nJ+HL9FoxRIOrghmOlry0KSh82f+EtXOL6vtGqzPiSB93GMDaLtfzBaFSnEdVgYepHWtpriqRW9XkfkWIQDUOSc/9Lseo7rlwCi9xw+DeKwioD9wyy7ORAjzuk4JTeEvzBs66sOh5HWltFUmNguXlA725BjiI9zf3g/QwvG+aclF1ebhceI2XdiqIBxXDG3B6sYtgi2iQ37e3rMRZQRunXIBWZeZrmcHhnkM95qks9DbxxNh6BHvbPqPequ0ZW9iju3Hs5wqkT/Sv46VCk4CEUYZFQ+GT3VyzpxmwCfagZ+u/5k9lZjsPebCWvFR+XWX1aQ0ZZ3kKd+A1JhXojqJ4UPqrSLa4GK45WPbxkxJptKchPhj8v2bjUMYlRKl1b7y1k= 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 Tue, Apr 9, 2024 at 7:57=E2=80=AFAM Zhaoyu Liu wrote: > > On Tue, Apr 09, 2024 at 09:07:29AM +0800, Huang, Ying wrote: > > Andrew Morton writes: > > > > > On Mon, 8 Apr 2024 20:14:39 +0800 Zhaoyu Liu wrote: > > > > > >> Based on qemu arm64 - latest kernel + 100M memory + 1024M swapfile. > > >> Create 1G anon mmap and set it to shared, and has two processes > > >> randomly access the shared memory. When they are racing on swap cach= e, > > >> on average, each "alloc_pages_mpol + swapcache_prepare + folio_put" > > >> took about 1475 us. > > > > > > And what effect does this patch have upon the measured time? ANd upo= n > > > overall runtime? > > > > And the patch will cause increased lock contention, please test with > > more processes and perhaps HDD swap device too. > > Hi Ying, > > Thank you for your suggestion. > It may indeed cause some lock contention, as mentioned by Kairui before. > > If so, is it recommended? > --- > unsigned char swap_map, mapcount, hascache; > ... > /* Return raw data of the si->swap_map[offset] */ > swap_map =3D __swap_map(si, entry); > mapcount =3D swap_map & ~SWAP_HAS_CACHE; > if (!mapcount && swap_slot_cache_enabled) > ... > hascache =3D swap_map & SWAP_HAS_CACHE; > /* Could judge that it's being added to swap cache with high probabilit= y */ > if (mapcount && hascache) > goto skip_alloc; > ... > --- > In doing so, there is no additional use of locks. > Hmm so is this a lockless check now? Ummmm... Could someone with more expertise in the Linux kernel memory model double check that this is even a valid state we're observing here? Looks like we're performing an unguarded, unsynchronized, non-atomic read with the possibility of concurrent write - is there a chance we might see partial/invalid results? Could you also test with zswap enabled (and perhaps with zswap shrinker enabled)?