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 7412CC0218F for ; Tue, 4 Feb 2025 06:59:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B2883280001; Tue, 4 Feb 2025 01:59:52 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id AD87F6B0088; Tue, 4 Feb 2025 01:59:52 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9A05F280001; Tue, 4 Feb 2025 01:59:52 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 773DE6B0085 for ; Tue, 4 Feb 2025 01:59:52 -0500 (EST) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 017AF1A0727 for ; Tue, 4 Feb 2025 06:59:51 +0000 (UTC) X-FDA: 83081362224.16.9FBE60F Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) by imf23.hostedemail.com (Postfix) with ESMTP id EF2B1140004 for ; Tue, 4 Feb 2025 06:59:49 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=jMUZgx5V; spf=pass (imf23.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.180 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=1738652390; 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=b+YEQ3g7cuvAbzvyL1CtZJwjxm6Bf8B0jYPKPxe+7hw=; b=pX/ZuWhpwWLBWWXVyZIMqcXSzxeNbKnBN0CzkIsunhzTe168l++wDsXAjo7nqmbbP6Txjd Y9v83M+BU3phjhkk0uOs+Lm1cTkVd/cZZMK7esnLd2vsbStAdLWPpiJYmiPlhYBPYqjdLw 83gbJ8Oy+4IYRvSPnTaL0PhgPnsx/0w= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738652390; a=rsa-sha256; cv=none; b=z/w9pDVjjg9gxq0CEyvVFbbCpu5DjBce2XSIMuRZCnvrL4zu7YVYlZVfTOZR9ClEcBU6wT k930BABSmb+xyaEtPHgcpAfvOy6bYr3Vrj9/CGNzncpiiEPOxzfoENtL0nIAERmeXijzV6 9rSs4RnZXUvFifJ/XzjSL0SxJkEPqCQ= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=jMUZgx5V; spf=pass (imf23.hostedemail.com: domain of senozhatsky@chromium.org designates 209.85.214.180 as permitted sender) smtp.mailfrom=senozhatsky@chromium.org; dmarc=pass (policy=none) header.from=chromium.org Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-21c2f1b610dso122494025ad.0 for ; Mon, 03 Feb 2025 22:59:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1738652389; x=1739257189; 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=b+YEQ3g7cuvAbzvyL1CtZJwjxm6Bf8B0jYPKPxe+7hw=; b=jMUZgx5Vi4l3xGCfaIS7IjMxR17XyjDakzTCDct76gcHud+CMBpv6mARs2x+oW7joN 3pNbgfR56O6xGUt8MC+HcoK/3q2h4zBB4DYHMDc4GOmEHpqHikyyUTYjmGwvhqT5FNCN clKYLP5fWT/1TA+pqjFRm544UlDuCRdvHmvG4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738652389; x=1739257189; 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=b+YEQ3g7cuvAbzvyL1CtZJwjxm6Bf8B0jYPKPxe+7hw=; b=c2x90TKmr/UwnxF/FqiYmacA3oJtnjJav5RssnKoBz/JRACojv6Cjl5XlB9Lco/Yjm BYk7OH2f4UV8yTmjQ+Vf1qzalk+lF6jrsghErZnS2uAOhQB9ho0kxnMSQ7Lvg0m+Eq7k iNQU1skBBwNYP6RVL0VOS8IoSsu9kF8CRS6UfJAO8lmVqE9PJdrtr3uCrR6ayY/6mcnh bx7UYMKUrxOtcAy8JsVqwZW2kGuu3dT+TEIg3nTxwQvUHt6RkPsEFSlWsfQKsZobHnWX p8nzurueJh0ZvH5xsvKhDJtfnEV5Yeh+5RTIWisaVlFL1yeY411rur6J8AH5L3nOsEhj Motg== X-Forwarded-Encrypted: i=1; AJvYcCXsbjMeURchzJUYElHGKWLPprCxgcXpm59OLj2Kit6e955/aS6z71oDVLQyGr7RbMjnyJO6Vw1zag==@kvack.org X-Gm-Message-State: AOJu0YzUHKI9QlIyh4AFrdrLd1GK4SDcz7YMSxDsq0wznJZbzHz0EP60 tGqgexfS72OgpPh6iGpP6qmfk4pwgTmPPLIiBAcZV49ZNo+Oh0Mqa2C+0vuzYQ== X-Gm-Gg: ASbGncslpsKghgNxDxj5GwmkEXgd8T1GVDR4MofZa7+tDqe6kpcExUuihooFjgJ27IP VMj4gSZAtx2VNXBgOV0538uf8DoInvAIqkfjTYLFVdIzfX/YauQ9kEcgR0aYNdCCwTLNifM1Aij URvanClXs2AobPiEd+gpp2RjOjPnVT/Bz/uDRJIB8599E61UEni65tl/Bqc4UY/r16QcdZjJOTl ybtYHpZ9Ze3wDZQRviku9O8Yn++bYp8b0p0QfDgCQ6kq3w+dckbBZqoRpVFw8tSXxL+1GYb6+sC oLaD0smZroqn40EDZVE= X-Google-Smtp-Source: AGHT+IF55oC/PN1lc6ktg54goxJcr15MfhispZX9A93vkGnLFcyT6hS+K9BYYePkhcapgVnMViWuMA== X-Received: by 2002:a17:902:e804:b0:212:615f:c1 with SMTP id d9443c01a7336-21dd7c62427mr422142425ad.14.1738652388771; Mon, 03 Feb 2025 22:59:48 -0800 (PST) Received: from google.com ([2401:fa00:8f:203:5d42:47ec:e16e:5797]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21de33200f2sm86950525ad.242.2025.02.03.22.59.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 22:59:48 -0800 (PST) Date: Tue, 4 Feb 2025 15:59:42 +0900 From: Sergey Senozhatsky To: Yosry Ahmed Cc: Sergey Senozhatsky , Andrew Morton , Minchan Kim , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCHv4 14/17] zsmalloc: make zspage lock preemptible Message-ID: References: <20250131090658.3386285-1-senozhatsky@chromium.org> <20250131090658.3386285-15-senozhatsky@chromium.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Stat-Signature: ko3xkonb3o6muwztmj7m4ymgh7kcpezh X-Rspamd-Queue-Id: EF2B1140004 X-Rspam-User: X-Rspamd-Server: rspam06 X-HE-Tag: 1738652389-267313 X-HE-Meta: U2FsdGVkX1+7KgmgWDp5ceYcGGDQhCPDJpVGabk5YdzIPmUOBA2ywtmUFjE30FjmG8GM5HYH7DUV87zwP+Y1GhnxI7V4P1Skl6rDNv9HNfelvuqca4V+8q42F/5jD/RW2CZYm6oX/ZKa5hI51W0JXSIH2AiX4pwf6uuBzvfYTD2yFJTVrIHC8KHprfNUCJ4w9onj3Vz88JL1UWgelS8q0SfvJff58jom0nWorM8kvtTXGx80hG7++VjBMg9MPmrMkaaU/r/RMEPQlAwxVxHN0o1Ep6T5KPXQZMuSq43jlTAk0Dy9GcllGCGafxRm/rTLd6Dmb+rNq0R4tPEl6PA94c9hGsQGgEfXnfnokqw/0gmhN1X6cOoDFlvNjCRAi7QLase5dKJvOSW3ycIGoBl+M1DAjcR334WlTIFbP46dTBsR+rUePfCRGn23Ak9U75B5HbYJ0k+dayaE4dHldnxTBm9/ZWnVwQBKCfUDMPcplTygz7ihZyCeOHMJTRg3N7tqgVhBEriTLsJ3p+g2ZecWX2nPAi5pm6M857jmmqGpVd8OLwFe7MvgQRgqR0OX03fbeidNk/0H59LR2xSga7U1/xk+d00teSxxaQ/tM97W15ctYKazWDI2z7XQK3tSPfbZq+7nIiNJxqlaRx8FrtfACVpfEWvpJy40p13NV76SShuTQuRWO+1tP8dX+Ubh1Q7PDVKDKgAnFFXTG0ObjqitFlkTQaWugcg0CdVJjgA4GL0RuYkePNmQMDjzQjlr11Oti8hXs9SG93iQPZmKeoOlHG8lgmtUEMbn/EPddi0lVvnNoNrtmA1evn4VDQWm5IYsc3Kh/DeegpUKxKskRdpSMvY+6ZvNh4tF5wyKZP4rDHHn4MROvvkQuhRIG/tuhMkSuMiewtXJ2ly+ZZBDK6d1oOHZ5mSArizyVAK3w+bLalkp8EV+xDmZ+bDRnsR3VwqUrcx89NzZCKAQi/nbNFe 7/lzZXco bSPBhJ4qWU8k1xo/70sVua76Sn5krS/w2Rb8A3OjVfcgAyHr8FP3njfD+LeJtmOwER8HXNOoPWaMYbhLfoTE/dd6YjHuA7lrSrv6YSCMQOK4deGmGG6/qb+Vj8J2+wLf9Cxje4JRlLXE0JoiLf2bWfetnBPhKLclsDOASuLP+3ayo2jGbN1XoSmG8lab7f7GX0i7Zq5ChfliQAWhawczWyE+VyUCX1mDlLHXVbuc/v43mBUjg03lZb5MSSyVq0g7iaOtGgOQeTOr+wBF/Vgb/x6/cB7pbG2Sn7vmlJdBwLf8fYemIbYZm8G1ZkMlW/qCl0YfDA3nzknFy2al4kRwdlf14Q/9upRR3Feti5A58qJNSKsB/QnXEVNu8ibKsfaDtxyLfzgmk754DnkhFdqyTGm2lsGFVmZULBLSdsybPGbyTHhvO6bp9QMXwxcdttL5Ri8y6D821uOkIn25fx/jjo3iMEeSvJq4qWbmRWM1B3WxR2FRa5/YqBU1dFg1dpmqQScHpumxAaISp1G3NB5d3ZU4vmTEDLYU5ereSIvN6PP2xrVXmKmj1xQBMA7gA0cawySEbtinCe8UExT6LneCmjt7GVl0zxhHXdC34EW6cBYBunGCPFOt6uCnOQR5dXmbbV3C2gV1ueFTITPbZ1fbsSidylyR8+L95B7BVFXEd1cHWL7Ua4S/FQTwG02ZOZrf0xOcRJMKlCCx88nwOrHLFP6LpNCykLJb3g2lFQ7z+LTa7Dv3nacLk23US2h9ZNojYbBvstgiuqztKKc8QaLs3LxP8SVY5Tx9pjEigs98+WFbyasSgywhMNlg++J7tfRn7S2RP3/QE/GroPhoEaqbv+tQWWIX0nmkugkcNS/x5zESNhErMHNOaQHsmF4KNCsVUGGfHJZsNNDylbT4iLkNgy0zNM0wRAEXbnQwNRd3Fz5zNvx9MR6SzZhzR4qGfSYH6D4sy9GGEpYv0hHZm2u6LLf0iMQ3+ +FHNDnhX XZ0hfQFS9mQNl796BpaWJ5H2Us4aWZkc+jDkTLLRcg/pmzMtiUtO7tQXDFXuTFjMLvjfmTMW1Shw9Ox01sNKk0S0RBVjDRTLl0/pi40iYerDXVsittHAcpZLzi6EYMg+zRmn79l8p/J5uTLhLtNca/iuqlIVGcyXkOk+oojnkAsUJgIUn/6vs4ULmtvmtYpgiAaeMVwOWKQ5GZ6bBMhAoS1pamJ95Dywv6eEI8b0+XHzWIB9PPSWW2VOkU6UYVguBOyDxVZ4xtelIie4TAvAWYloF1fRkbPy3aYeI3R+ANKBZxHY8UUgdi7iuqszAc3UtiesyciNJ0HQrsmffuDBkdharcuXj21tOBRO/zgeA7B4FUYx11hAuo1Svx9bzUBKXgkiPiR8JjkoS4Hfa5RtBGjh2O37zqDVoVx0QLLd8W+z5mW038FJ9qvm0Z311y8M558kHSXvcCoqxV84HI/eK/d11ryQwYBB5kVmz7U1NDZKz/nV4XE+fyqveMkqIhM6rUZ0EKyNzR+Cz57mAbOEMgstkS3toLkMDpxYQTDL/mA4J8R8vTcMFI+6chEqd7cxUT099P94vOf2leLg4JweQOCjbKXyTfUuGHpdtM4jRwAHR22x42infR3Cb1MY6FubY3xBOpo32ZjChdaYhhBjwzy11U6nYiInQ/KkAk0nE/ZDAJBR8E7XP5LfH620u/s7IA6ZTpRUHBd/Y0exY7nFAkqMJk706EqZEe12yP6tzVA+IW7sv7vNK95g3aieju+DFMB/ehlwdpkHJbp0EZeY6EQnIwMV1vk4Swo3iMfoGNlo9kGUyv0st6yNOLWaVTQSHdj6wJjhk/55lJUe9BTrf7mKDrjcFktTldj+M5rGP+wHl0F9dcmMiJ27C9dKGlmRrAk3ouY/PAC1jXJ4+vo7G+B3t1i2QaQ0uMGYGexP6OylW4Fq6IA1f/Jgkv36F/54W44HgkgtnH17mjucWSq6stiwYc9D5 +A32pGCR vVklnRNiUv6UCcbRG6+YAFnPc8Fn2jWh+Dj5Txkfhr1v0nMsnBftHnkLDSUrDgFoI8mvBgM3LhtR02WjP/lKZPW1FZlJ358Pr7JjdD4dnjRJdoKzZmrPgVwLasbClZzsOMBjMSUMNV2cvFsN6/8lkZ5mqgWFxPuYBcl29TqUkkTp1oY71hLZvEWERdr/JdAAKZdLumX2nZeO9DaVuMIKO6MRyenKLBcs8RzMqur2C9mInuk6Jsy5ClfDg6HEBiav/TLFoxHjNdQ4GuZp/unEZKT9EAN1t/hUgf+7OxqOFLDhDtfQXYjEO5/f+aW/83neo71/R7Bjy5x8rzGywXNrBZM5ZDXDzeej5xOInxQSHBxSo3S8fzb6pPBQNc5dYsavyvpjY2BcLqAoJIehqPQtaqFOpA8MNTCsVCZCMdoHALKo9KkOt9mHiWfXpUH1OPeMaIETNMUKSA+afNJFz9M69dWLGiInqMq0z4PCRMp34HlJU0DLKBj+A/cgUjyWS338ck5G39m2FhRUgeE/kZa2ENyUM8MyuzlAxm8F7J4ByuiTfG4YfYEGXc9ylTr/N3YhVWvqL1wH/w8NGkQC37Mt/DHGHcUOoeaBfZTZUFep0D/+9nYgUVCbeX/GuXTmZxxGwEreq7yZNyQIUWWzDLyAR7DI4FnT20LANzRSJT7mqs1aENYgf2hWs+WDH4+RWZ7P5UpTiGWD4Eh2yV+FC1vHbnHmoWD+nEuvoqMeVSTZuFdiBsVGZ9ZHSkP4REjUJ0L/UepybF2wg3cHps71shTaTcsmWC+ti9dErWk6iw94BOv/yyTMutEH1UVv7FTCRr39H09+CvPU4tRtZ54AhE53Cm8rxO+lFiI0YJEoz4qj0MxkDzVddeI0CTNfFeatEN6pi4sDfQ= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000002, 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/03 21:11), Yosry Ahmed wrote: > > > We also lose some debugging capabilities as Hilf pointed out in another > > > patch. > > > > So that zspage lock should have not been a lock, I think, it's a ref-counter > > and it's being used as one > > > > map() > > { > > page->users++; > > } > > > > unmap() > > { > > page->users--; > > } > > > > migrate() > > { > > if (!page->users) > > migrate_page(); > > } > > Hmm, but in this case we want migration to block new map/unmap > operations. So a vanilla refcount won't work. Yeah, correct - migration needs negative values so that map would wait until it's positive (or zero). > > > Just my 2c. > > > > Perhaps we can sprinkle some lockdep on it. For instance: > > Honestly this looks like more reason to use existing lock primitives to > me. What are the candidates? I assume rw_semaphore, anything else? Right, rwsem "was" the first choice. > I guess the main reason you didn't use a rw_semaphore is the extra > memory usage. sizeof(struct zs_page) change is one thing. Another thing is that zspage->lock is taken from atomic sections, pretty much everywhere. compaction/migration write-lock it under pool rwlock and class spinlock, but both compaction and migration now EAGAIN if the lock is locked already, so that is sorted out. The remaining problem is map(), which takes zspage read-lock under pool rwlock. RFC series (which you hated with passion :P) converted all zsmalloc into preemptible ones because of this - zspage->lock is a nested leaf-lock, so it cannot schedule unless locks it's nested under permit it (needless to say neither rwlock nor spinlock permit it). > Seems like it uses ~32 bytes more than rwlock_t on x86_64. > That's per zspage. Depending on how many compressed pages we have > per-zspage this may not be too bad. So on a 16GB laptop our memory pressure test at peak used approx 1M zspages. That is 32 bytes * 1M ~ 32MB of extra memory use. Not alarmingly a lot, less than what a single browser tab needs nowadays. I suppose on 4GB/8GB that will be even smaller (because those device generate less zspages). Numbers are not the main issue, however.