From owner-soc-status@FreeBSD.ORG Wed Jul 27 23:12:18 2011 Return-Path: Delivered-To: soc-status@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8FC011065670; Wed, 27 Jul 2011 23:12:18 +0000 (UTC) (envelope-from syuu@dokukino.com) Received: from mail-qw0-f54.google.com (mail-qw0-f54.google.com [209.85.216.54]) by mx1.freebsd.org (Postfix) with ESMTP id 2D9628FC14; Wed, 27 Jul 2011 23:12:17 +0000 (UTC) Received: by qwc9 with SMTP id 9so1499271qwc.13 for ; Wed, 27 Jul 2011 16:12:17 -0700 (PDT) Received: by 10.229.49.17 with SMTP id t17mr333113qcf.57.1311808337176; Wed, 27 Jul 2011 16:12:17 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.229.71 with HTTP; Wed, 27 Jul 2011 16:11:37 -0700 (PDT) From: Takuya ASADA Date: Thu, 28 Jul 2011 08:11:37 +0900 Message-ID: To: soc-status@freebsd.org, Kazuya Goda , "Robert N. M. Watson" , George Neville-Neil Content-Type: text/plain; charset=UTF-8 Cc: Subject: [mq_bpf] status report #9 X-BeenThere: soc-status@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Summer of Code Status Reports and Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Jul 2011 23:12:18 -0000 *Project summary The project goal is to support multiqueue network interface on BPF, and provide interfaces for multithreaded packet processing using BPF. Modern high performance NICs have multiple receive/send queues and RSS feature, this allows to process packet concurrently on multiple processors. Main purpose of the project is to support these hardware and get benefit of parallelism. Here's status update from last week: * Throughput benchmark - Test environment CPU: Core i7 X980 MB: ASUS P6X58D Premium(Intel X58) NIC: Intel Gigabit ET Dual Port Server Adapter(82576) - Benchmark program test_sqpbf is single threaded bpf benchmark which used only existing bpf ioctls. It fetch all packets from a NIC and output them on file. test_mqbpf is multithreaded bpf benchmark which used new multiqueue bpf ioctls. Each thread fetch packets only from pinned queue and output them on per thread separated file. - Test conditions iperf used for generate network traffic, with following argument options test node: iperf -s -i1 other node: iperf -c [IP] -i1 -t 100000 -P8 # 8 threads, TCP tested with following 4 kernels to compare current: GENERIC kernel on current, BPFIF_LOCK:mtx BPFQ_LOCK:doesn't exist mq_bpf1: RSS kernel on mp_bpf, BPFIF_LOCK:mtx BPFQ_LOCK:mtx mq_bpf2: RSS kernel on mp_bpf, BPFIF_LOCK:mtx BPFQ_LOCK:rmlock mq_bpf3: RSS kernel on mp_bpf, BPFIF_LOCK:rmlock BPFQ_LOCK:rmlock - Benchmark result(MB/s) The result is 20 times average of test_sqbpf / test_mqbpf test_sqbpf test_mqbpf current 26.65568315 - mq_bpf1 24.96387975 36.608574 mq_bpf2 27.13427415 41.76666665 mq_bpf3 27.0958332 51.48198915