29 Apr, 2016
1 commit
-
Signed-off-by: Eric Engestrom
Signed-off-by: David S. Miller
23 May, 2015
5 commits
-
Add the pktgen samples script pktgen_sample02_multiqueue.sh that
demonstrates generating packets on multiqueue NICs.Specifically notice the options "-t" that specifies how many
kernel threads to activate. Also notice the flag QUEUE_MAP_CPU,
which cause the SKB TX queue to be mapped to the CPU running the
kernel thread. For best scalability people are also encourage to
map NIC IRQ /proc/irq/*/smp_affinity to CPU number.Usage example with "-t" 4 threads and help:
./pktgen_sample02_multiqueue.sh -i eth4 -m 00:1B:21:3C:9D:F8 -t 4Usage: ./pktgen_sample02_multiqueue.sh [-vx] -i ethX
-i : ($DEV) output interface/device (required)
-s : ($PKT_SIZE) packet size
-d : ($DEST_IP) destination IP
-m : ($DST_MAC) destination MAC-addr
-t : ($THREADS) threads to start
-c : ($SKB_CLONE) SKB clones send before alloc new SKB
-b : ($BURST) HW level bursting of SKBs
-v : ($VERBOSE) verbose
-x : ($DEBUG) debugRemoving pktgen.conf-2-1 and pktgen.conf-2-2 as these examples
should be covered now.Signed-off-by: Jesper Dangaard Brouer
Signed-off-by: David S. Miller -
Add the first basic pktgen samples script pktgen_sample01_simple.sh,
which demonstrates the a simple use of the helper functions.
Removing pktgen.conf-1-1 as that example should be covered now.The naming scheme pktgen_sampleNN, where NN is a number, should encourage
reading the samples in a specific order.Script cause pktgen sending with a single thread and single interface,
and introduce flow variation via random UDP source port.Usage example and help:
./pktgen_sample01_simple.sh -i eth4 -m 00:1B:21:3C:9D:F8 -d 192.168.8.2Usage: ./pktgen_sample01_simple.sh [-vx] -i ethX
-i : ($DEV) output interface/device (required)
-s : ($PKT_SIZE) packet size
-d : ($DEST_IP) destination IP
-m : ($DST_MAC) destination MAC-addr
-c : ($SKB_CLONE) SKB clones send before alloc new SKB
-v : ($VERBOSE) verbose
-x : ($DEBUG) debugSigned-off-by: Jesper Dangaard Brouer
Signed-off-by: David S. Miller -
The pktgen.txt documentation still claimed that adding same device to
multiple threads were not supported, but it have been since 2008 via
commit e6fce5b916cd7 ("pktgen: multiqueue etc.").Document this and describe the naming scheme dev@X, as the procfile name
still need to be unique.Fixes: e6fce5b916cd7 ("pktgen: multiqueue etc.")
Signed-off-by: Jesper Dangaard Brouer
Acked-by: Alexei Starovoitov
Signed-off-by: David S. Miller -
The pktgen.txt documentation over available config options were not complete.
Making the list complete by adding the following.Pgcontrol commands:
resetDevice commands:
burst
queue_map_min
queue_map_max
skb_priority
tos
traffic_class
node
spi
dst6_max
dst6_min
vlan_cfi
vlan_id
vlan_p
svlan_cfi
svlan_id
svlan_pSigned-off-by: Jesper Dangaard Brouer
Signed-off-by: David S. Miller -
And cleanup some whitespaces in pktgen.txt.
Signed-off-by: Jesper Dangaard Brouer
Signed-off-by: David S. Miller
10 May, 2015
2 commits
-
Introduce xmit_mode 'netif_receive' for pktgen which generates the
packets using familiar pktgen commands, but feeds them into
netif_receive_skb() instead of ndo_start_xmit().Default mode is called 'start_xmit'.
It is designed to test netif_receive_skb and ingress qdisc
performace only. Make sure to understand how it works before
using it for other rx benchmarking.Sample script 'pktgen.sh':
\#!/bin/bash
function pgset() {
local resultecho $1 > $PGDEV
result=`cat $PGDEV | fgrep "Result: OK:"`
if [ "$result" = "" ]; then
cat $PGDEV | fgrep Result:
fi
}[ -z "$1" ] && echo "Usage: $0 DEV" && exit 1
ETH=$1PGDEV=/proc/net/pktgen/kpktgend_0
pgset "rem_device_all"
pgset "add_device $ETH"PGDEV=/proc/net/pktgen/$ETH
pgset "xmit_mode netif_receive"
pgset "pkt_size 60"
pgset "dst 198.18.0.1"
pgset "dst_mac 90:e2:ba:ff:ff:ff"
pgset "count 10000000"
pgset "burst 32"PGDEV=/proc/net/pktgen/pgctrl
echo "Running... ctrl^C to stop"
pgset "start"
echo "Done"
cat /proc/net/pktgen/$ETHUsage:
$ sudo ./pktgen.sh eth2
...
Result: OK: 232376(c232372+d3) usec, 10000000 (60byte,0frags)
43033682pps 20656Mb/sec (20656167360bps) errors: 10000000Raw netif_receive_skb speed should be ~43 million packet
per second on 3.7Ghz x86 and 'perf report' should look like:
37.69% kpktgend_0 [kernel.vmlinux] [k] __netif_receive_skb_core
25.81% kpktgend_0 [kernel.vmlinux] [k] kfree_skb
7.22% kpktgend_0 [kernel.vmlinux] [k] ip_rcv
5.68% kpktgend_0 [pktgen] [k] pktgen_thread_workerIf fib_table_lookup is seen on top, it means skb was processed
by the stack. To benchmark netif_receive_skb only make sure
that 'dst_mac' of your pktgen script is different from
receiving device mac and it will be dropped by ip_rcvSigned-off-by: Alexei Starovoitov
Signed-off-by: Jesper Dangaard Brouer
Signed-off-by: David S. Miller -
Allow flag NO_TIMESTAMP to turn timestamping on again, like other flags,
with a negation of the flag like !NO_TIMESTAMP.Also document the option flag NO_TIMESTAMP.
Fixes: afb84b626184 ("pktgen: add flag NO_TIMESTAMP to disable timestamping")
Signed-off-by: Jesper Dangaard Brouer
Signed-off-by: David S. Miller
24 Feb, 2015
4 commits
-
Drop the '.o' suffix so this text properly covers both the
built-in and modular cases.'insmod pktgen' obviously won't work; the command should be modprobe.
Signed-off-by: Ben Hutchings
Signed-off-by: David S. Miller -
These are Robert Olsson's samples which used to be available from
but currently are not.
Change the documentation to refer to these consistently as 'sample
scripts', matching the directory name used here.Cc: Robert Olsson
Signed-off-by: Ben Hutchings
Signed-off-by: David S. Miller -
Thanks to Rob Jones for suggesting some of the changes.
Cc: Rob Jones
Signed-off-by: Ben Hutchings
Signed-off-by: David S. Miller -
This has been updated quite a few times since 2004, and git can
keep track of the actual date for us.Signed-off-by: Ben Hutchings
Signed-off-by: David S. Miller
02 Oct, 2014
1 commit
-
This patch demonstrates the effect of delaying update of HW tailptr.
(based on earlier patch by Jesper)burst=1 is the default. It sends one packet with xmit_more=false
burst=2 sends one packet with xmit_more=true and
2nd copy of the same packet with xmit_more=false
burst=3 sends two copies of the same packet with xmit_more=true and
3rd copy with xmit_more=falsePerformance with ixgbe (usec 30):
burst=1 tx:9.2 Mpps
burst=2 tx:13.5 Mpps
burst=3 tx:14.5 Mpps full 10G line rateSigned-off-by: Alexei Starovoitov
Signed-off-by: Eric Dumazet
Acked-by: Jesper Dangaard Brouer
Signed-off-by: David S. Miller
02 Jul, 2014
1 commit
-
Using pktgen I'm seeing the ixgbe driver "push-back", due TX ring
running full. Thus, the TX ring is artificially limiting pktgen.
(Diagnose via "ethtool -S", look for "tx_restart_queue" or "tx_busy"
counters.)Using ixgbe, the real reason behind the TX ring running full, is due
to TX ring not being cleaned up fast enough. The ixgbe driver combines
TX+RX ring cleanups, and the cleanup interval is affected by the
ethtool --coalesce setting of parameter "rx-usecs".Do not increase the default NIC TX ring buffer or default cleanup
interval. Instead simply document that pktgen needs special NIC
tuning for maximum packet per sec performance.Performance results with pktgen with clone_skb=100000.
TX ring size 512 (default), adjusting "rx-usecs":
(Single CPU performance, E5-2630, ixgbe)
- 3935002 pps - rx-usecs: 1 (irqs: 9346)
- 5132350 pps - rx-usecs: 10 (irqs: 99157)
- 5375111 pps - rx-usecs: 20 (irqs: 50154)
- 5454050 pps - rx-usecs: 30 (irqs: 33872)
- 5496320 pps - rx-usecs: 40 (irqs: 26197)
- 5502510 pps - rx-usecs: 50 (irqs: 21527)TX ring size adjusting (ethtool -G), "rx-usecs==1" (default):
- 3935002 pps - tx-size: 512
- 5354401 pps - tx-size: 768
- 5356847 pps - tx-size: 1024
- 5327595 pps - tx-size: 1536
- 5356779 pps - tx-size: 2048
- 5353438 pps - tx-size: 4096Notice after commit 6f25cd47d (pktgen: fix xmit test for BQL enabled
devices) pktgen uses netif_xmit_frozen_or_drv_stopped() and ignores
the BQL "stack" pause (QUEUE_STATE_STACK_XOFF) flag. This allow us to put
more pressure on the TX ring buffers.It is the ixgbe_maybe_stop_tx() call that stops the transmits, and
pktgen respecting this in the call to netif_xmit_frozen_or_drv_stopped(txq).Signed-off-by: Jesper Dangaard Brouer
Signed-off-by: David S. Miller
25 Feb, 2014
1 commit
-
The documentation misses a few of the supported flags. Fix this. Also
respect the dependency to CONFIG_XFRM for the IPSEC flag.Cc: Fan Du
Cc: "David S. Miller"
Signed-off-by: Mathias Krause
Signed-off-by: David S. Miller
03 Jan, 2014
1 commit
-
Update pktgen.txt for reference when using IPsec.
Signed-off-by: Fan Du
Signed-off-by: Steffen Klassert
12 Jun, 2010
1 commit
-
This patch increases the granularity of the rate generated by pktgen.
The previous version of pktgen uses micro seconds (udelay) resolution when it
was delayed causing gaps in the rates. It is changed to nanosecond (ndelay).
Now any rate is possible.Also it allows to set, the desired rate in Mb/s or packets per second.
The documentation has been updated.
Signed-off-by: Daniel Turull
Signed-off-by: Robert Olsson
Signed-off-by: David S. Miller
05 Oct, 2009
1 commit
-
It is not currently possible to instruct pktgen to use one selected tx queue.
When Robert added multiqueue support in commit 45b270f8, he added
an interval (queue_map_min, queue_map_max), and his code doesnt take
into account the case of min = max, to select one tx queue exactly.I suspect a high performance setup on a eight txqueue device wants
to use exactly eight cpus, and assign one tx queue to each sender.This patchs makes pktgen select the right tx queue, not the first one.
Also updates Documentation to reflect Robert changes.
Signed-off-by: Eric Dumazet
Signed-off-by: Robert Olsson
Signed-off-by: David S. Miller
30 Nov, 2006
2 commits
-
This patch fixes typos in various Documentation txts. The patch addresses some
misc words.Signed-off-by: Matt LaPlante
Acked-by: Randy Dunlap
Signed-off-by: Adrian Bunk -
This patch fixes typos in various Documentation txts. The patch addresses some
+words starting with the letter 'T'.Signed-off-by: Matt LaPlante
Acked-by: Randy Dunlap
Signed-off-by: Adrian Bunk
04 Oct, 2006
3 commits
-
This patch fixes typos in various Documentation txts. The patch addresses
some words starting with the letters 'H'-'M'.Signed-off-by: Matt LaPlante
Acked-by: Randy Dunlap
Signed-off-by: Adrian Bunk -
This patch fixes typos in various Documentation txts. This patch addresses
some words starting with the letters 'D'-'E'.Signed-off-by: Matt LaPlante
Signed-off-by: Adrian Bunk -
This patch fixes typos in various Documentation txts.
This patch addresses some words starting with the letter 'A'.Signed-off-by: Matt LaPlante
Acked-by: Randy Dunlap
Acked-by: Alan Cox
Signed-off-by: Adrian Bunk
29 Sep, 2006
1 commit
-
Signed-off-by: Francesco Fondelli
Signed-off-by: Robert Olsson
Signed-off-by: David S. Miller
01 Jul, 2006
1 commit
-
Three typos in only one line...
Signed-off-by: Adrian Bunk
23 Mar, 2006
1 commit
-
Signed-off-by: Steven Whitehouse
Signed-off-by: Robert Olsson
Signed-off-by: David S. Miller
17 Apr, 2005
1 commit
-
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.Let it rip!