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 DEE4BC4332F for ; Thu, 14 Dec 2023 13:29:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1C6DD8D00B8; Thu, 14 Dec 2023 08:29:45 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 090A08D00B1; Thu, 14 Dec 2023 08:29:45 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D879E8D00B8; Thu, 14 Dec 2023 08:29:44 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id BD14C8D00B1 for ; Thu, 14 Dec 2023 08:29:44 -0500 (EST) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 8C1971A0BFB for ; Thu, 14 Dec 2023 13:29:44 +0000 (UTC) X-FDA: 81565506288.29.DA260DE Received: from mail-pf1-f174.google.com (mail-pf1-f174.google.com [209.85.210.174]) by imf16.hostedemail.com (Postfix) with ESMTP id 1D544180029 for ; Thu, 14 Dec 2023 13:29:40 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=RjXXk+y6; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf16.hostedemail.com: domain of zhouchengming@bytedance.com designates 209.85.210.174 as permitted sender) smtp.mailfrom=zhouchengming@bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1702560581; 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=6x52DBZpfua9cxAmENqISqp3cMd8G5vLCGCNrNchwyg=; b=XgMQd3fS+Bq8ZhV8uYvbvtiCT8DJ9PTYIQ8ucfesdLjEUNVJFjb61sUTXdKpPnu6vBn/We qNCTD/wPOqhEJidV5Sw/XOumSoYZGAuPXVnRxBMGlJB2umYbAHU1wWPs9o+iK6gQ6g3I/J 4CmeW3W1NtfRQIzCksb+ILArXGlHLQI= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=RjXXk+y6; dmarc=pass (policy=quarantine) header.from=bytedance.com; spf=pass (imf16.hostedemail.com: domain of zhouchengming@bytedance.com designates 209.85.210.174 as permitted sender) smtp.mailfrom=zhouchengming@bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1702560581; a=rsa-sha256; cv=none; b=QUpmkZRY4cBNThurU7HhC4YcW89EsF2Wt4W8tYw5QYK/2ILi2nQL+idNlbmLczM4XfHafW F3oxViz6Pg6i3yDTXTWWSDOQt2r/j7iNSXjxxhPhHu6+YMTh/pZC2P2vSTmDlOEImoWMDz 54HLGuPGkOlVnkzpWGnReJ0mjy53Ikk= Received: by mail-pf1-f174.google.com with SMTP id d2e1a72fcca58-6ce72730548so7444707b3a.1 for ; Thu, 14 Dec 2023 05:29:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1702560580; x=1703165380; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=6x52DBZpfua9cxAmENqISqp3cMd8G5vLCGCNrNchwyg=; b=RjXXk+y6yMORZ1gSWEGd/PMwesfkvMP+59eFI9ikbE9CVb79j79TP6YMpQQB0C/MkN QhtHUbDTI5YCJmJVi2tyra2uV8Q334jrU01WF/o/nDIz751s7YVsjXzSlOxlydJHuY+W zJDluUk78S6qa2UD/oZ+P25k6Oe2w75l88tIBaH8fi7fsB9mI3b9liFPDfJSoF1vgUqS J8EiFtFtnMOZUFL2gZwUsQhB8toteF3kyD2lWGXORyciktOZQsevdB+iKqbuTKzN7F56 zJtLDv2JKNfdx4ZBf3Rpy1ClTzPjepxnpSuFfBYd0kKJFNLF5ahp3YiA/XI/0zU1PJz+ R75g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702560580; x=1703165380; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=6x52DBZpfua9cxAmENqISqp3cMd8G5vLCGCNrNchwyg=; b=XFmHmuE4gsBaijN8BBLENt4FZzmwMm4X8tt7DotI4PHZlixqgmmecPzCgek6ZpnvCC sbj6VnzoxDIKM53Tz2Pd+oUA9NNlWPezqotd52pmE02oNyQlUNq/tUILXrX08sJVMN/c vPTW7yzb007pYUdk46cGeDGdzK9FSpd+E9gldGOMfamEe63VAaCTNo1UZC5/bH2i478x pudoAnTRZgM0VEVKq+1pC+zjZ7ezP2t97iYK3wx4xoHmzKRQj0BcZ85a3iEppFG1HLmH y5Z+TUFllnMFfwQbak0z1SlkFKfuzGc3T/hK4IKG1voPEUeGIB4rx51Wf8iygB+/+WXr DNEg== X-Gm-Message-State: AOJu0Yyf9Q7H2VKoNHi/WAwPao/MC6bPi6CR2RDV+O/AV6gRJbWQXWzI kh0s0r9jropNcdDusGtoxkfWFQ== X-Google-Smtp-Source: AGHT+IFR+jXAVVpINTFZCnPAKlqaUXI3xF8Yt0Os1F7FhAaO8Z078X/Nlb3YDFposQNF/Dg47kqkOQ== X-Received: by 2002:a05:6a00:b53:b0:6ce:6c54:24a7 with SMTP id p19-20020a056a000b5300b006ce6c5424a7mr11444443pfo.1.1702560579661; Thu, 14 Dec 2023 05:29:39 -0800 (PST) Received: from ?IPV6:2409:8a28:e64:34f0:4525:57e4:217e:6e2c? ([2409:8a28:e64:34f0:4525:57e4:217e:6e2c]) by smtp.gmail.com with ESMTPSA id y33-20020a056a00182100b006cc02a6d18asm11820379pfa.61.2023.12.14.05.29.33 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 14 Dec 2023 05:29:39 -0800 (PST) Message-ID: <8f80fe3e-a8c7-463d-896b-99575c362839@bytedance.com> Date: Thu, 14 Dec 2023 21:29:27 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 1/5] mm/zswap: reuse dstmem when decompress To: Yosry Ahmed Cc: Andrew Morton , Nhat Pham , Chris Li , Johannes Weiner , Seth Jennings , Dan Streetman , Vitaly Wool , linux-kernel@vger.kernel.org, linux-mm@kvack.org References: <20231213-zswap-dstmem-v1-0-896763369d04@bytedance.com> <20231213-zswap-dstmem-v1-1-896763369d04@bytedance.com> Content-Language: en-US From: Chengming Zhou In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 1D544180029 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: zco9cjnw6k1qt5s48ho4jmqjfxgukc9m X-HE-Tag: 1702560580-936294 X-HE-Meta: U2FsdGVkX181cUt0wiTiGbr6o6UIc/E7tISEF5RUgfn/YWsF4k9ArNB3iLM7lCXkQQ37zsS1OW3X2J0dn63IrZVdLj1pX/ZBXQy1OQt+6Ypvpcbshrzzd/lD3QwFvRDiFjHh0ZYIlXnRL3HI0CcIG5tBxoA9/bj/H4h/5OE3JlNv8i9FsPFNyhlLNZZN8yqPZ8YzonK4rSZiWk45QWpWDwnqbl7OZZzqDlfje8DE+YIIow0BRgUo6RH4ThUs1NGJaM1mBOTdRCvEq6zT4I16BNyE74BcSRr/gUq3vBueM4L4fbkf+YgoO1fcc/mNlSlpuar88ZaHFsnB7K5dPfjRwwQhV+UzKfyg4y8EtQOBHKc4jfAhYdENoc8kZzOGwFCTou3DLcoagYnWqfBZBfVY4/EF+aeFVEE7WcUUKyaDvsCLhsYN7c7ISg0A7DoFf94qr8JCWDNZOae3a02uf28tRlB52i0lBF1BzP+W5WG99onGFIVF/PycNflMc0lEW4bX+wFnXRM25T/w3eo99m3gaYDtlTm2y6g4jEBx3iZo8KPpsV60NYtcav3QWOCiZAsU2ZI5GlpHCeHwcwIO/GpIidT3Ts6fNdER6cHIk/VATQAloiigebi6hSZKeQEAh1XconB7K7CV/vTYggs39iH1UjVN5MoTV/R6Psx8j63dsKav/SfPDTKXobuZzFWUCqqVmtcmsKSQ4Kem2XAv9Q/ix3FmgYdyNWtWTA69zauMLyKAtqRGW6W3W1XN65tvq8rJTca43P1ZYb5yf9wJI1aMGfC96ys++LMRKhruss2ZtHUbt3wLBHW7T4+Q/LretN+fwnBzFdHU1jO/qW+adMrDyTAYVvRVZjWaVd79qAFFlCf6D2ayPm5OKP/Y4SiCOYChvR6Y+TwTHAF6pqmfVUePjlSUu6bL130D/prtXwPAqHpORGUDIFguUC2NtgaJ3b04ADSZTW7gTzkOneXYk5A d+P+lCRw BSQAs6+aulPjIVZ55GfSuJr3GOpEfcuEICMTzAN2cHfOP5NrYUHgQXP14uReyH16tQCis0wHsz9glkQtbm8YUBaJ7oxZE+YVpMqY7cboEL/+eknnIni7muHSnQgHiTRYSox3tuEvGrwWMnRlRANrpa70an/B0aGPmoXX3zwZD0/PhmJamLdJmSmFwQGNaAuBZdIk6F2CF/i6XfLj/gxpMx1UBFCHJ7qMsspGD/4fcig5Kd1bYQAPmj9fjCb93F9nHa+64haAAuWm0slM97u8nzdjSxxWiPAOAX4rZT8Wnv4XCsvrCRXTJ1BgUNCmeHtZh9tnghKUlvjTVoLHhtPweV0bcWGpNWunuxV8DMicLK2Qmt8B1syXywYrLQttdXg+wUAuSJA5g9MfI6AuxxdDG7XhhmwieJARHkpRfytZnmONO3OgVgDjn6PsIo6XMQh51a9F9XaTurhwryc+32Yclz2XsxuWkxcHS4L2MSX+ULm2f1xdeOApF6p627g== 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 2023/12/14 07:24, Yosry Ahmed wrote: > On Tue, Dec 12, 2023 at 8:18 PM Chengming Zhou > wrote: >> >> In the !zpool_can_sleep_mapped() case such as zsmalloc, we need to first >> copy the entry->handle memory to a temporary memory, which is allocated >> using kmalloc. >> >> Obviously we can reuse the per-compressor dstmem to avoid allocating >> every time, since it's percpu-compressor and protected in mutex. >> >> Signed-off-by: Chengming Zhou >> Reviewed-by: Nhat Pham >> --- >> mm/zswap.c | 29 +++++++++-------------------- >> 1 file changed, 9 insertions(+), 20 deletions(-) >> >> diff --git a/mm/zswap.c b/mm/zswap.c >> index 7ee54a3d8281..edb8b45ed5a1 100644 >> --- a/mm/zswap.c >> +++ b/mm/zswap.c >> @@ -1772,9 +1772,9 @@ bool zswap_load(struct folio *folio) >> struct zswap_entry *entry; >> struct scatterlist input, output; >> struct crypto_acomp_ctx *acomp_ctx; >> - u8 *src, *dst, *tmp; >> + unsigned int dlen = PAGE_SIZE; >> + u8 *src, *dst; >> struct zpool *zpool; >> - unsigned int dlen; >> bool ret; >> >> VM_WARN_ON_ONCE(!folio_test_locked(folio)); >> @@ -1796,27 +1796,18 @@ bool zswap_load(struct folio *folio) >> goto stats; >> } >> >> - zpool = zswap_find_zpool(entry); >> - if (!zpool_can_sleep_mapped(zpool)) { >> - tmp = kmalloc(entry->length, GFP_KERNEL); >> - if (!tmp) { >> - ret = false; >> - goto freeentry; >> - } >> - } >> - >> /* decompress */ >> - dlen = PAGE_SIZE; >> - src = zpool_map_handle(zpool, entry->handle, ZPOOL_MM_RO); >> + acomp_ctx = raw_cpu_ptr(entry->pool->acomp_ctx); >> + mutex_lock(acomp_ctx->mutex); >> >> + zpool = zswap_find_zpool(entry); >> + src = zpool_map_handle(zpool, entry->handle, ZPOOL_MM_RO); >> if (!zpool_can_sleep_mapped(zpool)) { >> - memcpy(tmp, src, entry->length); >> - src = tmp; >> + memcpy(acomp_ctx->dstmem, src, entry->length); >> + src = acomp_ctx->dstmem; > > I don't like that we are now using acomp_ctx->dstmem and > acomp_ctx->mutex now for purposes other than what the naming suggests. The "mutex" name is coherent, "dstmem" depends on how we use IMHO. Change to just "mem"? Or do you have a better name to replace? > > How about removing these two fields from acomp_ctx, and directly using > zswap_dstmem and zswap_mutex in both the load and store paths, rename > them, and add proper comments above their definitions that they are > for generic percpu buffering on the load and store paths? Yes, they are percpu memory and lock, but they are used by per acomp_ctx, and the cpu maybe changing in the middle, so maybe better to keep them. Thanks!