From patchwork Mon Dec 11 03:52:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Liang Chen X-Patchwork-Id: 13486640 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 368F9C4167B for ; Mon, 11 Dec 2023 03:53:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AC3C36B0095; Sun, 10 Dec 2023 22:53:11 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A74316B0096; Sun, 10 Dec 2023 22:53:11 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9145E6B0098; Sun, 10 Dec 2023 22:53:11 -0500 (EST) 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 7EDFE6B0095 for ; Sun, 10 Dec 2023 22:53:11 -0500 (EST) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 5A10D1A0632 for ; Mon, 11 Dec 2023 03:53:11 +0000 (UTC) X-FDA: 81553166982.21.FED0E32 Received: from mail-il1-f174.google.com (mail-il1-f174.google.com [209.85.166.174]) by imf05.hostedemail.com (Postfix) with ESMTP id A7A2810000A for ; Mon, 11 Dec 2023 03:53:09 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=E7LCao5M; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf05.hostedemail.com: domain of liangchen.linux@gmail.com designates 209.85.166.174 as permitted sender) smtp.mailfrom=liangchen.linux@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1702266789; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=U/BjbyQjJec8rLWkFIX9Q+pRox3mm5m7LDPhOp654os=; b=2PZcl9r5ORLpyGCo7UOsrmNc7k4Ozwj4d5QsqiNoYCujops+/yM2Tjmi66LgTimed9XMFA OAsFomtxDE3CVe7ZSVq7aeh3hHTOGtgv4RZQbeW0zrpLBiov7pNwhYjYWY0TaxHZDHQKWw IYnCFI0hmUYTSCPcfLo49xfAvoNe/EA= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=E7LCao5M; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf05.hostedemail.com: domain of liangchen.linux@gmail.com designates 209.85.166.174 as permitted sender) smtp.mailfrom=liangchen.linux@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1702266789; a=rsa-sha256; cv=none; b=I+n+fLMCTlBTsHB7R0lfdWPNxmkDfac6LUFGLKX0elAIB0W250kcv4EUEEdotMgxZLB+D6 K7p5UHTCQFfkL2D7j/gOkSnKeDOfH1KCVK8a9EgwrlOYf/5DLcHW7T01mfluw2YvD/vL3m IJDzFXZTeV+6JqmCnMBFkk70FlJH2dA= Received: by mail-il1-f174.google.com with SMTP id e9e14a558f8ab-35f56f06142so443775ab.1 for ; Sun, 10 Dec 2023 19:53:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702266789; x=1702871589; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=U/BjbyQjJec8rLWkFIX9Q+pRox3mm5m7LDPhOp654os=; b=E7LCao5MQTZQp8uonO/42kKhaEbaloEfhgOFUvR1P+rQaLYsYXpX+4RE//xXdSdgtK ZWt6Ln7L5YwMvgF6gai1A8SlG9lIi47l9SuFB2W/+4h3HePKpGktED5My5o/ddw9cTEd kAK0USPb/EbmCvDpDQXohGvNcFFaCiO02/cJcpKu+k0M9cZcphzapTKjD6m9jdiVyU8m gcUgIwbZWHqYUBmXxk2tk3SFONThpgzU5Lroq/5eQ2JeR1XDpmAD3aHUAylM3UrrA6Dy a2TDxm7M0fuhu94IvMJASWTu1kz23gcT0lYzZmGpX9nhSvDxBParRn8pZiyLYW9XYJpc v9QA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702266789; x=1702871589; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=U/BjbyQjJec8rLWkFIX9Q+pRox3mm5m7LDPhOp654os=; b=pWTJA91gx17WC1rYksZVsBKIjlV68+dDONUudyDvv9+fkSkP6wDV1Ks6Xd2g3L/FAw xncErVK0ZZNiZHhiVz5UXxnrVYTYizukw/RrhEsbO7XYfOTa2p4wjq+dufPTKC7qVeJR AWNamRV2fQtC8k0PTN3jkXgm5liP+L7mH0wmIXgQdC8f+R15sV48g+FUUTGMyD/uBybg UWTOcHu6bz6qI5FoMrvB1WSs0Xrj16RH9SgrEzk+guRihdFSlYKMbTFKIKJL7DAT2gn4 1U7vy22lGfDyNltMTgjPFHE8xCzAotqzA/HziZx2VPabki39kxAwXBMOConKQ+imYf2Q LiYQ== X-Gm-Message-State: AOJu0YziQ/tXL3lrk9DYB8r0zmKmlAqoMFKCAUJuHOniYJ2mHfjEYuvG SdWdpgqpWcf34elxIcIhhw0= X-Google-Smtp-Source: AGHT+IEfhLY9sdgn8OVOIgj4Wz20yRIZwgJ0sx3lwaM/MQur6utggZeRhvWq6YNlaD564IPzyY1OBA== X-Received: by 2002:a05:6e02:219d:b0:35d:66dd:ca6b with SMTP id j29-20020a056e02219d00b0035d66ddca6bmr6883399ila.7.1702266788808; Sun, 10 Dec 2023 19:53:08 -0800 (PST) Received: from localhost.localdomain ([89.187.161.180]) by smtp.gmail.com with ESMTPSA id b8-20020a170903228800b001d052d1aaf2sm5411491plh.101.2023.12.10.19.53.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 10 Dec 2023 19:53:07 -0800 (PST) From: Liang Chen To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, hawk@kernel.org, ilias.apalodimas@linaro.org, linyunsheng@huawei.com Cc: netdev@vger.kernel.org, linux-mm@kvack.org, jasowang@redhat.com, almasrymina@google.com, liangchen.linux@gmail.com Subject: [PATCH net-next v8 0/4] skbuff: Optimize SKB coalescing for page pool Date: Mon, 11 Dec 2023 11:52:39 +0800 Message-Id: <20231211035243.15774-1-liangchen.linux@gmail.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 X-Rspamd-Queue-Id: A7A2810000A X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: rs93amohocm9xzqjwmizzxb3zcp4w7h5 X-HE-Tag: 1702266789-512687 X-HE-Meta: U2FsdGVkX18ILTB6fpv9gXYjO5gYWPMxLePZ/+bcuYiwkh+m4orsSabNX/0TfmOKgKaagZvDYKMgZ+Ck6ea/8fKHNlKG6LnbShTHqWQfShXZM2Pwrsv9gwqziIt2QgxOcHRAAPEcZ6P75ABFFnsyIPsbYeSyv/gT5u3M9BCruBsZzWAx4S0oRbSARAVNHfHb5/WpUAOt2lR1m2gY6XJiN569/02fqTr3qk+3cpmnZvRe4lp4lgBKx01Q1+1Z+Mgh1gxZ2QobjdQaVyoOpEKj9K76rDJh24o/OTZN5PBZB6JTkPPacM46kI13L4Nj7DXGDVyQfN6YfdDl5cosDumjiNvv+KaGKjBc4gGDqv28fWC+vzyAFPsHeLfzDmjmj2372QR+pvDH5uoomxkeA/bYt5qGWYzNPweuu9bfx4lMtAM58pzxzkYX8AbR/tiM1VaiXxWQ05k3+aTy1UX19oBN71hmZirhMYX250oH43zZCAqafaoAXwVloXGpkIbrokf8cqwEOGAuoxxZSPdQx5958Lkgf28iYsThuu6FIQpwYI1b5Sa0Yw7KQMPiGc/SQnf4tBOFqqOH+5kvtAOasOk2fZ08LAY/c4TGDz6YFqZvLQDEEczxnOmHtCLf/j8vdSotz3ATdZ2xYVpn71ixgKLvx8ZRBQOpLqF/wXhaE/bplUC0jL9ZrAeOjWQxjl2orZxsSQqAWzHXi4vYDMH4S2qcrwTVpbEQy8GagOUaeHUtT8afjn2WUXIctWkt5b+MIjDq7hFix+QsRB1c36uDXyGTPe3tYIOvqRwXyIg5YzMepiV3jAOvXDDS3WdIeyy2hX1h4eUj4AXt8vwE9XBH8Cbfp0V2iKQLc808oQE7gzRDqKIDguA1HSOCITutE/KQvybiPwtdoNXtPHD9zJbEniOuQFTb/HueimvdlfHXpufC/OzK/goJz5ffh3ZGBeqMV7AVQQ7ftVLrtV13ggT3ixk inj0U0A3 PPaHUuTUdzhp4J3q4Q14S3W6zyt+LNUw5Or+J3TJSibZaP+mctmkQi+d71geQdvq4ohp9JTEEtVsn4lttZEXN7RCt4c1glhCJkaXm91D+8Ka254JWR4BsqyH0+dS7iIPiTq/gSwbEaJSzRxlCbqjcZLw9aVhPzHCjrVcDsUpoJjxU20sTiHvhvNgtmF3H8K9cxwwDj/6ICQ1M9O0vFeIGhFGuhxA59aEOyob7006iD058nVb6FmZhBOO8buaUjcx8dcEAtLJB5dsIHEjyeKa5dzQOaGIypXAiO0VXewAfYQDk7WFkCwfY47EDx+MmXqCa1S7THZM2mG8YjoMeNOGPy+SiqAjtvoysCrBuB7SJtylb5mXtX/skTI9/ue0CN3+LMFs+EBzHPAZNcx+I4ec+cA9koBnu4utSbZVK78lpLJOelDpZjqs4IXD1kuBdb5Y4yn3a7Lj1LIze7t/hWWrLJmlv+vLzfSF+41XCVuE/lRsWAU6XH70FIs7t7BK1Ei4JCfJGDN36zYtpPJdoYrJ0CyfKaw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000287, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: The combination of the following condition was excluded from skb coalescing: from->pp_recycle = 1 from->cloned = 1 to->pp_recycle = 1 With page pool in use, this combination can be quite common(ex. NetworkMananger may lead to the additional packet_type being registered, thus the cloning). In scenarios with a higher number of small packets, it can significantly affect the success rate of coalescing. This patchset aims to optimize this scenario and enable coalescing of this particular combination. That also involves supporting multiple users referencing the same fragment of a pp page to accomondate the need to increment the "from" SKB page's pp page reference count. Changes from v7: - move informative documentation for page_pool_fragment_page Liang Chen (4): page_pool: transition to reference count management after page draining page_pool: halve BIAS_MAX for multiple user references of a fragment skbuff: Add a function to check if a page belongs to page_pool skbuff: Optimization of SKB coalescing for page pool .../net/ethernet/mellanox/mlx5/core/en_rx.c | 4 +- include/linux/mm_types.h | 2 +- include/net/page_pool/helpers.h | 65 +++++++++++-------- include/net/page_pool/types.h | 6 +- net/core/page_pool.c | 14 ++-- net/core/skbuff.c | 48 ++++++++++---- 6 files changed, 87 insertions(+), 52 deletions(-)