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 E5CA7C02192 for ; Fri, 7 Feb 2025 06:13:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 580686B0082; Fri, 7 Feb 2025 01:13:09 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 5097C6B0083; Fri, 7 Feb 2025 01:13:09 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3AA3C6B0085; Fri, 7 Feb 2025 01:13:09 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 1BDAB6B0082 for ; Fri, 7 Feb 2025 01:13:09 -0500 (EST) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id A9F6D161563 for ; Fri, 7 Feb 2025 06:13:08 +0000 (UTC) X-FDA: 83092130856.16.7173148 Received: from mail-pl1-f173.google.com (mail-pl1-f173.google.com [209.85.214.173]) by imf28.hostedemail.com (Postfix) with ESMTP id BCB0CC0006 for ; Fri, 7 Feb 2025 06:13:06 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=DmYDT9RE; spf=pass (imf28.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.173 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org; dmarc=pass (policy=none) header.from=chromium.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738908786; 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=nbpgu7G4waRbMTZ8SCs1eO+mbMfqiFXDYAZSWlhLh8A=; b=Fw4gBdamJ0BPLyiAMQ7aX3ypq8rWXLiZ13lWDENQzcuzXjWhU+xhsjiYV7a/t4EnXlIlb/ AOAqIQeB0CPJSyQlWkl7zZgYMKxvK9PjIb9gzLs+wZn9mDuQxukSONZsiRZK+KjlHqjPkM x42MrxSIjel/D1oX5UxDVXDYNIr+nsw= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=DmYDT9RE; spf=pass (imf28.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.173 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org; dmarc=pass (policy=none) header.from=chromium.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738908786; a=rsa-sha256; cv=none; b=5f7hCGmAu7+xCunQ3mPlZ/n8bOFYEA6fOP3rVhun9vbW4RriFG7JBsEo+SYhXQSsptAX4r Pb7H7A1KhmHuvPr3vs+nC6FjS3IrKej7qVr9/La5lWOvktzdlAIbM2I46G72yYMH3YaoYn xZAuhHkLgNv86DLc6O9lsg3VKgogWCo= Received: by mail-pl1-f173.google.com with SMTP id d9443c01a7336-21f4a4fbb35so14355035ad.0 for ; Thu, 06 Feb 2025 22:13:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1738908785; x=1739513585; 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=nbpgu7G4waRbMTZ8SCs1eO+mbMfqiFXDYAZSWlhLh8A=; b=DmYDT9REFWJXviL64mM9khaqWCVXB960Qp+G2+UWKirP9GIWe69LW/WDFuLD9C/phf bb6TNK9VeXPX0hyhw78EC0ghDrzZT+Il8p4eHJq4kbIBe5SSQ28eQqlMGoRYc/xJKB0n mzMiwMB+OaVNZrnBV1YrFKtI/+oR0/56o39l4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738908785; x=1739513585; 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=nbpgu7G4waRbMTZ8SCs1eO+mbMfqiFXDYAZSWlhLh8A=; b=PiKNjpbP0+vG5SBm/oU6HCFmKl8hYlAYNFG65W9x1Izsf7O7KSqeQuwam/PHlXBwEK IBnHXFPl6i8sNNZLEDWiwJP4ZHY7J1LEv4FrqY1+lyhWy/UU7EjQ1V5mwwJxeFXeMWD4 W+o9kXU85r1a0fJD2RISVxMkRmQ9/b9opAODDS776tmknM+Ek6+HiesXcjz0ujEpqKYj hVcDG80kBMXzVUtYb1YUB55lnEg/YysJ8FjTzXdL2uJePsyk5wVuuBcpIlqcrjhtX0ef 2HgsUJGrh5ctJdiG9D1aDR6nQZQDDlJFnIHnMXKIOgNVlhwmQRIrWIVk2J33okjCjBBk E/+Q== X-Forwarded-Encrypted: i=1; AJvYcCUs1UDEn3xTHMbTR9OpLlbDnxcg33lvlTC2DIxd9ZlqDUnElihxfa5YLpuqMWPN7DQ2MINgEcLKIg==@kvack.org X-Gm-Message-State: AOJu0Yzw/C6CIbJw+7Rf5wwwkdCZL94dO7xZfJhISyC9Zfef/RoV03zD mO3vQikQCjXsM6cP/d63NZBovsDS3uHFMdtepdYHOMoH/9vHZjs/+2go6kWE3Q== X-Gm-Gg: ASbGncstS6xi3yN/Qo2rmm/UnqOyhMNlkSI5yzlYBxNFl7ATO8mk4ucSpNXbOg0xTC4 s5XiSGtQyK4ycfMQf3TmcQxBzMnLnA/6eIGv/s+6HxipfAx8vgP5p7qGKbhOwaI4Mp4SkqG0KvO y5V2xN6VTs/Ert8sTlFzgCWQJgxYjc/WUNGkk3P1efi4TPVjOsjMatkxv2i9IOB/9IosACBQJSe G84QBAiCc8PeZiABcpyU/qW4nLoqURTmFa9NvS02NNYfNy9EeiA5EKAhRxufR6YvdEjz5VUAaAG Ag98Qld+YPqgylstfrg= X-Google-Smtp-Source: AGHT+IGy7yTB9iK9HdDcKvVjGOD/W1ScK3E/K0xremHJT47ssRDDtg5qjD5vk+9oVudqqsZWrB5Szw== X-Received: by 2002:a17:903:2b0c:b0:215:7287:67bb with SMTP id d9443c01a7336-21f4eff38cdmr37129805ad.0.1738908785391; Thu, 06 Feb 2025 22:13:05 -0800 (PST) Received: from google.com ([2401:fa00:8f:203:ed81:aca8:eee2:aa0b]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21f3683d8ffsm22636775ad.150.2025.02.06.22.13.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Feb 2025 22:13:04 -0800 (PST) Date: Fri, 7 Feb 2025 15:12:59 +0900 From: Sergey Senozhatsky To: Yosry Ahmed Cc: Kairui Song , Andrew Morton , Minchan Kim , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Sergey Senozhatsky Subject: Re: [PATCHv4 02/17] zram: do not use per-CPU compression streams Message-ID: References: <20250131090658.3386285-1-senozhatsky@chromium.org> <20250131090658.3386285-3-senozhatsky@chromium.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspam-User: X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: BCB0CC0006 X-Stat-Signature: 988jtyw6h8p66q5fnmwrwnmfrx36s4c5 X-HE-Tag: 1738908786-259494 X-HE-Meta: U2FsdGVkX18YZF78dmDJYa72kePRSmD6nMX878Tb3a5rA/0iNOlXPxhh83ZEpB43RWl6lU9hHTlNitagRPOVvSkzuy8pUvp68GYk3roop3DmMCb75ylwDNWKRpmivtZas5UQEyA/lDYGW8WAM6X67SMSE6S0u2UFcKE6YImKUEiMS/+Uw3cYljwuSApSomeqxne9SQoUat+397B1W7ACpm0xacmBZb2XhA9Pekj5Q02GoFmoRIlVWKlL85eB4SwH0D2mgMwuBb/pE0URAuCEl/c7GnTr+dBiuCI7h4wBL1tUuIHxuWlVorbP5jhShq/e8cXw5WkXIjEUcFg3CYM7fOIyPAnAeOMnAx3viA4QssWZ7iCX7E7L0A5+MK4TZ5iiBBHp9BSPbH9WxxOfLiTShXiIEyUTorwy4+Ld6JgZb5ujbmYau9lErf7rpkMVoFmoH482bst7ne8Lq0OBT2P4JUsK+sADXxXuONpvGx+s/u4iycIc+cJMTwDTgZnHUDiAJBDu4m8wEiRtbgucD0HMqoZJNAFV6IJFI5e6Tc2cxtFThQoXzNMxhV8J8varzgzjJeOpEG/zl1NfCDxW4YkbKY+rG4bfeHLnutxwrDUQl0Be5slNbAqFT3Ry5OtAXdmKZD7g4SAtJ/MUVBAaDb6SwMIoJhVpB0og/tlxDT28RjRU8ErL32Lhp8GsJeRQsmi7iX2jG+syibwMGNPygPxeUZRElcV01n4C2qwLS7vm91AvKm0abFQHHPAPrZ/TUGFuof2Y6QeTlF8EPYlTu+svoYchVlpk6kwF/shmXoR2kiEqhTatoYeFbq1ANCyc9GZ00E+A+Ep3rJe2iSzim38gj70KADSMpohNHON5Ni+xsg/wFCw3kA5UZAJo2JGohodQFDmj5INE42vfwXRcOOKrE0tqgYwbSfzihg+E+E6R650kUoCePt4E2/NqqVLFlZt8932nVEjrwb8V+nPCVeu 7xiTgquu VwB2qQ5/fwVSbD6ggTih+YV17GJgrL+onWd6NfHrDt65TVlRX8fo3iuAKIR1hCH+8Gj4q5dmzMh6q6ucMR6VfPe7WSTMLF55fTbWVdQPz+0z6umEPzMClsOZdSOtIQGgjmD6OiMWQeozKMcp9ppf4DHIHF37j55XhjLZy2YlbcRVAztL9QQ5sZrhZ136GkenPVjfqx8dIFZsMYa/xZk1ACx/+A1Bjvf+spffZCbmtzqF0ihp2WIzECnUDVwklHVFajFmoYh05MXEGj1J7QhbeoG0Ug3PxHY9PlHaaGXrXKR4s1ssnHZKgpqoCwIT7UeZTRdE2Ii43KRma3hrlOzi4qcE+14Ch8WTJE0lEAeKmmN+0g6g= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000047, 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 (25/02/07 11:56), Sergey Senozhatsky wrote: > struct zcomp_strm *zcomp_stream_get(struct zcomp *comp) > { > for (;;) { > struct zcomp_strm *zstrm = raw_cpu_ptr(comp->stream); > > /* > * Inspired by zswap > * > * stream is returned with ->mutex locked which prevents > * cpu_dead() from releasing this stream under us, however > * there is still a race window between raw_cpu_ptr() and > * mutex_lock(), during which we could have been migrated > * to a CPU that has already destroyed its stream. If so > * then unlock and re-try on the current CPU. > */ > mutex_lock(&zstrm->lock); > if (likely(zstrm->buffer)) > return zstrm; > mutex_unlock(&zstrm->lock); > } > } > > void zcomp_stream_put(struct zcomp_strm *zstrm) > { > mutex_unlock(&zstrm->lock); > } > > int zcomp_cpu_dead(unsigned int cpu, struct hlist_node *node) > { > struct zcomp *comp = hlist_entry(node, struct zcomp, node); > struct zcomp_strm *zstrm = per_cpu_ptr(comp->stream, cpu); > > mutex_lock(&zstrm->lock); > zcomp_strm_free(comp, zstrm); > mutex_unlock(&zstrm->lock); > return 0; > } One downside of this is that this adds mutex to the locking graph and limits what zram can do. In particular we cannot do GFP_NOIO zsmalloc handle allocations, because NOIO still does reclaim (doesn't reach the block layer) which grabs some locks internally and this looks a bit problematics: zram strm mutex -> zsmalloc GFP_NOIO -> reclaim vs reclaim -> zram strm mutex -> zsmalloc GFP_NOWAIT allocation has lower success chances.