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 DDBCDCE8343 for ; Mon, 30 Sep 2024 13:18:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 180B76B010D; Mon, 30 Sep 2024 09:18:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 10AEF6B0119; Mon, 30 Sep 2024 09:18:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EEBF96B0117; Mon, 30 Sep 2024 09:18:40 -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 CB8C56B010B for ; Mon, 30 Sep 2024 09:18:40 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 49D3D140345 for ; Mon, 30 Sep 2024 13:18:40 +0000 (UTC) X-FDA: 82621459200.13.645BA24 Received: from mail-qk1-f179.google.com (mail-qk1-f179.google.com [209.85.222.179]) by imf02.hostedemail.com (Postfix) with ESMTP id 700DA80019 for ; Mon, 30 Sep 2024 13:18:38 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=aL55yg8U; spf=pass (imf02.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.222.179 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1727702279; 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=nqb3JtNhWWkOUOy2ElpxqXyhTNuktovVBAPwTw1UTzs=; b=XzGFPJmIe8GSUi+DnCF379+nprGhNwiYxZtQ9NNzI9ORNb6WPkQnevrnDDWyuLfhY2PsSA v0fNwjr3WuYdLiyC9nEdWJDD2ctXiGmppoxfJrsPUhGrK0ec82OMJm0PXdzP3E6Bggwg4Y 4K4B2yZCFw27kgkgRi6qe/MhkG9X8U8= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=aL55yg8U; spf=pass (imf02.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.222.179 as permitted sender) smtp.mailfrom=21cnbao@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1727702279; a=rsa-sha256; cv=none; b=Of8CkXHpCkDCjXT2WzNzVCJB2TI1d2JMJWc2Y5bvmp/gr4Dp2aeR/4CbAU72XFGubYqs5u q+DazrCOtnrz/FjHem9IScdCwlSr5pU69u6nVVfXy5FqXXYqUnTJyi0QSJe2X5qp+glYef XwroiFoVD2G7LJ+Vl9y44i9GtfbBPA0= Received: by mail-qk1-f179.google.com with SMTP id af79cd13be357-7a9ab721058so461778985a.1 for ; Mon, 30 Sep 2024 06:18:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1727702317; x=1728307117; 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=nqb3JtNhWWkOUOy2ElpxqXyhTNuktovVBAPwTw1UTzs=; b=aL55yg8U4dWbA7ikswAUJJzN/cdH2VN9hrn0T4+MxRInxC7xDRG42cDMW/kNgJz4PE nr4VliTe+FsXxSVpacXpQ/GUjF23oo2ENCAo0OY8LzYwK3geUWRGACjkaNzh5PkAff3C dINBXm0B8L0tMJWcshWTkUIRrxRHvOnqg0FW+ZQMPQJYddo6tLttM+3kfDF7pc2fZAms VeGh44j3FxRoxgwiaKtgGS1uOZ4Z/fOJhabXYe1tUXWDfs0jU6jiTHKFDzbdiFOqnTac YomH0QJKHKQcNIl3IzWUJc2eFEqzhDN3FMGAHBzne6omrLxPA0TFAo8DD2C2DX1cMrio EVvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727702317; x=1728307117; 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=nqb3JtNhWWkOUOy2ElpxqXyhTNuktovVBAPwTw1UTzs=; b=qrozmJ69/zGXU/JhHVs7vuEO05DSYB9ZFxpoDIutp4gNnU33nJgwxDwd0jgjWIaNn+ TYSLzXpTk3ekpzyhDde8il/cL5rZLNxODhTOdx/7tP+w7li+QhEYVqkomCBkx/TOO8R8 EMYhtRGnv7aC1SV4KeD8KdwrY/tVkxLJipc0b+xEJAKmDjmDhKTgs8xlhk7zp1ONB0cx iZA6SCXG972pITHf8ZO3MoH/02Bf+sG2fY/82xJhYgxOK4QIDITwcbzzAftWZHzk1sH5 6gN96uh8/JOg7597MaznUBjFAouK0SKq1jb9jJFqW3wefod9T+22vwv6Ny5WeAJSE+hk QGqw== X-Forwarded-Encrypted: i=1; AJvYcCWihpUyKxheKGzezYeqKFh3O7ZZq/khw7xAEN/7TiWWkrPn/asllQVIqrflTuQSyyj/tq8Hvvdakg==@kvack.org X-Gm-Message-State: AOJu0YxMKoLOvswpIaCyDrbz22h2/c/RNHeI4Q/yvHGoiDdfLIAqm9UK MVGDeAwvzB6kTUxaBiPPnEjubgAQxD32Qpa5h1Ckf9LgG1vAawPy5G7ErR8b0bMnlsbLTXPexGc rvnJLTgDbTakm4T7AstYjueBc0l+rCByB7Es= X-Google-Smtp-Source: AGHT+IF7AXYLFHtLUQIv/Ye2qZCxqhQBuqosJSPFYmJoZ4RLhHt8UrvV495lBQjxZG0qIu5MgMyrS1zc1EeuZTKBLEU= X-Received: by 2002:a05:6122:a1c:b0:50a:c52d:6ba6 with SMTP id 71dfb90a1353d-50ac52d8005mr853284e0c.7.1727702306292; Mon, 30 Sep 2024 06:18:26 -0700 (PDT) MIME-Version: 1.0 References: <20240926211936.75373-1-21cnbao@gmail.com> <871q13qj2t.fsf@yhuang6-desk2.ccr.corp.intel.com> In-Reply-To: <871q13qj2t.fsf@yhuang6-desk2.ccr.corp.intel.com> From: Barry Song <21cnbao@gmail.com> Date: Tue, 1 Oct 2024 02:18:13 +1300 Message-ID: Subject: Re: [PATCH] mm: avoid unconditional one-tick sleep when swapcache_prepare fails To: "Huang, Ying" Cc: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Barry Song , Kairui Song , Yu Zhao , David Hildenbrand , Chris Li , Hugh Dickins , Johannes Weiner , Matthew Wilcox , Michal Hocko , Minchan Kim , Yosry Ahmed , SeongJae Park , Kalesh Singh , Suren Baghdasaryan , stable@vger.kernel.org, Oven Liyang Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Stat-Signature: oxj41cqnwjjur4jjjy4k48b1tgd481gd X-Rspamd-Queue-Id: 700DA80019 X-Rspamd-Server: rspam11 X-HE-Tag: 1727702318-100585 X-HE-Meta: U2FsdGVkX1/MwvSfumopTSsrvcqs+B/2p9QqEk3pn0HiNGG7eSoLrgt5neSVZ/13sXuvsmPBu/6ti2BnmEtijYFgYey25kI4RImzzEjiOrCGYEeA2SVuNcxZiKSM336Z4vO6EOvetZu7BHT2ML4t6igcDxFVBxijOa39INcV0DOXsOUbyJyny1dfiSa7adzXQJEcuZRa13weMMDy1sqysVuoICp43A/CBbCzzXuzEUskphn41JRXi1HEJhpBFcohZVEnszjcyq05sxHQlB7FqtfKDyXHxbpVtRR1/IVF7ruz4rltc9Lp0wornep8WufeSge8AYX5rllwBdU4+wn/mnItyTw5vZafzRBMNuelmP6SswRrykZGY6NZczDY9ZhGnMPHfgH29h/8frDQjunvPwFW4Yw+cMC/KUtjvyGloNQuc6WY4+ySzN30Sjr+ZGBBoJXQs2GcYck1H5wCkjdEUFyHFWNiBYqIYYbCeJK2quknqzPfcwJwCKPGIvyKlWD23Is7lJAeECuO4wJucKT0OI/L1TFlT6xJnM6fmUFiK569tDgv5D7FCLuNY7ZKYuBUHIUDY0M+2SgidncNlxy0nn+sZb9Xb0fYXjHBwy/HtuXnWbYkLmJtOkp/Qbm+gzdewlBqrd+RQ1Fv4q63AUDr2e1aRaj0lEShTSqcPpcmgfCW/wOgnJ2N+mz3WBQgw+7QLHCxEoYcHclslm2n1BI7i0MxHpTISsyC+X40uinfatVy4HfYgFBP8cuZr2vyBx5vqAI9FTBebyPrhBG0Gv099LcbQ+ACQCuajFniy+4jjUgxsHqv4x6nZ5JzkzpBmvmEI7S8l73GfvCJOe7o8RZBd4xzJ0ZIJNV4Nt/Eq/Ar1ObuaZQkKSKTePMeF8DwgjwdB/y17Kr9opWe+X73lHtoH/mWpm77qMHjloahDZIsSQi/1IBDLxaFcccuyPV2aFnngckPXOPa+fgcYFa4tNB cQkz60SH yZ+YrPADS9K/mTmH6LBbvsxu32vKAR3Dhp+PCoqDeWgCTAjSXXwFD4T4PbYxb6NxLCU/w1raOWkVU0Va9BNi3hN1PPJlsr6mjT2KsJO+1dUUeReFvBtAsYO67UEK46B5ZFEzO4sfWKyRizmVZrVQ7IuGwNLZJCZjROGrjT0O2DcqUNUVCKUYXmnFEg4SeSehQTJ2Ol9fdeEEEnKRDwHQ/2ObIL3Fnukee4tcqdYAMO1USJeur3HfxwoxavPYo4Mq/PMq4Cxe/141LzY0E/uxI/H0laNnnN8SleauWKTL2TMsQsySBTlh7yfTkJ+v+q2rbp7hufzqICWpkCNaSKuJZHzMSJlhgohpmLG2rawQvJvdYh3Ekdvzw86z/CqoQHGF5WA4gMuZOUubl71yrYzy/F7ceGvl2NKyTUx3Ye9GlfzNSNom3VV8GwnSyqQ== 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 Sun, Sep 29, 2024 at 3:43=E2=80=AFPM Huang, Ying = wrote: > > Hi, Barry, > > Barry Song <21cnbao@gmail.com> writes: > > > From: Barry Song > > > > Commit 13ddaf26be32 ("mm/swap: fix race when skipping swapcache") > > introduced an unconditional one-tick sleep when `swapcache_prepare()` > > fails, which has led to reports of UI stuttering on latency-sensitive > > Android devices. To address this, we can use a waitqueue to wake up > > tasks that fail `swapcache_prepare()` sooner, instead of always > > sleeping for a full tick. While tasks may occasionally be woken by an > > unrelated `do_swap_page()`, this method is preferable to two scenarios: > > rapid re-entry into page faults, which can cause livelocks, and > > multiple millisecond sleeps, which visibly degrade user experience. > > In general, I think that this works. Why not extend the solution to > cover schedule_timeout_uninterruptible() in __read_swap_cache_async() > too? We can call wake_up() when we clear SWAP_HAS_CACHE. To avoid Hi Ying, Thanks for your comments. I feel extending the solution to __read_swap_cache_async() should be done in a separate patch. On phones, I've never encountered any issues reported on that path, so it might be better suited for an optimization rather than = a hotfix? > overhead to call wake_up() when there's no task waiting, we can use an > atomic to count waiting tasks. I'm not sure it's worth adding the complexity, as wake_up() on an empty waitqueue should have a very low cost on its own? > > [snip] > > -- > Best Regards, > Huang, Ying Thanks Barry