From: vpp-dev@lists.fd.io <vpp-dev@lists.fd.io> On Behalf Of Benoit Ganne (bganne) via lists.fd.io Sent: Monday, November 7, 2022 3:56 AM To: Jieqiang Wang <jieqiang.w...@arm.com> Cc: Lijian Zhang <lijian.zh...@arm.com>; Tianyu Li <tianyu...@arm.com>; nd <n...@arm.com>; vpp-dev@lists.fd.io; moham...@hawari.fr Subject: Re: [vpp-dev] Issues about RDMA native plugin
Hi Jieqiang, Thanks a lot for your report! CC’ing vpp-dev because that may be of interest to others, and also you can get better support. My comments/questions inline prefixed with BG: in red Best ben From: Jieqiang Wang <jieqiang.w...@arm.com<mailto:jieqiang.w...@arm.com>> Sent: Monday, November 7, 2022 9:25 To: Benoit Ganne (bganne) <bga...@cisco.com<mailto:bga...@cisco.com>>; moham...@hawari.fr<mailto:moham...@hawari.fr> Cc: Lijian Zhang <lijian.zh...@arm.com<mailto:lijian.zh...@arm.com>>; Tianyu Li <tianyu...@arm.com<mailto:tianyu...@arm.com>>; nd <n...@arm.com<mailto:n...@arm.com>> Subject: Issues about RDMA native plugin Hi Ben/Mohammed, I am Jieqiang Wang from Arm Open Source Software team focusing on open source network software such as VPP. Recently our team did some investigation on RDMA native plugin on both Arm and X86 platform and met some crash and performance issues. I’m writing this email to share what are the issues and hope to get some input from you. Before going through the issues, I would like to share my local test environment for using RDMA native plugin. VPP version: vpp v23.02-rc0~89-ge7adafeaf Compiler to build VPP binary: Clang 13.0.0 Mellanox NIC: MCX516A-CDA_Ax ConnectX-5 100GbE dual-port QSFP28; PCIe4.0 x16 Server CPU: Arm: Neoverse-N1(Ampere Altra 1P) X86: Intel(R) Xeon(R) Platinum 8268 CPU @ 2.90GHz(Dell PowerEdge R820) Here are the issues we found using RDMA native plugin. Issue #1: VPP crashes when scales to multiple worker cores/threads. For example, running VPP(two worker threads) with startup.conf and CLI command file L3-rdma.exec in the attachment works fine. However, when injecting packets into VPP, VPP would just crash with output messages like the following shows. We saw similar segmentation faults for different test cases like L2 cross-connect/L2 mac learning. But we didn’t see crash issues for VPP debug version. We guess VPP buffer metadata has been corrupted in the case of multiple worker threads using VPP release version but are not sure how to debug this issue. Any suggestion to find the root cause of this issue? Thread 2 "vpp_wk_0" received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7efb7649b700 (LWP 3355470)] 0x00007efd7842e8f6 in ip4_lookup_inline (vm=<optimized out>, frame=<optimized out>, node=<optimized out>) at /home/jiewan01/tasks/vpp_dpdk_mlx/latest/src/vnet/ip/ip4_forward.h:338 338 if (PREDICT_FALSE (lb0->lb_n_buckets > 1)) (gdb) bt #0 0x00007efd7842e8f6 in ip4_lookup_inline (vm=<optimized out>, frame=<optimized out>, node=<optimized out>) at /home/jiewan01/tasks/vpp_dpdk_mlx/latest/src/vnet/ip/ip4_forward.h:338 #1 ip4_lookup_node_fn_skx (vm=<optimized out>, node=0x7efc7c455b00, frame=0x7efc7c7e16c0) at /home/jiewan01/tasks/vpp_dpdk_mlx/latest/src/vnet/ip/ip4_forward.c:101 #2 0x00007efd7711effb in dispatch_node (vm=0x7efc7c43bd40, node=0x7efc7c455b00, type=VLIB_NODE_TYPE_INTERNAL, dispatch_state=VLIB_NODE_STATE_POLLING, frame=<optimized out>, last_time_stamp=2494501287259978) at /home/jiewan01/tasks/vpp_dpdk_mlx/latest/src/vlib/main.c:960 #3 dispatch_pending_node (vm=0x7efc7c43bd40, pending_frame_index=<optimized out>, last_time_stamp=2494501287259978) at /home/jiewan01/tasks/vpp_dpdk_mlx/latest/src/vlib/main.c:1119 #4 vlib_main_or_worker_loop (vm=<optimized out>, is_main=0) at /home/jiewan01/tasks/vpp_dpdk_mlx/latest/src/vlib/main.c:1588 #5 vlib_worker_loop (vm=<optimized out>, vm@entry=0x7efc7c43bd40) at /home/jiewan01/tasks/vpp_dpdk_mlx/latest/src/vlib/main.c:1722 #6 0x00007efd77171dda in vlib_worker_thread_fn (arg=0x7efc78814d00) at /home/jiewan01/tasks/vpp_dpdk_mlx/latest/src/vlib/threads.c:1598 #7 0x00007efd7716c8f1 in vlib_worker_thread_bootstrap_fn (arg=0x7efc78814d00) at /home/jiewan01/tasks/vpp_dpdk_mlx/latest/src/vlib/threads.c:418 #8 0x00007efd7709b609 in start_thread (arg=<optimized out>) at pthread_create.c:477 #9 0x00007efd76dd8163 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 BG: do you reproduce the issue on both x86 and ARM? Or only on ARM? I’m especially thinking about difference in memory coherency that could bite us here… [Honnappa] On Arm, the barriers for working with MMIO are different than the ones used for normal shared memory. Currently, in VPP, this distinction does not exist (please correct me if I am wrong). For ex: update_nic_descriptors_in_memory(); store_io_barrier(); /*** Currently, this API abstraction does not exist in VPP ***/ ring_door_bell_on_nic(); So, we need new APIs for the IO barriers and those need to be incorporated in the native drivers. For DPDK drivers, this is addressed in DPDK. I cannot think of any other synchronization/memory model issue. Issue #2: Huge performance gap between Striding RQ mode and Non-Striding RQ mode. We saw a huge performance gap when using RDMA interfaces created with Striding RQ enabled VS RDMA interfaces with Striding RQ disabled. On both Arm and X86 server mentioned above, throughput numbers for L3 IPv4 routing test case are about 12 Mpps with Striding RQ mode enabled. Surprisingly, it drops to ~ 30000 pps when Striding RQ mode is disabled. Is this behavior expected? BG: I’ve seen that before. Usually, striding RQ should be more performant but I’m not sure how bad non-striding should be… Did you see the same drop in performance with DPDK mlx5 driver when disabling striding RQ? See mprq_en parameter https://doc.dpdk.org/guides/nics/mlx5.html#driver-options Hope my email looks not messy to you. Look forward to your reply! Thanks, Jieqiang Wang IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#22147): https://lists.fd.io/g/vpp-dev/message/22147 Mute This Topic: https://lists.fd.io/mt/94862787/21656 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/leave/1480452/21656/631435203/xyzzy [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-