netmap: understanding pkg-gen.c

hiren panchasara hiren.panchasara at gmail.com
Wed Sep 25 03:32:21 UTC 2013


I am new to netmap so thought of confirming my understanding.

I was trying to associate ixgbe interface with netmap and blast pkts to it
using tools/tools/netmap/pkg-gen.c

My setup looks like this:

FreeBSD 10.0-ALPHA1 #2: Sun Sep 22 18:08:18 UTC 2013
-bash-4.2$ sysctl hw.physmem
hw.physmem: 51505954816
-bash-4.2$ sysctl hw.ncpu
hw.ncpu: 24
-bash-4.2$ sysctl hw.ix
hw.ix.enable_aim: 1
hw.ix.max_interrupt_rate: 31250
hw.ix.rx_process_limit: 256
hw.ix.tx_process_limit: 256
hw.ix.enable_msix: 1
hw.ix.num_queues: 8
hw.ix.txd: 2048
hw.ix.rxd: 2048
-bash-4.2$

On this box, I have 2 interfaces igb0 (10.73.149.28) and ix1 (10.73.149.17)
and this is how I am using this binary:

-bash-4.2$ sudo ./pkt-gen -i ix1 -f tx -n 100000000 -c 8 -p 8 -d
10.73.149.17 -s 10.73.149.28
extract_ip_range [143] extract IP range from 10.73.149.28
extract_ip_range [178] range is 10.73.149.28 0 to 10.73.149.28 0
extract_ip_range [143] extract IP range from 10.73.149.17
extract_ip_range [178] range is 10.73.149.17 0 to 10.73.149.17 0
extract_mac_range [184] extract MAC range from 90:e2:ba:30:68:c5
extract_mac_range [199] 90:e2:ba:30:68:c5 starts at 90:e2:ba:30:68:c5
extract_mac_range [184] extract MAC range from ff:ff:ff:ff:ff:ff
extract_mac_range [199] ff:ff:ff:ff:ff:ff starts at ff:ff:ff:ff:ff:ff
main [1530] map size is 334980 Kb
main [1552] mapping 334980 Kbytes
Sending on ix1: 8 queues, 8 threads and 8 cpus.
10.73.149.28 -> 10.73.149.17 (90:e2:ba:30:68:c5 -> ff:ff:ff:ff:ff:ff)
main [1622] Sending 512 packets every  0.000000000 ns
main [1624] Wait 2 secs for phy reset
main [1626] Ready...
sender_body [775] start
sender_body [775] start
sender_body [775] start
sender_body [775] start
sender_body [775] start
sender_body [775] start
sender_body [775] start
sender_body [775] start
sender_body [848] drop copy
sender_body [848] drop copy
sender_body [848] drop copy
sender_body [848] drop copy
sender_body [848] drop copy
sender_body [848] drop copy
sender_body [848] drop copy
sender_body [848] drop copy
main_thread [1192] 15024157 pps (15050104 pkts in 1001727 usec)
main_thread [1192] 14882290 pps (14900223 pkts in 1001205 usec)
main_thread [1192] 14879515 pps (14903798 pkts in 1001632 usec)
main_thread [1192] 14880924 pps (15795952 pkts in 1061490 usec)
main_thread [1192] 14881411 pps (15821633 pkts in 1063181 usec)
main_thread [1192] 14880095 pps (15427549 pkts in 1036791 usec)
main_thread [1192] 7986707 pps (8100741 pkts in 1014278 usec)
Sent 100000000 packets, 60 bytes each, in 6.71 seconds.
Speed: 14.90 Mpps Bandwidth: 7.15 Gbps (raw 10.01 Gbps)

$ top -H shows:

25853 root      24    0   348M 35692K select 16   0:01   7.28%
pkt-gen{pkt-gen}
25853 root      25    0   348M 35692K select 21   0:01   7.28%
pkt-gen{pkt-gen}
25853 root      25    0   348M 35692K select 15   0:01   7.28%
pkt-gen{pkt-gen}
25853 root      23    0   348M 35692K select 12   0:01   6.40%
pkt-gen{pkt-gen}
25853 root      24    0   348M 35692K select 22   0:01   6.30%
pkt-gen{pkt-gen}
25853 root      23    0   348M 35692K select  9   0:01   5.66%
pkt-gen{pkt-gen}
25853 root      23    0   348M 35692K select  7   0:01   5.57%
pkt-gen{pkt-gen}
25853 root      23    0   348M 35692K CPU0    0   0:01   5.27%
pkt-gen{pkt-gen}
   12 root     -92    -     0K  1184K WAIT    6   0:10   5.08% intr{irq290:
ix1:que }
   12 root     -92    -     0K  1184K WAIT    7   0:09   4.98% intr{irq291:
ix1:que }
   12 root     -92    -     0K  1184K WAIT    5   0:08   4.79% intr{irq289:
ix1:que }
   12 root     -92    -     0K  1184K WAIT    2   0:15   4.69% intr{irq286:
ix1:que }
   12 root     -92    -     0K  1184K WAIT    3   0:08   4.69% intr{irq287:
ix1:que }
   12 root     -92    -     0K  1184K WAIT    4   0:14   4.59% intr{irq288:
ix1:que }
   12 root     -92    -     0K  1184K WAIT    1   0:06   3.96% intr{irq285:
ix1:que }
   12 root     -92    -     0K  1184K WAIT    0   0:05   0.98% intr{irq284:
ix1:que }

I can only specify -p (threads) upto 8 because it cannot be more than the
hw.ix.num_queues=8, is that correct?

Cheers,
Hiren


More information about the freebsd-net mailing list