LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Guy Harris <email@example.com>
To: Willem de Bruijn <firstname.lastname@example.org>
Cc: Alexander Drozdov <email@example.com>,
"David S. Miller" <firstname.lastname@example.org>,
Daniel Borkmann <email@example.com>,
Eric Dumazet <firstname.lastname@example.org>,
Al Viro <email@example.com>,
"Michael S. Tsirkin" <firstname.lastname@example.org>,
Network Development <email@example.com>,
Subject: Re: [PATCH] af_packet: don't pass empty blocks for PACKET_V3
Date: Thu, 5 Feb 2015 13:16:30 -0800 [thread overview]
Message-ID: <474D8071-4AEC-48F4-B0DC-02D9091CF3DB@alum.mit.edu> (raw)
On Feb 5, 2015, at 12:01 PM, Willem de Bruijn <firstname.lastname@example.org> wrote:
> On Wed, Feb 4, 2015 at 9:58 PM, Alexander Drozdov <email@example.com> wrote:
>> Don't close an empty block on timeout. Its meaningless to
>> pass it to the user. Moreover, passing empty blocks wastes
>> CPU & buffer space increasing probability of packets
>> dropping on small timeouts.
>> Side effect of this patch is indefinite user-space wait
>> in poll on idle links. But, I believe its better to set
>> timeout for poll(2) when needed than to get empty blocks
>> every millisecond when not needed.
> This change would break existing applications that have come
> to depend on the periodic signal.
> I don't disagree with the argument that the data ready signal
> should be sent only when a block is full or a timer expires and
> at least some data is waiting, but that is moot at this point.
For what it's worth, the BPF packet capture mechanism (which really needs a new name, to distinguish itself from the BPF packet filter language and its implementation(s), but I digress) has the same issue - when the timer expires, a wakeup is delivered even if there are no packets to read.
*However*, if there are no packets available, the buffers aren't rotated, so the empty buffer is left around to be filled up with packets, rather than being made the hold buffer.
Given that before the previous TPACKET_V3 change, wakeups were delivered when packets arrived rather than when a block was closed, presumably code using TPACKET_V3 was capable of dealing with wakeups being delivered when no new blocks had been made available to userland; could TPACKET_V3 work a bit more like BPF and deliver a wakeup when the timer expires *without* closing the empty block?
next prev parent reply other threads:[~2015-02-05 21:16 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-05 5:58 Alexander Drozdov
2015-02-05 20:01 ` Willem de Bruijn
2015-02-05 21:16 ` Guy Harris [this message]
2015-02-06 4:49 ` Alexander Drozdov
2015-02-06 6:54 ` Alexander Drozdov
2015-02-07 1:45 ` Willem de Bruijn
2015-02-24 5:18 ` [RESEND PATCH] " Alexander Drozdov
2015-02-24 21:09 ` David Miller
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--subject='Re: [PATCH] af_packet: don'\''t pass empty blocks for PACKET_V3' \
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).