Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp150620ybl; Mon, 2 Dec 2019 08:49:12 -0800 (PST) X-Google-Smtp-Source: APXvYqyF7sB3YZJ/ZMEyVqW/EBDVt0C/53CgwXckkhsqcTw0rGMF80U3WbBBlHeXm2TaPO+zGl9w X-Received: by 2002:aa7:c59a:: with SMTP id g26mr64822549edq.109.1575305351757; Mon, 02 Dec 2019 08:49:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1575305351; cv=none; d=google.com; s=arc-20160816; b=clYi0XPuPr9DTYq5QRssIVJuNph91jRkHIGqwgZE/wNJ9DRZjdUBr9ejbZJbWLMvqw OvVN9v3wjE4CtfSt2PqbUOlr6YZ+A4yI2Tl2560pXcG8dc8eygrquMnR+NvQ8z9HquhF wFNSWRf2DHW+/80miK3CTeJBjQP+KFa0yNBLJ0MhwW3OduZtqfr/xTPFjgTq90k3652k ih9sFe2QbzMaQiQERsjhyQSrolYjLG2t++ZCfeOTFP1/tOzKVooWRTzTKMjCR0tXKiuk 9lTMGE4Eo4AqnIFIwc7qaHVse/SOwabsj2XAn8k8/GD8Yx7kK7V2AB6sBb5i1bqPR6sJ y+Yw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=2tHpqN0A+VQqqDCB4U60Obh3vL6s2YCa8Z42QOlXUJY=; b=oz9pk2H1hd6pjwUrYvjpb35brlV8F5AxNDIPXtRvrgmbz8u3NTkIgTLJwRdd/NYe8X S9Fw4wWyk68DfWtVkLQRqRxvnp2rbGsQXqFnLzpx2ibGsMZ/YUAP/NV7wt6Y+dqDflGc t0MyqWVoJ71XW1VPIcCcW0p6xPH/Aeo3rahy5dIvRTnftAh9jWn22kzrrBhMSqdjjl0B thEr6vwUbeEMnUXozGmPapt0zwR3OMPfGgFHFtlFr+aHZ/44UeVwvt/vVaEZPeb9UqBu 8iOP9EckWfNdbVEMTJ4K9meGgS81m3hX7rhz7HPLWxp2zmZdvjj87XNqTpbly2aLDozx pElg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=jwrHA4kF; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w17si5252726edi.85.2019.12.02.08.48.46; Mon, 02 Dec 2019 08:49:11 -0800 (PST) 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=@gmail.com header.s=20161025 header.b=jwrHA4kF; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727556AbfLBQro (ORCPT + 99 others); Mon, 2 Dec 2019 11:47:44 -0500 Received: from mail-yb1-f170.google.com ([209.85.219.170]:37493 "EHLO mail-yb1-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727438AbfLBQro (ORCPT ); Mon, 2 Dec 2019 11:47:44 -0500 Received: by mail-yb1-f170.google.com with SMTP id q7so232017ybk.4 for ; Mon, 02 Dec 2019 08:47:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=2tHpqN0A+VQqqDCB4U60Obh3vL6s2YCa8Z42QOlXUJY=; b=jwrHA4kFOPjKjldrEHyPZexm/nKkSJEMJuLFR20LZPDiUuWoMbPCVo5uXxRK9xZfvK BBlsVaCWceHlEsYqYf4pj6SCu1UxF0JEmB0RtlXi6Y15275VcQh1UdYvdz0cE5IxxjjG /pVqGlctT+gEuPrOfFaHHx9U5Y+lzUhH3+FAJzxZXSs2AWXF6lDptdvnzIq3QagYsnhl oUFlPEMxqInhWoTA3hccmC8+R/vdetdjfza/nk3qbLVYbxYoD5ZlVSqzH60rsS3bmCRJ qt4DWhR78dkef9em+KhGZLDlWBN75UTdMQfI6rxMtTYkqP+VOQ2q9auCIV2zJJ0h1XBa pcNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=2tHpqN0A+VQqqDCB4U60Obh3vL6s2YCa8Z42QOlXUJY=; b=pvB/jg9bTiMAQ8aXqQy1LrzWe8nuQ8F/cMp4kYRc9DDh4tOpUz6omWH139cLhzRwx4 vgSPh4D/1m2chaCG2sZpOuVL09nNZ+XyW6GZLSGd+Jr8hppMj3V0ZIX8LMsEhoJxD9tj vZ5y5RZ9T2cMUz5JIPVD1XFQcANTJT+8aoLUf3In0K5yIzqXS99/5FVVDEDfnUfyElkd zwMUoVVPaAKqKLIT8+f0wJygx9NKf/5WCPuV3HPpWpQSHrtE6RH3lwNNFSg3KSkM6G2A c5gWfQUYlDk2DwNcPoPDPkS9bekzVoraMpptxKXXR1Vk7Fevy1q3YUTZUXW3PFO0oCat b5aQ== X-Gm-Message-State: APjAAAXGP2qLUOK/s33oBDqn2g3Mq5HeWh+E4dlemZ+6wbQ/0cktb/r3 BbGuRi+fJrECHjmL+DYLIpcCwSem X-Received: by 2002:a5b:78d:: with SMTP id b13mr249290ybq.157.1575305261935; Mon, 02 Dec 2019 08:47:41 -0800 (PST) Received: from mail-yb1-f172.google.com (mail-yb1-f172.google.com. [209.85.219.172]) by smtp.gmail.com with ESMTPSA id n18sm65238ywd.50.2019.12.02.08.47.39 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 02 Dec 2019 08:47:40 -0800 (PST) Received: by mail-yb1-f172.google.com with SMTP id v2so234059ybo.3 for ; Mon, 02 Dec 2019 08:47:39 -0800 (PST) X-Received: by 2002:a25:583:: with SMTP id 125mr248789ybf.89.1575305259203; Mon, 02 Dec 2019 08:47:39 -0800 (PST) MIME-Version: 1.0 References: <5f4028c48a1a4673bd3b38728e8ade07@AcuMS.aculab.com> <20191127164821.1c41deff@carbon> <0b8d7447e129539aec559fa797c07047f5a6a1b2.camel@redhat.com> <2f1635d9300a4bec8a0422e9e9518751@AcuMS.aculab.com> <313204cf-69fd-ec28-a22c-61526f1dea8b@gmail.com> <1265e30d04484d08b86ba2abef5f5822@AcuMS.aculab.com> <878snxo5kq.fsf@cloudflare.com> <40f7b16289274e10a30f5d8c6e2cdf08@AcuMS.aculab.com> In-Reply-To: <40f7b16289274e10a30f5d8c6e2cdf08@AcuMS.aculab.com> From: Willem de Bruijn Date: Mon, 2 Dec 2019 11:47:02 -0500 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: epoll_wait() performance To: David Laight Cc: Jakub Sitnicki , Eric Dumazet , Paolo Abeni , Jesper Dangaard Brouer , Marek Majkowski , linux-kernel , network dev , kernel-team Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Dec 2, 2019 at 7:24 AM David Laight wrote: > > From: Jakub Sitnicki > > Sent: 30 November 2019 13:30 > > On Sat, Nov 30, 2019 at 02:07 AM CET, Eric Dumazet wrote: > > > On 11/28/19 2:17 AM, David Laight wrote: > ... > > >> How can you do that when all the UDP flows have different destination port numbers? > > >> These are message flows not idempotent requests. > > >> I don't really want to collect the packets before they've been processed by IP. > > >> > > >> I could write a driver that uses kernel udp sockets to generate a single message queue > > >> than can be efficiently processed from userspace - but it is a faff compiling it for > > >> the systems kernel version. > > > > > > Well if destinations ports are not under your control, > > > you also could use AF_PACKET sockets, no need for 'UDP sockets' to receive UDP traffic, > > > especially it the rate is small. > > > > Alternatively, you could steer UDP flows coming to a certain port range > > to one UDP socket using TPROXY [0, 1]. > > I don't think that can work, we don't really know the list of valid UDP port > numbers ahead of time. How about -j REDIRECT. That does not require all ports to be known ahead of time. > > TPROXY has the same downside as AF_PACKET, meaning that it requires at > > least CAP_NET_RAW to create/set up the socket. > > CAP_NET_RAW wouldn't be a problem - we already send from a 'raw' socket. One other issue when comparing udp and packet sockets is ip defragmentation. That is critical code that is not at all trivial to duplicate in userspace. Even when choosing packet sockets, which normally would not defragment, there is a trick. A packet socket with fanout and flag PACKET_FANOUT_FLAG_DEFRAG will defragment before fanout.