From: Eric Dumazet <eric.dumazet@gmail.com>
To: Rui <wirelesser@gmail.com>
Cc: netdev@vger.kernel.org
Subject: Re: multi bpf filter will impact performance?
Date: Tue, 30 Nov 2010 10:34:59 +0100 [thread overview]
Message-ID: <1291109699.2904.11.camel@edumazet-laptop> (raw)
In-Reply-To: <AANLkTikx68M43+vv+Rav_HCJMJnuc15TtuBgmbv2xP=U@mail.gmail.com>
Le mardi 30 novembre 2010 à 17:22 +0800, Rui a écrit :
> hi
>
> I did a test with an intel X520 10Gnic, HP DL380 G6, to see how the
> bpf filter will impact the performance.
>
> kernel .2.6.32 SLES11+SP1, original ixgbe driver
>
Could you try latest net-next-2.6, we optimized bpf a bit lately
commit 93aaae2e01e57483256b7da05c9a7ebd65ad4686
Author: Eric Dumazet <eric.dumazet@gmail.com>
Date: Fri Nov 19 09:49:59 2010 -0800
filter: optimize sk_run_filter
> step 0:
> launch 4 tcpdump processes,each applied a filter to filter out some
> GTP-U packets. seen with 'tcpdump -d', the bpf code has about 100
> lines.
>
> #!/bin/sh
> PCAP_FRAMES=32000 ./tcpdump_MMAP -i eth4 'udp dst port 2152 and (
> (((ether[48:1]&0x07)>0) and
> (((ether[66:1]+ether[67:1]+ether[68:1]+ether[69:1]+ether[70:1]+ether[71:1]+ether[72:1]+ether[73:1])&0x03)==0))
> or (((ether[48:1]&0x07)==0) and
> (((ether[62:1]+ether[63:1]+ether[64:1]+ether[65:1]+ether[66:1]+ether[67:1]+ether[68:1]+ether[69:1])&0x03)==0))
> ) ' -w /dev/null -s 4096 2>f1.log &
> PCAP_FRAMES=32000 ./tcpdump_MMAP -i eth4 'udp dst port 2152 and (
> (((ether[48:1]&0x07)>0) and
> (((ether[66:1]+ether[67:1]+ether[68:1]+ether[69:1]+ether[70:1]+ether[71:1]+ether[72:1]+ether[73:1])&0x03)==1))
> or (((ether[48:1]&0x07)==0) and
> (((ether[62:1]+ether[63:1]+ether[64:1]+ether[65:1]+ether[66:1]+ether[67:1]+ether[68:1]+ether[69:1])&0x03)==1))
> ) ' -w /dev/null -s 4096 2>f2.log &
> PCAP_FRAMES=32000 ./tcpdump_MMAP -i eth4 'udp dst port 2152 and (
> (((ether[48:1]&0x07)>0) and
> (((ether[66:1]+ether[67:1]+ether[68:1]+ether[69:1]+ether[70:1]+ether[71:1]+ether[72:1]+ether[73:1])&0x03)==2))
> or (((ether[48:1]&0x07)==0) and
> (((ether[62:1]+ether[63:1]+ether[64:1]+ether[65:1]+ether[66:1]+ether[67:1]+ether[68:1]+ether[69:1])&0x03)==2))
> ) ' -w /dev/null -s 4096 2>f3.log &
> PCAP_FRAMES=32000 ./tcpdump_MMAP -i eth4 'udp dst port 2152 and (
> (((ether[48:1]&0x07)>0) and
> (((ether[66:1]+ether[67:1]+ether[68:1]+ether[69:1]+ether[70:1]+ether[71:1]+ether[72:1]+ether[73:1])&0x03)==3))
> or (((ether[48:1]&0x07)==0) and
> (((ether[62:1]+ether[63:1]+ether[64:1]+ether[65:1]+ether[66:1]+ether[67:1]+ether[68:1]+ether[69:1])&0x03)==3))
> ) ' -w /dev/null -s 4096 2>f4.log &
>
>
Hmm, do you receive trafic on several queues of your card ?
Do you have 4 cpus running ?
grep eth /proc/interrupts
> step1:
> use stress test equipment to generate traffic >1.2Gbps
>
>
> step2:
> type 'ifconfig eth4'
> saw many packets dropped
>
> step3:
> type 'sar -n DEV 1', the incoming throughput limited at 800Mbps
>
>
> my questions:
>
> Q1. the bpf filter is run one by one? will only one filter be executed
> for one sock? (so that the tcpdump corresponding kernel part will run
> filter in parallel?)
>
bpf filter is run on behalf of the softirq processing.
> Q2. performance is bad? any idea to improve it?
>
multiqueue card : split each IRQ on a separate cpu.
If not multiqueue card : use RPS on a recent kernel to split the load on
several cpus.
Use a filter against the queue, instead of doing a hash code yourself in
the bpf. (code added in commit d19742fb (linux-2.6.33)
(you need to tweak libpcap to use SKF_AD_QUEUE instruction)
commit d19742fb1c68e6db83b76e06dea5a374c99e104f
Author: Eric Dumazet <eric.dumazet@gmail.com>
Date: Tue Oct 20 01:06:22 2009 -0700
filter: Add SKF_AD_QUEUE instruction
It can help being able to filter packets on their queue_mapping.
If filter performance is not good, we could add a "numqueue" field
in struct packet_type, so that netif_nit_deliver() and other functions
can directly ignore packets with not expected queue number.
Lets experiment this simple filter extension first.
next prev parent reply other threads:[~2010-11-30 9:35 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-30 9:22 multi bpf filter will impact performance? Rui
2010-11-30 9:34 ` Eric Dumazet [this message]
[not found] ` <AANLkTi=VpmnrXTBNV7McQm6mq9ULT7KTKbM8_hLPoL=2@mail.gmail.com>
[not found] ` <1291127670.2904.96.camel@edumazet-laptop>
2010-12-01 3:48 ` Rui
2010-12-01 4:03 ` Eric Dumazet
2010-12-01 7:45 ` [PATCH net-next-2.6] filter: add SKF_AD_RXHASH and SKF_AD_CPU Eric Dumazet
2010-12-01 8:03 ` Changli Gao
2010-12-06 21:02 ` David Miller
2010-12-03 9:40 ` multi bpf filter will impact performance? Junchang Wang
2010-12-01 7:36 ` Changli Gao
2010-12-01 7:47 ` Eric Dumazet
2010-12-01 7:59 ` Changli Gao
2010-12-01 8:09 ` Eric Dumazet
2010-12-01 8:15 ` Changli Gao
2010-12-01 8:42 ` Eric Dumazet
2010-12-01 17:22 ` Hagen Paul Pfeifer
2010-12-01 18:18 ` David Miller
2010-12-01 18:24 ` David Miller
2010-12-01 18:24 ` Eric Dumazet
2010-12-01 18:44 ` David Miller
2010-12-01 19:48 ` Eric Dumazet
2010-12-01 20:23 ` David Miller
2010-12-01 20:45 ` [PATCH net-next-2.6] filter: add a security check at install time Eric Dumazet
2010-12-02 2:30 ` Changli Gao
2010-12-02 6:46 ` Eric Dumazet
2010-12-02 8:11 ` Changli Gao
2010-12-02 8:53 ` Eric Dumazet
2010-12-02 9:00 ` Eric Dumazet
2010-12-02 9:10 ` Changli Gao
2010-12-02 9:54 ` Eric Dumazet
2010-12-02 10:10 ` Changli Gao
2010-12-02 11:15 ` Eric Dumazet
2010-12-02 11:29 ` Changli Gao
2010-12-02 13:14 ` Eric Dumazet
2010-12-02 10:59 ` Changli Gao
2010-12-06 21:07 ` David Miller
2010-12-03 6:32 ` multi bpf filter will impact performance? Eric Dumazet
2010-12-05 20:53 ` PATCH] filter: fix sk_filter rcu handling Eric Dumazet
2010-12-05 21:08 ` Andi Kleen
2010-12-05 21:28 ` Eric Dumazet
2010-12-06 17:29 ` David Miller
2010-11-30 10:01 ` multi bpf filter will impact performance? Eric Dumazet
2010-11-30 11:17 ` Eric Dumazet
Reply instructions:
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:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1291109699.2904.11.camel@edumazet-laptop \
--to=eric.dumazet@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=wirelesser@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox