Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp79973ybp; Tue, 8 Oct 2019 14:23:28 -0700 (PDT) X-Google-Smtp-Source: APXvYqz74tB/j4a/Pt7fuoraMh2YSrf5vwVsm3juY/WdIsOLSv5PB0CHbMM7pzsDZjvjW1gJpGHD X-Received: by 2002:a17:906:41a:: with SMTP id d26mr30322473eja.17.1570569808487; Tue, 08 Oct 2019 14:23:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570569808; cv=none; d=google.com; s=arc-20160816; b=HTIyFQ/xG6kFgVm/IlPCZPXxetUB9Ys1jkFqoFioi+l/xjCYBgCJrSi80+Pu5+Yf8I Me0gSmpaefVUXL1KTNTRFbhUivV/IxYztWhZD5aIc0firN3ZFdJMPF1cKgUQE8qtIzzv WlR+jhs92EFVFEnwG2KqX4FvUpVCMaWeHo5+8MfxoWi+5k+2KROFtPbnPyzb7w+iAf9h uDKgqsP2RlSnEAOjXMefvj/aSlI9w1n/MlhiZwkz3J5w2aJIw4cYIrQ7lh3hIb/zL6kO IrIYk4z0gLs98pqcoO+l9dTbWN1mmdnNTDiZDI8X5rbj/tePBFHoi5+p2VpPv2Sj8H/3 0BQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:to:subject:dkim-signature; bh=OG8y2yjqwcKyZ/0narkDeEHuCiN7kZU2ER/a4tyXpjE=; b=sIsi09b8/1VeNgadFPVAT2+cUFEbtvk7qSrL4gU0dHAm7SL3AL9fqIDyBUNE9NYygk pET4QLz29pXIpoZYaiznnLofWtDOf0BWmYWuVol3W17YfJvPDDCvV04piLo1NizsLiA1 K3ETNiBP3LMO1ZXoBHsMEKEHqYrG47cqxcItYW9fy5VO82wwmyNa/3xgtohqKyguK8F3 Uqlab6rha14oeHlF9S7O7q4Kv+7+rATNSvRysXgnnhi21/+BMqiF5mvQRM+vHa6ea/ud vrSyZIhoKiqdbXZo9GzqsRMKCNn3O8n2Tu9S+Z2zELglE3sGfbZKhImpO17yxFyzlIRk KIZA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel-dk.20150623.gappssmtp.com header.s=20150623 header.b=cZ00oFaz; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x3si160537eda.285.2019.10.08.14.23.04; Tue, 08 Oct 2019 14:23:28 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel-dk.20150623.gappssmtp.com header.s=20150623 header.b=cZ00oFaz; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731147AbfJHVWs (ORCPT + 99 others); Tue, 8 Oct 2019 17:22:48 -0400 Received: from mail-pg1-f193.google.com ([209.85.215.193]:46751 "EHLO mail-pg1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730674AbfJHVWr (ORCPT ); Tue, 8 Oct 2019 17:22:47 -0400 Received: by mail-pg1-f193.google.com with SMTP id b8so4643998pgm.13 for ; Tue, 08 Oct 2019 14:22:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20150623.gappssmtp.com; s=20150623; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-language:content-transfer-encoding; bh=OG8y2yjqwcKyZ/0narkDeEHuCiN7kZU2ER/a4tyXpjE=; b=cZ00oFazORyAP9YjioGS8LdNPbIVdIVSxZIsbl4iOaaEbk7CvginJ2/mcC2/hKtOEe dx1qmpsmLTpAJTzJGk3avzTODwmj9xceYd0E4NJiof0QpaCTg+egKW3cDFANqKkNrj03 3sk3Wcv2RdfGnmDY5/1yjao+NU2iOLxsn8AIeOy0AzLJ5HrbNuaHRAV4jZBcAI1FSUd/ lybraYAHIi9Ld9+QYnLUgIrP/9JEhYsCOrM2s7Qe5MtnFG/GggkQoHyMJ9Y+HsQ9Qnls xbYHlGbVAmaR+qKyqnK2ws5NQx966ujYvW1x4Mx0ZqdyFtbz9wCIvRdMe3Dr1IkCkOzU 0RSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=OG8y2yjqwcKyZ/0narkDeEHuCiN7kZU2ER/a4tyXpjE=; b=IUQeZnH8YEjCx4UzQ9F/4nB6MVdX2nxseOKpO8H9mgCJSh3ZkpIYUX4C/84T2Tmiv+ aXuXpVTsV1Rny5t+aIetPRzNi5eQDHYADWgIO2DjJAEGWCvgbuQZS+xpf3On+Z65aHdC SX1c5+GVLzMQ5+YBTsGddCgMa5RjgEajJuZG95c8hqsipZ6AKTZ/YT7wIRsDun9eIN0G 1fgf/VKjHEQKpPW0SdGYCDEPsqZsOne/CWPXQVeb97aU2+rlMeHrj+IAHGKnDAXDAx7o N6Rq4ATnzWv4Or46ZUCnSevU8SajN9Ax0UCwpZkx0Ld5y4B1NZsR5au6XE/cooawXUS9 qEhg== X-Gm-Message-State: APjAAAVduyFJA7sRtqiYghF3uhN46kWhl4KoEEVAT677snYuxzHlIx4d kM5dv92kq+QmlYAqKiQD5zq7a/AdmweeGQ== X-Received: by 2002:a62:5ac3:: with SMTP id o186mr40660pfb.20.1570569766467; Tue, 08 Oct 2019 14:22:46 -0700 (PDT) Received: from [192.168.1.188] ([66.219.217.79]) by smtp.gmail.com with ESMTPSA id k65sm138117pga.94.2019.10.08.14.22.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 Oct 2019 14:22:45 -0700 (PDT) Subject: Re: [PATCH] io_uring: remove wait loop spurious wakeups To: Pavel Begunkov , linux-block@vger.kernel.org, linux-kernel@vger.kernel.org References: <936cd758d6c694fe1b8b9de050e24cfecdc2e60d.1570489620.git.asml.silence@gmail.com> <62a8a6c7-9c5b-c9a4-9c73-c77db87c6637@kernel.dk> <99bfb7aa-6980-fc14-32f7-a479dea63eb4@gmail.com> From: Jens Axboe Message-ID: Date: Tue, 8 Oct 2019 15:22:43 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <99bfb7aa-6980-fc14-32f7-a479dea63eb4@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/8/19 2:58 PM, Pavel Begunkov wrote: > On 08/10/2019 20:00, Jens Axboe wrote: >> On 10/8/19 10:43 AM, Pavel Begunkov wrote: >>> On 08/10/2019 06:16, Jens Axboe wrote: >>>> On 10/7/19 5:18 PM, Pavel Begunkov (Silence) wrote: >>>>> From: Pavel Begunkov >>>>> >>>>> Any changes interesting to tasks waiting in io_cqring_wait() are >>>>> commited with io_cqring_ev_posted(). However, io_ring_drop_ctx_refs() >>>>> also tries to do that but with no reason, that means spurious wakeups >>>>> every io_free_req() and io_uring_enter(). >>>>> >>>>> Just use percpu_ref_put() instead. >>>> >>>> Looks good, this is a leftover from when the ctx teardown used >>>> the waitqueue as well. >>>> >>> BTW, is there a reason for ref-counting in struct io_kiocb? I understand >>> the idea behind submission reference, but don't see any actual part >>> needing it. >> >> In short, it's to prevent the completion running before we're done with >> the iocb on the submission side. > > Yep, that's what I expected. Perhaps I missed something, but what I've > seen following code paths all the way down, it either > 1. gets error / completes synchronously and then frees req locally > 2. or passes it further (e.g. async list) and never accesses it after As soon as the IO is passed on, it can complete. In fact, it can complete even _before_ that call returns. That's the issue. Obviously this isn't true for purely polled IO, but it is true for IRQ based IO. -- Jens Axboe