[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAKQ1sVPJoaaf1gRfgYPRygfMFVqk08Q0K74wn6kLHV+vy=8w1w@mail.gmail.com>
Date: Fri, 25 Mar 2016 00:40:32 +0100
From: Yann Ylavic <ylavic.dev@...il.com>
To: Eric Dumazet <eric.dumazet@...il.com>
Cc: Linux Kernel Network Developers <netdev@...r.kernel.org>,
Tom Herbert <tom@...bertland.com>, Willy Tarreau <w@....eu>,
Tolga Ceylan <tolga.ceylan@...il.com>,
Craig Gallek <cgallek@...gle.com>,
Josh Snyder <josh@...e406.com>,
Aaron Conole <aconole@...heb.org>,
"David S. Miller" <davem@...emloft.net>,
Daniel Borkmann <daniel@...earbox.net>
Subject: Re: [PATCH 1/1] net: Add SO_REUSEPORT_LISTEN_OFF socket option as
drain mode
On Thu, Mar 24, 2016 at 11:49 PM, Eric Dumazet <eric.dumazet@...il.com> wrote:
> On Thu, 2016-03-24 at 23:40 +0100, Yann Ylavic wrote:
>
>> FWIW, I find:
>>
>> const struct bpf_insn prog[] = {
>> /* BPF_MOV64_REG(BPF_REG_6, BPF_REG_1) */
>> { BPF_ALU64 | BPF_MOV | BPF_X, BPF_REG_6, BPF_REG_1, 0, 0 },
>> /* BPF_LD_ABS(BPF_W, 0) R0 = (uint32_t)skb[0] */
>> { BPF_LD | BPF_ABS | BPF_W, 0, 0, 0, 0 },
>> /* BPF_ALU64_IMM(BPF_MOD, BPF_REG_0, mod) */
>> { BPF_ALU64 | BPF_MOD | BPF_K, BPF_REG_0, 0, 0, mod },
>> /* BPF_EXIT_INSN() */
>> { BPF_JMP | BPF_EXIT, 0, 0, 0, 0 }
>> };
>> (and all the way to make it run)
>>
>> something quite unintuitive from a web server developper perspective,
>> simply to make SO_REUSEPORT work with forked TCP listeners (probably
>> as it should out of the box)...
>
>
> That is why EBPF has LLVM backend.
>
> Basically you can write your "BPF" program in C, and let llvm convert it
> into EBPF.
I'll learn how to do this to get the best performances from the
server, but having to do so to work around what looks like a defect
(for simple/default SMP configurations at least, no NUMA or clever
CPU-affinity or queuing policy involved) seems odd in the first place.
>From this POV, draining the (ending) listeners is already non obvious
but might be reasonable, (e)BPF sounds really overkill.
But there are surely plenty of good reasons for it, and I won't be
able to dispute your technical arguments in any case ;)
>
> Sure, you still can write BPF manually, as you could write HTTPS server
> in assembly.
OK, I'll take your previous proposal :)
Powered by blists - more mailing lists