From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ve0-f179.google.com (mail-ve0-f179.google.com [209.85.128.179]) by dpdk.org (Postfix) with ESMTP id BD4D75911 for ; Wed, 30 Apr 2014 06:41:35 +0200 (CEST) Received: by mail-ve0-f179.google.com with SMTP id db12so1471396veb.38 for ; Tue, 29 Apr 2014 21:41:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=bOUZAys24NO/eXJkFP81XucXqD4MmNt5cSRddVynjRQ=; b=mcUizKh/ewmi6nWYc7xl1Pp0ohXaLtKn0LN3IYcC4T0SlralNX+GZHcaX950NRD91G jcweUnSIcstNtwVPidMvnck8yVtv/ozcNDnf2w2Sts0krfuWaYKtzdV8+yjCR0AvDXgc 0lp8oGdtTHOMBJH3jzahdtaBBERI9YUoU9F2XcXYxx0ltmwzrFDXTDqosdt7/Qtkx7uU +OSTEOo9xdg5uYzohOCdLxhvhvgqtwsEbRcyYkakGV+B4YKKU03aefvBJt2ibCGx8A2q vsV0IAM7veXR3yJulFqMaUKSoOrJ4FbOGS8J2KA5UI/jv7Zrv96bEAIoKY4E0s1oUiqM tY7w== MIME-Version: 1.0 X-Received: by 10.220.92.135 with SMTP id r7mr1820946vcm.11.1398832899571; Tue, 29 Apr 2014 21:41:39 -0700 (PDT) Received: by 10.58.73.72 with HTTP; Tue, 29 Apr 2014 21:41:39 -0700 (PDT) Date: Wed, 30 Apr 2014 08:11:39 +0330 Message-ID: From: Hamid Ramazani To: Thomas Monjalon , "dev@dpdk.org" Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] packet loss: multi-queue (RSS enabled) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Apr 2014 04:41:36 -0000 Hi, I tried a lot (more than a week) to solve the problem myself and not to bother the list, but I didn't succeed. Maybe other people have the same problem. I have a simple program attached. It is intended for simple packet capturing; captures from interface and writes to memory, and frees the memory in the next loop. I have a 10G 82599EB Intel SFI/SFP+ network interface for capturing packets. As you may know, this network card supports up to 128 RSS queues. This is just a test, so the packets being sent at 820Kpps (kilo packet per second). Each packet is 1500B (fixed size); it is 9.16 Gbit per second. Of course when the packet per seconds goes up and packet size goes down (e.g. 400B per packet), it gets much worse. When using one queue to receive, I receive all the packets, with no loss. When I use more than one queue (e.g. 8 queues), with each thread running on a dedicated core, I have a considerable amount of loss. Please note that: 1. The computer has 12 * 2.67GHz cores, and it does nothing else but capturing packets. The CPU is Intel Xeon X5650. 2. The operating system is Ubuntu 12.04.3 LTS Attached file includes: main.h main.c Makefile ./run.sh It is configured to be run with 8 queues. If you want to change the number of receive queues, please: 1. in main.c, change the value assigned to nb_rx_q_of_dev to the desired value. 2. change core mask in run.sh file (since there is SKIP_MASTER, you should give a core containing one more CPU than given number of queues). I think there might be following problems: 1. the port configuration is not fine. 2. freeing memory has a considerable amount of overhead, and may be I shouldn't do that. But If I don't the pool will be full, won't be? Is there any other way? Please help. Thanks a lot in advance for your help and comments. All the Best, Hamid