[dpdk-users] Vhost PMD Performance Doesn't Scale as Expected

2020-08-12 Thread David Christensen
I'm examining performance between two VMs connected with a vhost 
interface on DPDK 20.08 and testpmd.  Each VM (client-0, server-0) has 4 
VCPUs, 4 RX/TX queues per port, 4GB RAM, and runs 8 containers, each 
with an instance of qperf running the tcp_bw test.  The configuration is 
targeting all CPU/memory activity for NUMA node 1.


When I look at the cumulative throughput as I increase the number of 
qperf pairs I'm noticing that the performance doesn't appear to scale as 
I had hoped.  Here's a table with some results:


concurrent qperf pairs
msg_size 1   2   4   8
8,19212.74 Gb/s  21.68 Gb/s  27.89 Gb/s  30.94 Gb/s
16,384   13.84 Gb/s  24.06 Gb/s  28.51 Gb/s  30.47 Gb/s
32,768   16.13 Gb/s  24.49 Gb/s  28.89 Gb/s  30.23 Gb/s
65,536   16.19 Gb/s  22.53 Gb/s  29.79 Gb/s  30.46 Gb/s
131,072  15.37 Gb/s  23.89 Gb/s  29.65 Gb/s  30.88 Gb/s
262,144  14.73 Gb/s  22.97 Gb/s  29.54 Gb/s  31.28 Gb/s
524,288  14.62 Gb/s  23.39 Gb/s  28.70 Gb/s  30.98 Gb/s

Can anyone suggest a possible configuration change that might improve 
performance or is this generally what is expected?  I was expecting 
performance to nearly double as I move from 1 to 2 to 4 queues.


Even single queue performance is below Intel's published performance 
results (see 
https://fast.dpdk.org/doc/perf/DPDK_20_05_Intel_virtio_performance_report.pdf), 
though I was unable to get the vhost-switch example application to run 
due to an mbuf allocation error for the i40e PMD and had to revert to 
the testpmd app.


Configuration details below.

Dave

/proc/cmdline:
--
BOOT_IMAGE=(hd0,gpt2)/vmlinuz-4.18.0-147.el8.x86_64 
root=/dev/mapper/rhel-root ro intel_iommu=on iommu=pt 
default_hugepagesz=1G hugepagesz=1G hugepages=64 crashkernel=auto 
resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap 
rhgb quiet =1 nohz=on nohz_full=8-15,24-31 rcu_nocbs=8-15,24-31 
tuned.non_isolcpus=00ff00ff intel_pstate=disable nosoftlockup


testpmd command-line:
-
~/src/dpdk/build/app/dpdk-testpmd -l 7,24-31 -n 4 --no-pci --vdev 
'net_vhost0,iface=/tmp/vhost-dpdk-server-0,dequeue-zero-copy=1,tso=1,queues=4' 
--vdev 
'net_vhost1,iface=/tmp/vhost-dpdk-client-0,dequeue-zero-copy=1,tso=1,queues=4' 
 -- -i --nb-cores=8 --numa --rxq=4 --txq=4


testpmd forwarding core mapping:

Start automatic packet forwarding
io packet forwarding - ports=2 - cores=8 - streams=8 - NUMA support 
enabled, MP allocation mode: native

Logical Core 24 (socket 1) forwards packets on 1 streams:
  RX P=0/Q=0 (socket 0) -> TX P=1/Q=0 (socket 0) peer=02:00:00:00:00:01
Logical Core 25 (socket 1) forwards packets on 1 streams:
  RX P=1/Q=0 (socket 0) -> TX P=0/Q=0 (socket 0) peer=02:00:00:00:00:00
Logical Core 26 (socket 1) forwards packets on 1 streams:
  RX P=0/Q=1 (socket 0) -> TX P=1/Q=1 (socket 0) peer=02:00:00:00:00:01
Logical Core 27 (socket 1) forwards packets on 1 streams:
  RX P=1/Q=1 (socket 0) -> TX P=0/Q=1 (socket 0) peer=02:00:00:00:00:00
Logical Core 28 (socket 1) forwards packets on 1 streams:
  RX P=0/Q=2 (socket 0) -> TX P=1/Q=2 (socket 0) peer=02:00:00:00:00:01
Logical Core 29 (socket 1) forwards packets on 1 streams:
  RX P=1/Q=2 (socket 0) -> TX P=0/Q=2 (socket 0) peer=02:00:00:00:00:00
Logical Core 30 (socket 1) forwards packets on 1 streams:
  RX P=0/Q=3 (socket 0) -> TX P=1/Q=3 (socket 0) peer=02:00:00:00:00:01
Logical Core 31 (socket 1) forwards packets on 1 streams:
  RX P=1/Q=3 (socket 0) -> TX P=0/Q=3 (socket 0) peer=02:00:00:00:00:00

  io packet forwarding packets/burst=32
  nb forwarding cores=8 - nb forwarding ports=2
  port 0: RX queue number: 4 Tx queue number: 4
Rx offloads=0x0 Tx offloads=0x0
RX queue: 0
  RX desc=0 - RX free threshold=0
  RX threshold registers: pthresh=0 hthresh=0  wthresh=0
  RX Offloads=0x0
TX queue: 0
  TX desc=0 - TX free threshold=0
  TX threshold registers: pthresh=0 hthresh=0  wthresh=0
  TX offloads=0x0 - TX RS bit threshold=0
  port 1: RX queue number: 4 Tx queue number: 4
Rx offloads=0x0 Tx offloads=0x0
RX queue: 0
  RX desc=0 - RX free threshold=0
  RX threshold registers: pthresh=0 hthresh=0  wthresh=0
  RX Offloads=0x0
TX queue: 0
  TX desc=0 - TX free threshold=0
  TX threshold registers: pthresh=0 hthresh=0  wthresh=0
  TX offloads=0x0 - TX RS bit threshold=0

lscpu:
--
Architecture:x86_64
CPU op-mode(s):  32-bit, 64-bit
Byte Order:  Little Endian
CPU(s):  32
On-line CPU(s) list: 0-31
Thread(s) per core:  2
Core(s) per socket:  8
Socket(s):   2
NUMA node(s):2
Vendor ID:   GenuineIntel
CPU family:  6
Model:   85
Model name:  Intel(R) Xeon(R) Silver 4110 CPU @ 2.10GHz
Stepping:4
CPU MHz: 2400.075
BogoMIPS:4200.00
Virtualization:  VT-x
L1d cache:   32K
L1i cache:   32K
L2 cache:

Re: [dpdk-users] DPDK application is hunged in eal_hugepage_info_init

2020-08-12 Thread Stephen Hemminger
On Wed, 12 Aug 2020 16:59:33 +0530
Jatin Sahu  wrote:

> Hi,
> 
> We are using DPDK libraries with huge pages enabled.
> We observed that the application rte_eal_init() function is stuck in
> flock() call.
> 
> Please advise how to resolve this.
> 
> DPDK Version: dpdk-stable-18.11.6/
> 
> [root@loadtestsrv helloworld]# ./build/helloworld -l 0-3 -n 4
> EAL: Detected 72 lcore(s)
> EAL: Detected 2 NUMA nodes
> EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
> 
> Stack Trace:
> Thread 3 (Thread 0x7f783c34e700 (LWP 1034)):
> #0  0x7f783c664113 in epoll_wait () from /lib64/libc.so.6
> #1  0x00558724 in eal_intr_thread_main ()
> #2  0x7f783c939dd5 in start_thread () from /lib64/libpthread.so.0
> #3  0x7f783c663b3d in clone () from /lib64/libc.so.6
> Thread 2 (Thread 0x7f783bb4d700 (LWP 1035)):
> #0  0x7f783c940bfd in recvmsg () from /lib64/libpthread.so.0
> #1  0x00565bae in mp_handle ()
> #2  0x7f783c939dd5 in start_thread () from /lib64/libpthread.so.0
> #3  0x7f783c663b3d in clone () from /lib64/libc.so.6
> Thread 1 (Thread 0x7f783d66dc00 (LWP 1033)):
> #0  0x7f783c655167 in flock () from /lib64/libc.so.6
> #1  0x0054e068 in eal_hugepage_info_init ()
> #2  0x0054ccfe in rte_eal_init ()
> #3  0x004712a6 in main ()
> [root@loadtestsrv user]#
> 
> HugePage details:
> 
> [root@loadtestsrv roamware]# cat /proc/meminfo | grep -i huge
> AnonHugePages:112640 kB
> HugePages_Total:  32
> HugePages_Free:   32
> HugePages_Rsvd:0
> HugePages_Surp:0
> Hugepagesize:1048576 kB
> 
> [roamware@loadtestsrv ~]$ cat
> /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
> 512
> [roamware@loadtestsrv ~]$ cat
> /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
> 512
> 
> [root@loadtestsrv roamware]# cat /proc/mounts | grep -i huge
> cgroup /sys/fs/cgroup/hugetlb cgroup
> rw,seclabel,nosuid,nodev,noexec,relatime,hugetlb 0 0
> nodev /mnt/huge hugetlbfs rw,seclabel,relatime 0 0
> nodev /mnt/huge hugetlbfs rw,seclabel,relatime,pagesize=2M 0 0
> nodev /mnt/huge hugetlbfs rw,seclabel,relatime 0 0
> 
> Regards,
> Jatin

Maybe in this case Flock blocks if other process has the file locked?
Is there another process which has flocked the file?
Or you have a buggy kernel?


Re: [dpdk-users] Resolved Issues per release

2020-08-12 Thread Thomas Monjalon
12/08/2020 15:32, Jim Holland (jimholla):
> The release notes at https://doc.dpdk.org/guides-20.02/rel_notes/index.html 
> don't list the resolved issues/bugs. Is there a way to find what bugs are 
> resolved for each dpdk release?

When looking at the git history,
every commit fixing a bug should contain a line starting with "Fixes:"
identifying the root cause.

Catching such commits will give you all details of bugs fixed.




[dpdk-users] Resolved Issues per release

2020-08-12 Thread Jim Holland (jimholla)
The release notes at https://doc.dpdk.org/guides-20.02/rel_notes/index.html 
don't list the resolved issues/bugs. Is there a way to find what bugs are 
resolved for each dpdk release?

Thanks...Jim


[dpdk-users] DPDK application is hunged in eal_hugepage_info_init

2020-08-12 Thread Jatin Sahu
Hi,

We are using DPDK libraries with huge pages enabled.
We observed that the application rte_eal_init() function is stuck in
flock() call.

Please advise how to resolve this.

DPDK Version: dpdk-stable-18.11.6/

[root@loadtestsrv helloworld]# ./build/helloworld -l 0-3 -n 4
EAL: Detected 72 lcore(s)
EAL: Detected 2 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket

Stack Trace:
Thread 3 (Thread 0x7f783c34e700 (LWP 1034)):
#0  0x7f783c664113 in epoll_wait () from /lib64/libc.so.6
#1  0x00558724 in eal_intr_thread_main ()
#2  0x7f783c939dd5 in start_thread () from /lib64/libpthread.so.0
#3  0x7f783c663b3d in clone () from /lib64/libc.so.6
Thread 2 (Thread 0x7f783bb4d700 (LWP 1035)):
#0  0x7f783c940bfd in recvmsg () from /lib64/libpthread.so.0
#1  0x00565bae in mp_handle ()
#2  0x7f783c939dd5 in start_thread () from /lib64/libpthread.so.0
#3  0x7f783c663b3d in clone () from /lib64/libc.so.6
Thread 1 (Thread 0x7f783d66dc00 (LWP 1033)):
#0  0x7f783c655167 in flock () from /lib64/libc.so.6
#1  0x0054e068 in eal_hugepage_info_init ()
#2  0x0054ccfe in rte_eal_init ()
#3  0x004712a6 in main ()
[root@loadtestsrv user]#

HugePage details:

[root@loadtestsrv roamware]# cat /proc/meminfo | grep -i huge
AnonHugePages:112640 kB
HugePages_Total:  32
HugePages_Free:   32
HugePages_Rsvd:0
HugePages_Surp:0
Hugepagesize:1048576 kB

[roamware@loadtestsrv ~]$ cat
/sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
512
[roamware@loadtestsrv ~]$ cat
/sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
512

[root@loadtestsrv roamware]# cat /proc/mounts | grep -i huge
cgroup /sys/fs/cgroup/hugetlb cgroup
rw,seclabel,nosuid,nodev,noexec,relatime,hugetlb 0 0
nodev /mnt/huge hugetlbfs rw,seclabel,relatime 0 0
nodev /mnt/huge hugetlbfs rw,seclabel,relatime,pagesize=2M 0 0
nodev /mnt/huge hugetlbfs rw,seclabel,relatime 0 0

Regards,
Jatin