From patchwork Mon Sep 16 19:19:54 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Olivier Langlois X-Patchwork-Id: 13805763 Received: from cloud48395.mywhc.ca (cloud48395.mywhc.ca [173.209.37.211]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 95722135A54 for ; Mon, 16 Sep 2024 19:19:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=173.209.37.211 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1726514398; cv=none; b=EeAx+zcS+iQ5wSmcuXuy12GTNEXK4u2DR1vk4GTevid6OVMW/60xIV6jX9PvosBIKnOoK5ZpjlwJdGtj5gsRtKEl9CxSpxZMERzd+Aghtu33xKPWRmEjjQz4vDsj0jSCFXmUomAOKN7hsvu/L7QadGcdRrnmkZeHc1AOTsloKYo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1726514398; c=relaxed/simple; bh=8JUx80E+n1YEEhG5INJ58nXdhpQP0myBE5qBc7kWb/c=; h=From:Date:Message-ID:To:Subject; b=VwltEMLqbfVay8Rai2E7+X7BNMVUTnc9SMafisSS/MgK1Y2ZGP695jAcgApW5qaDWojoSFJg63YpXXOA0BikkDtO7E/Bc5ZfcCn2wRn9XzR5OHSh427ZqTpXMEzYNz8MT03ZZ7hB11093D3zZz/ruYItREc8+GSu8R3qMpuTNtw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=trillion01.com; spf=pass smtp.mailfrom=trillion01.com; arc=none smtp.client-ip=173.209.37.211 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=trillion01.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=trillion01.com Received: from [45.44.224.220] (port=40090 helo=localhost) by cloud48395.mywhc.ca with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96.2) (envelope-from ) id 1sqHGN-00065d-0i; Mon, 16 Sep 2024 15:19:55 -0400 From: Olivier Langlois Date: Mon, 16 Sep 2024 15:19:54 -0400 Message-ID: To: Jens Axboe ,Pavel Begunkov ,io-uring@vger.kernel.org Subject: [PATCH v2 0/3] napi tracking strategy X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - cloud48395.mywhc.ca X-AntiAbuse: Original Domain - vger.kernel.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - trillion01.com X-Get-Message-Sender-Via: cloud48395.mywhc.ca: authenticated_id: olivier@trillion01.com X-Authenticated-Sender: cloud48395.mywhc.ca: olivier@trillion01.com X-Source: X-Source-Args: X-Source-Dir: Precedence: bulk X-Mailing-List: io-uring@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: the actual napi tracking strategy is inducing a non-negligeable overhead. Everytime a multishot poll is triggered or any poll armed, if the napi is enabled on the ring a lookup is performed to either add a new napi id into the napi_list or its timeout value is updated. For many scenarios, this is overkill as the napi id list will be pretty much static most of the time. To address this common scenario, a new abstraction has been created following the common Linux kernel idiom of creating an abstract interface with a struct filled with function pointers. the patch serie consist of very minor fixes followed by the core of the changes to implement the new feature. v2 changes: - extract small changes from the core changes to ease minor fixes backport - totally remove the io_napi_tracking_ops interface Olivier Langlois (3): io_uring/napi: protect concurrent io_napi_entry timeout accesses io_uring/napi: fix io_napi_entry RCU accesses io_uring/napi: add static napi tracking strategy include/linux/io_uring_types.h | 2 +- include/uapi/linux/io_uring.h | 32 +++++++- io_uring/fdinfo.c | 36 +++++++++ io_uring/napi.c | 135 ++++++++++++++++++++++++++------- io_uring/napi.h | 15 +++- 5 files changed, 186 insertions(+), 34 deletions(-)