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 41BBBE77188 for ; Tue, 14 Jan 2025 17:01:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BB95B6B0083; Tue, 14 Jan 2025 12:01:07 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B42086B0085; Tue, 14 Jan 2025 12:01:07 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9BCE8280003; Tue, 14 Jan 2025 12:01:07 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 761066B0083 for ; Tue, 14 Jan 2025 12:01:07 -0500 (EST) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 83F41140BE8 for ; Tue, 14 Jan 2025 17:01:06 +0000 (UTC) X-FDA: 83006672532.27.7FA7E26 Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com [209.85.208.46]) by imf26.hostedemail.com (Postfix) with ESMTP id D51C3140013 for ; Tue, 14 Jan 2025 17:01:02 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b=btqYYyq6; dmarc=pass (policy=quarantine) header.from=suse.com; spf=pass (imf26.hostedemail.com: domain of mhocko@suse.com designates 209.85.208.46 as permitted sender) smtp.mailfrom=mhocko@suse.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736874063; a=rsa-sha256; cv=none; b=aFNvdCKK7TTpEW+xZ0eas4HRmWrkEsBgGQJKhk+krLByQAEq44x+MRiGpu9z4tHfvX5MHW rFo9g3AEkHNCCUx+rooz1beUQocu3vycbn5+fzwAKVxZt4++IQrgYyz6jjtcjKdAd4E1s8 gO/qqr6SxJDWZBr97sGoBNqBndnRHfk= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=suse.com header.s=google header.b=btqYYyq6; dmarc=pass (policy=quarantine) header.from=suse.com; spf=pass (imf26.hostedemail.com: domain of mhocko@suse.com designates 209.85.208.46 as permitted sender) smtp.mailfrom=mhocko@suse.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1736874063; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=PUoI2EyKt/knlrGvqwIP6n1ZeNaysEcJuerUgijRn1Q=; b=reDUFiSm+kwRQRmhmUwzYuaGtwbU2AfIF63a5tQJspZVv35xPAHRWoHAUdRBxBIYf5qNuY UigOnEjzkBiFJhBOLWTJ7ABrsflfwkn2omrOu9+PCo6ij+rJrUO5ifpgaVFbKDoVFA4hmr aKKS1ic09vPni025NR7qFcUwtlhbm1o= Received: by mail-ed1-f46.google.com with SMTP id 4fb4d7f45d1cf-5d3d143376dso8238081a12.3 for ; Tue, 14 Jan 2025 09:01:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1736874061; x=1737478861; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=PUoI2EyKt/knlrGvqwIP6n1ZeNaysEcJuerUgijRn1Q=; b=btqYYyq6Uw57hKw+el5pgLlK7yXEsLcpzcw5jjMy4jEv06pO7GVHc1ppsHqxTwIaQu ys97rSe9YXuN8L3+FxudSYQ8/JE0jtpn3KMs23hCmqTdvsf6RDJnugnxS+pztRf638c2 ZL5M0s4mz4nHLUftk+15OqNm27onDpCld8bnfGABoj13qz8Ub40hs8TZxukQGNQJKkah HdGTpnN3ZfFKn7Y47KYxNH+q55X0FHKmf4WVxg1J5cQSgQJui/KNosjuAP0WaNC6sSIT Qvb9hze4WqF44CjDzwg6/HHpHax8TDbXIl/beEEobUZd8j2cG2JJsSgkAu29UEmAKEjS Kpbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736874061; x=1737478861; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=PUoI2EyKt/knlrGvqwIP6n1ZeNaysEcJuerUgijRn1Q=; b=WeSyZBFsETwuOd4ImRi+OAxHwqqvIhVus1GHkygduYWfjU/taSI4rZCXFnqCtr/bnI yy8Z9tLQq9xR2DXIaYT0WhZa3WTpVYbunKGtj/xSRFXP+vFFIcSoWAhyhDZAhF51UYgq S3HWziVmimzlXQ2LCHavQI5ltIhWork7hQ+irRwJmg7jjjBVzLEWoJQQtcMPAYaHlFMV UdOLWKGFSEdfv9+bDhDTKCFFVeKGObtviEwlBa1KFnY9TQ+sWBHvGOxCGfhSr1DvH0eZ +jKT+sqkHYN6zccqUYF6JQ4hW15Gh49th0om3vmCmsGmhV24okvVp9uy1c/KISdTj2hJ kKIg== X-Forwarded-Encrypted: i=1; AJvYcCWppi2SakupwhOGp6qHqombipz+ZhDHshpsLlYD5ZS/FnU+tNQGxMcxNcKr55RXExTng72On+iN+Q==@kvack.org X-Gm-Message-State: AOJu0YyMoykDGoulxLOZofAFNXhunN4UVpXwXLsgbmurkPmvKHFGASpN zbY8tikd1Jtn6wFaHVVkuQ6unU8WGZCXaV4JYgjsOHvjWWrY053S4VBuoeIlT2g= X-Gm-Gg: ASbGncutlcGCD85BOirrNM9ICVG1QEG3NwRVs0ACp8CqNowmDZozyIef8hScPgB8Njv Yl59HlG8TjHhpBaHTWNOPbbjNaHS3HNGx884Pw5Nq2WYLVTSVivrbkSqcrShdV71k3PPuW0mpkt 6YS9pVUzh6GJHEHE2sUL7KfSpY9uvqqae+51+foqR9Vkjjq+gq87BGTCPCTVuiPR5mU9kfTRNfY VF/wtq9aGSiIEU5G1a49M2zNoxjsIFkgpcQ/+DpNlkbwsKXxSyur7W4FmvP0ppvnwOU8A== X-Google-Smtp-Source: AGHT+IFlsRdDjUfkFl69+IV4zPFF4B9GZCFDetrBcvlk1aTeSGtQUB5pfsswDlESXqm2+oa8lB9xPQ== X-Received: by 2002:a05:6402:358c:b0:5d0:d84c:abb3 with SMTP id 4fb4d7f45d1cf-5d972e4c9a7mr22660785a12.26.1736874058860; Tue, 14 Jan 2025 09:00:58 -0800 (PST) Received: from localhost (109-81-90-202.rct.o2.cz. [109.81.90.202]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5d99046dbe0sm6202402a12.64.2025.01.14.09.00.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jan 2025 09:00:58 -0800 (PST) Date: Tue, 14 Jan 2025 18:00:57 +0100 From: Michal Hocko To: Rik van Riel Cc: Johannes Weiner , Yosry Ahmed , Balbir Singh , Roman Gushchin , hakeel Butt , Muchun Song , Andrew Morton , cgroups@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-team@meta.com, Nhat Pham Subject: Re: [PATCH v2] memcg: allow exiting tasks to write back data to swap Message-ID: References: <20241212115754.38f798b3@fangorn> <20241212183012.GB1026@cmpxchg.org> <20250114160955.GA1115056@cmpxchg.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Stat-Signature: rgfppqz7giba8dtfw95zs7jiwox3a45f X-Rspam-User: X-Rspamd-Queue-Id: D51C3140013 X-Rspamd-Server: rspam08 X-HE-Tag: 1736874062-309905 X-HE-Meta: U2FsdGVkX1+86tBRjatOPQ4OMQxCITKyJx7cRgHYMbDS84ivNbXjMgq+rBtVpbIXq03iODxheV0Dx7BzKtdTEu1eY8ZTmawR8lKZLlJt7M+olhEwVMmaxvbhMHqgzBkUaoD89BrUU2MItem3qF+b+Nf9ML14yCdIvqpkkw1sukXigvmqb5nh9kVNFMyWEzDFW53JJMTGlM1HGW/wjfoo/51++THIEQ0NNGSFP64O5jxw/SWWcQJsciPiSz9ZAMxZZKbdBSaViz1BlVB3UfUTj+zOadE7LaWinc53JRgEgnMFLvwgAd3aXSgjzno95X22O91VBnHKEAjgdxuG9adQSmlbCzlyZXTZqqXYgZ1zjLySsiTd2FUkmXQ3KePPZIITMD/iJ9Im8qsXiDZTUzfJWc2gkOIYtA8K+lCSTYaMXKdKSiIG6iDyjipXoTUs/HK+9cL4PFiADzSCc+o5IZ/TGtR2/iDcFsDrXpv2bLfg9r2UDWuHl8ZnjagVV753opeXwudBPbSW0H8BHmRchlf6S/4ijS4dt+r5Kp4luoZ3NKOSzkdaQrCVouGe4w+SkokTyCMGu0pyylRJo71m/fvI7qehvvLYHtkxliSyCH01mV34amyjWuQUy8VZP1IWaeI3xqWfG93nY/o+Z9EXBuSf08znX359sFAaAesHTDWmi8DLt66vNGD/sIrIh8MV5JRplOGiBscKE9UEOyyCqNDihc7ApnPIHmYwyhmDTk26Ecr2NLQ1sja+z/FHSeLjllbsVFZZgVdeL+On/YdICbxC78WUMbWqypx57Bh3gUKXZ+08l/TYbKcRKfSjwVRCOvxSjlZZ7wPZaQR7hKfEuXh8N7mHru6gOeQ04Hb1Ywpc3otcI16W0mHlzpm16/tptJqx6Gi3M1Rd3BfdeH2hGhPMOYchyagyYffgzNjVBKA4R3/hwfJtU8AYplYWWbTzfSVcklgC6/ObbUw7f3lZ0/f 42x1ECMF tCz9+OH5zoVImbvUnr4qdaHap4ZQkQ2YksexL6QL6v2krpfGVlXFdtz2y0S0+vFWSdx3dnzOPWsvW9dTFKumbKhvLZeG/j0WJdEM331zCrVJQW1e4wr/dbE50kiaCYfA7t+fI4cGhh1blIGkq0BveT0KLQZrXA+O5pPU/yCQq/Vi/oc01boC3rrAiIVo50cDzbqq2NblQFR6muUmj2uL75veyJkrVgi6Q+cAFOtDgODeuZS6TAzQG3/XQpvnqRXCedq7XmZj1F9xqaIVHl8MIxbkwSHAcwcZjyLrjb7DJYBRPLIwhbgfCGk5xSA== 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 14-01-25 11:51:18, Rik van Riel wrote: > On Tue, 2025-01-14 at 17:46 +0100, Michal Hocko wrote: > > On Tue 14-01-25 11:09:55, Johannes Weiner wrote: > > > > > > > > We managed to extract a stack trace of the livelocked task: > > > > > > obj_cgroup_may_swap > > > zswap_store > > > swap_writepage > > > shrink_folio_list > > > shrink_lruvec > > > shrink_node > > > do_try_to_free_pages > > > try_to_free_mem_cgroup_pages > > > > OK, so this is the reclaim path and it fails due to reasons you > > mention > > below. This will retry several times until it hits mem_cgroup_oom > > which > > will bail in mem_cgroup_out_of_memory because of task_is_dying > > (returns > > true) and retry the charge + reclaim (as the oom killer hasn't done > > anything) with passed_oom = true this time and eventually got to > > nomem > > path and returns ENOMEM. This should propaged -ENOMEM down the path > > > > > charge_memcg > > > mem_cgroup_swapin_charge_folio > > > __read_swap_cache_async > > > swapin_readahead > > > do_swap_page > > > handle_mm_fault > > > do_user_addr_fault > > > exc_page_fault > > > asm_exc_page_fault > > > __get_user > > > > All the way here and return the failure to futex_cleanup which > > doesn't > > retry __get_user on the failure AFAICS (exit_robust_list). But I > > might > > be missing something, it's been quite some time since I've looked > > into > > futex code. > > Can you explain how -ENOMEM would get propagated down > past the page fault handler? > > This isn't get_user_pages(), which can just pass > -ENOMEM on to the caller. > > If there is code to pass -ENOMEM on past the page > fault exception handler, I have not been able to > find it. How does this work? This might be me misunderstading get_user machinery but doesn't it return a failure on PF handler returing ENOMEM? -- Michal Hocko SUSE Labs