Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp945366rwb; Thu, 1 Dec 2022 10:14:39 -0800 (PST) X-Google-Smtp-Source: AA0mqf4KYMSIivmwhc3XCMyOR+vrpq+tiHSsHdkNdIlLywqe4T6kpWDDdFsfHQr/J1Md3iZcR4Q9 X-Received: by 2002:a17:906:9246:b0:7af:da0:aebe with SMTP id c6-20020a170906924600b007af0da0aebemr43702367ejx.723.1669918479740; Thu, 01 Dec 2022 10:14:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669918479; cv=none; d=google.com; s=arc-20160816; b=N9hlL6v3Y1VQdTx1ktc13V14ru+bMo+DYr3G+tenEwacm7U97z7jYb+Fwz2ULifbIR lTFrN10mck3Jz08fWjuLjUYW5iEl8X1Ah1lL+h04LeHqn9OTL5UlLqt4ZcJIvdJdKRsj HmSgpiU2HKZW0u5Z8jty1vaDbs6F+c83JaRmpj126DG26l52BUplS6OCq/E5kWhlfVs/ MYGkbOBPwfNiSvB9QdU46xwZOdXtoLIUn90UAlm+2ABaRykz0SZJoKW41Vey7bfKrgRC 0W+gDl2I5kg7FIt9xnEC53QB+T/iNX2OxSBZsGB7rsdi53kqyxG1mJEDOyT/kspUM1Fa +5ZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=l3glljPevHLdaoBzLBWNwFXRN7RcGOCNYiinqEgq4/0=; b=Byl8Dhl/Cb66XrOD76RtS1g6GEwuBD3iZrZYmXHx4LRUokzpLj9dsu00qOkvEswudk qMj9hm2FceuHXnBByim4UKq75CrtIm+3E3vgwgWf5jLXUqufBQtiougpVBTO5FFEKRIc bC3UlT3dgtr6hhLnhepfUoDLb1E3rQW8wch7cTpwXIoSWnB/gUD2/KK8W2qrigGOGPaT sbj2mCk9KBEb6uJrufDDPxhjdLhbXX8bP9d7QMQnd0cyL4UQb1CwE7IiAtztT/Tu9TA4 WY17HNA1rED8hm4rllrxe3lHCZ71NKKpSu7WfEZVcAE0i/U6ounxhoTrANZscSC2KaXE PAmQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel-dk.20210112.gappssmtp.com header.s=20210112 header.b=JS8Sj1+i; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id hv9-20020a17090760c900b007ae127c6c7asi4578648ejc.176.2022.12.01.10.14.19; Thu, 01 Dec 2022 10:14:39 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel-dk.20210112.gappssmtp.com header.s=20210112 header.b=JS8Sj1+i; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230080AbiLASMH (ORCPT + 82 others); Thu, 1 Dec 2022 13:12:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36340 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229669AbiLASMF (ORCPT ); Thu, 1 Dec 2022 13:12:05 -0500 Received: from mail-il1-x12b.google.com (mail-il1-x12b.google.com [IPv6:2607:f8b0:4864:20::12b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F15CCB7DE2 for ; Thu, 1 Dec 2022 10:12:04 -0800 (PST) Received: by mail-il1-x12b.google.com with SMTP id x16so1093741ilm.5 for ; Thu, 01 Dec 2022 10:12:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20210112.gappssmtp.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=l3glljPevHLdaoBzLBWNwFXRN7RcGOCNYiinqEgq4/0=; b=JS8Sj1+i5nHW2tpMIxi+z4ilQRStIWB7+Fq6pamNnjajP6dr9/CgROQGQANaTp+NvE SWwAYvEE97hgruJDAF80n93mtjhVOSPt7U+JNdZXvaU4JqVKkOoTfEHXsrqgJmwux2Qp GOXX+lv/d/Tvwzwfwj/lbas8EMhh1NwFms182hiED2Dctmrq5ct6SkMTOprnCc0i6OEg iZz5BFRfhv5O8M20rbdKm4MJQ4ixmUi7JRnyp3aHONC9CstCIo5h9g3B5Ma0PhJv9eFf NC+Y+6k5pNvTLu5pmD0Rk0XeetV0HA5cFFn53D9IOIkSSHBNKnepm784rDG/MAd1U5hh rtGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=l3glljPevHLdaoBzLBWNwFXRN7RcGOCNYiinqEgq4/0=; b=QjPrrLKsjjuhmKTTN3ZwRDbyL841UIgiLbmYxlVaxK2WIGgPL2koKop2Ss+pUPSzZ1 jbIN1OURnKjav/rRd+O1vXRrotLTp2+TyVx5C+a239xi4PFFTIEhUEBsLzhT60gGLvgO h/rg8f5AsUqXlfZ0lnokWO0acarMMxeun9a6rFVpymZallcr8Tl5YOpzm6nLSh24L3k2 Ea3EeUAJFGV5pTnDcUZK3kM8iZE/RAbn/qSaWgY1skUYCdwJLuNeM6lcs+1GzepHqVVz UNnzwP5ZeCH1Fmxcqc+wOQ4U/AVcQ3efFG86AgOfgSbN/VHQfsBXBD5DWYBa8vNsijZJ wSkQ== X-Gm-Message-State: ANoB5pmVtu01lIfeiRQWHa4nC8+7w/Z87Cl+WAK4176nKA8ieLxIeyXY yKo0U0kI7EvCXYg7RmMEfl8u5glkshClPuh6 X-Received: by 2002:a05:6e02:1a63:b0:302:a682:485e with SMTP id w3-20020a056e021a6300b00302a682485emr21887861ilv.168.1669918324027; Thu, 01 Dec 2022 10:12:04 -0800 (PST) Received: from m1max.localdomain ([207.135.234.126]) by smtp.gmail.com with ESMTPSA id y21-20020a027315000000b00374fe4f0bc3sm1842028jab.158.2022.12.01.10.12.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 Dec 2022 10:12:03 -0800 (PST) From: Jens Axboe To: linux-kernel@vger.kernel.org, netdev@vger.kernel.org Cc: soheil@google.com, willemdebruijn.kernel@gmail.com, stefanha@redhat.com Subject: [PATCHSET v4 0/7] Add support for epoll min_wait Date: Thu, 1 Dec 2022 11:11:49 -0700 Message-Id: <20221201181156.848373-1-axboe@kernel.dk> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, tldr - we saw a 6-7% CPU reduction with this patch. See patch 6 for full numbers. This adds support for EPOLL_CTL_MIN_WAIT, which allows setting a minimum time that epoll_wait() should wait for events on a given epoll context. Some justification and numbers are in patch 6, patches 1-5 are really just prep patches or cleanups, and patch 7 adds the API to set min_wait. I've decided against adding a syscall for this due to the following reasons: 1) We, Meta, don't need the syscall variant. 2) It's unclear how best to do a clean syscall interface for this. We're already out of arguments with the pwait/pwait2 variants. With the splitting of the API into a separate patch, anyone who wishes to have/use a syscall interface would be tasked with doing that themselves. No real changes in this release, just minor tweaks. Would appreciate some review on this so we can get it moving forward. I obviously can't start real deployments at Meta before I have the API upstream, or at least queued for upstream. So we're currently stuck in limbo with this. Also available here: https://git.kernel.dk/cgit/linux-block/log/?h=epoll-min_ts Since v3: - Split the ctl addition into separate patch - Gate setup of min_wait on !ewq.timed_out - Add comment on calling ctl with wait == 0 is a no-op -- Jens Axboe