From patchwork Tue Mar 3 17:19:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Numan Siddique X-Patchwork-Id: 1248548 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=openvswitch.org (client-ip=140.211.166.133; helo=hemlock.osuosl.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=ovn.org Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 48X3fy3HJqz9s3x for ; Wed, 4 Mar 2020 04:20:09 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 8CC1387880; Tue, 3 Mar 2020 17:20:06 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wzAv6knQ8mNR; Tue, 3 Mar 2020 17:20:00 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by hemlock.osuosl.org (Postfix) with ESMTP id 4CADF8667B; Tue, 3 Mar 2020 17:20:00 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 2F79EC07FF; Tue, 3 Mar 2020 17:20:00 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@lists.linuxfoundation.org Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by lists.linuxfoundation.org (Postfix) with ESMTP id 1E2EEC013E for ; Tue, 3 Mar 2020 17:19:59 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 06A272045C for ; Tue, 3 Mar 2020 17:19:59 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 2BOfit7b3jt2 for ; Tue, 3 Mar 2020 17:19:57 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from relay12.mail.gandi.net (relay12.mail.gandi.net [217.70.178.232]) by silver.osuosl.org (Postfix) with ESMTPS id 2A71E20443 for ; Tue, 3 Mar 2020 17:19:56 +0000 (UTC) Received: from nummac.local (unknown [115.99.182.209]) (Authenticated sender: numans@ovn.org) by relay12.mail.gandi.net (Postfix) with ESMTPSA id 310BA200002; Tue, 3 Mar 2020 17:19:52 +0000 (UTC) From: numans@ovn.org To: dev@openvswitch.org Date: Tue, 3 Mar 2020 22:49:37 +0530 Message-Id: <20200303171937.2310-1-numans@ovn.org> X-Mailer: git-send-email 2.24.1 MIME-Version: 1.0 Subject: [ovs-dev] [RFC v2 ovn 0/6] Incremental processing improvements. X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ovs-dev-bounces@openvswitch.org Sender: "dev" From: Numan Siddique This patch series tries to handle port binding, datapath binding and ovs interface changes incrementally. First 2 patches does some refactoring. Submitting this as RFC to get some comments. Still need to update the proper commit messages and fix one test case related to Incremental processing which is failing. Another test case related to Interconnection is failing. Below are the results of some testing I did with ovn-fake-multinode setup Test setup ------ 1. ovn-central fake node running OVN dbs and 2 compute nodes running ovn-controller. 2. Before running the tests, used an existing OVN db with the below resources No of logical switches - 53 No of logical ports - 1256 No of logical routers - 9 No of logical router ports - 56 No of port groups - 152 No of logical flows - 45447 Port bindings on compute-1 - 19 Port bindings on compute-2 - 18 No of OF flows on compute-1 - 84996 No of OF flows on compute-2 - 84901 3. The test does the following - Creates 2 logical switches (one for each compute node) and connect to a logical router for each compute node. - 100 logical ports are created (50 per lswitch), a simple ACL is added and the address set is created for each port. - Each port is bound on the respective compute node and the test pings the IP of the port (from another port belonging to the same lswitch created earlier). Below are the results with OVN master +----------------------------------------------------------------------------------------------------------+ | Response Times (sec) | +----------------------------------+--------+--------+--------+--------+--------+--------+---------+-------+ | action | min | median | 90%ile | 95%ile | max | avg | success | count | +----------------------------------+--------+--------+--------+--------+--------+--------+---------+-------+ | ovn.create_or_update_address_set | 0.484 | 0.507 | 0.526 | 0.537 | 0.547 | 0.51 | 100.0% | 100 | | ovn.create_port_acls | 0.948 | 1.014 | 1.05 | 1.06 | 1.089 | 1.016 | 100.0% | 100 | | ovn_network.bind_port | 1.244 | 1.294 | 1.333 | 1.346 | 1.397 | 1.301 | 100.0% | 100 | | ovn.bind_ovs_vm | 0.379 | 0.432 | 0.463 | 0.469 | 0.472 | 0.434 | 100.0% | 100 | | ovn.bind_internal_vm | 0.824 | 0.861 | 0.897 | 0.906 | 0.941 | 0.868 | 100.0% | 100 | | ovn_network.wait_port_ping | 7.153 | 7.183 | 7.214 | 7.22 | 7.237 | 7.185 | 100.0% | 100 | | total | 10.373 | 10.479 | 10.544 | 10.551 | 10.581 | 10.483 | 100.0% | 100 | +----------------------------------+--------+--------+--------+--------+--------+--------+---------+-------+ Load duration: 1048.8911039829254 Full duration: 1050.4055325984955 Below are the results with these patches +-------------------------------------------------------------------------------------------------------+ | Response Times (sec) | +----------------------------------+-------+--------+--------+--------+-------+-------+---------+-------+ | action | min | median | 90%ile | 95%ile | max | avg | success | count | +----------------------------------+-------+--------+--------+--------+-------+-------+---------+-------+ | ovn.create_or_update_address_set | 0.479 | 0.492 | 0.513 | 0.52 | 0.531 | 0.495 | 100.0% | 100 | | ovn.create_port_acls | 0.946 | 0.964 | 0.998 | 1.001 | 1.041 | 0.969 | 100.0% | 100 | | ovn_network.bind_port | 1.22 | 1.297 | 1.342 | 1.36 | 1.402 | 1.298 | 100.0% | 100 | | ovn.bind_ovs_vm | 0.373 | 0.418 | 0.436 | 0.455 | 0.472 | 0.42 | 100.0% | 100 | | ovn.bind_internal_vm | 0.818 | 0.88 | 0.911 | 0.93 | 0.982 | 0.878 | 100.0% | 100 | | ovn_network.wait_port_ping | 3.812 | 3.854 | 3.906 | 3.934 | 4.015 | 3.861 | 100.0% | 100 | | total | 6.977 | 7.165 | 7.277 | 7.308 | 7.401 | 7.176 | 100.0% | 100 | +----------------------------------+-------+--------+--------+--------+-------+-------+---------+-------+ Load duration: 718.401807308197 Full duration: 719.8932237625122 Testing the same with fresh OVN dbs didn't show any improvements in the timings. v1 -> v2 --------- * Added 2 new patches * Patch 5 (ofctrl_check_and_add_flow) was submitted earlier too and the previous discussion is here - https://patchwork.ozlabs.org/patch/1202417/ * Patch 6 handles I-P for ct_zone and OVS interface changes in flow_output_run stage. Numan Siddique (6): Refactor binding_run()to take two context argument - binding_ctx_in and binding_ctx_out. ovn-controller: Refactor binding.c ovn-controller: I-P for port binding in runtime_data stage ovn-controller: I-P for datapath binding ofctrl_check_and_add_flow: Replace the actions of an existing flow if actions have changed. ovn-controller: I-P for ct zone and OVS interface changes controller/binding.c | 1097 ++++++++++++++++++++++++----------- controller/binding.h | 58 +- controller/ofctrl.c | 23 +- controller/ovn-controller.c | 317 +++++++--- controller/ovn-controller.h | 22 + controller/physical.c | 47 ++ controller/physical.h | 5 +- controller/pinctrl.c | 19 +- controller/pinctrl.h | 4 +- 9 files changed, 1139 insertions(+), 453 deletions(-)