From f340a55dc537e31b8ae1a63931029972a79578c1 Mon Sep 17 00:00:00 2001 From: Judy Joseph Date: Mon, 20 Jul 2020 15:38:47 -0700 Subject: [PATCH 1/5] PMON design doc for multi-asic --- doc/pmon/ledd.png | Bin 0 -> 33834 bytes doc/pmon/pmon_multiasic_design.md | 219 ++++++++++++++++++++++++++++++ doc/pmon/xcvrd.png | Bin 0 -> 68048 bytes 3 files changed, 219 insertions(+) create mode 100644 doc/pmon/ledd.png create mode 100644 doc/pmon/pmon_multiasic_design.md create mode 100644 doc/pmon/xcvrd.png diff --git a/doc/pmon/ledd.png b/doc/pmon/ledd.png new file mode 100644 index 0000000000000000000000000000000000000000..1451860663edc126f1f68b12abc8e43591ae1728 GIT binary patch literal 33834 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

3$;@FRQt9Z%R1Gyg}C;8Klvt3Ee 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 U$?zs`Inq)mRn(6qC>wkJ7xBssegFUf literal 0 HcmV?d00001 From 57980d657ab3f2614bf22d9b5c01227dd7a39714 Mon Sep 17 00:00:00 2001 From: judyjoseph <53951155+judyjoseph@users.noreply.github.com> Date: Fri, 24 Jul 2020 15:54:52 -0700 Subject: [PATCH 2/5] Update pmon_multiasic_design.md --- doc/pmon/pmon_multiasic_design.md | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/doc/pmon/pmon_multiasic_design.md b/doc/pmon/pmon_multiasic_design.md index 32261e183ff..e6396888cbf 100644 --- a/doc/pmon/pmon_multiasic_design.md +++ b/doc/pmon/pmon_multiasic_design.md @@ -24,7 +24,7 @@ The design approach taken is as given below, - The **system wide platform tables** like PSU\_INFO, FAN\_INFO, EEPROM\_INFO etc. will be kept in the STATE\_DB instance of **Global database** (the database docker running in linux host) -- The platform plugins are generally agnostic of whether it is single-asic or multi-asic platform. It interacts with the platform drivers in the linux kernel, sys/proc filesystems.(In_ _ **Mellanox platforms** _ _this is different as the events like transceiver plug in/out events_ _are exposed by mlnx SDK which reside in syncd container. With multi-asic there is syncd per namespace, it would need a change in plugins for Mellanox multi-asic platforms)_ +- The platform plugins are generally agnostic of whether it is single-asic or multi-asic platform. It interacts with the platform drivers in the linux kernel, sys/proc filesystems.(In **Mellanox platforms** this is different as the events like transceiver plug in/out events are exposed by mlnx SDK which reside in syncd container. With multi-asic there is syncd per namespace, it would need a change in plugins for Mellanox multi-asic platforms) - In the multi-asic platform there are port\_config.ini files per ASIC. They will be present in the directories named with the **asic_index** under the device/platform/hwsku directory. These files are parsed to create the **interface** **to** **asic\_id** mapping. @@ -35,7 +35,7 @@ This section will detail more on the changes planned to various platform classes #### **DaemonBase** - Introduce namespace parameter to db\_connect to connect to DB in a namespace -- Additional API's needed for the following, +- Additional API's needed for the following, - Check if it is multi-asic platform - Get the number of asic's in the device. - Get the namespaces mapped to front-end ASIC's in the device. @@ -43,7 +43,6 @@ This section will detail more on the changes planned to various platform classes #### **SfpUtilHelper/ SfpUtilBase** This **platform\_sfputil** class handles parsing the port\_config.ini file to **create the port list**. - For multi-asic platform support, the functionality here needs to be extended to - Parse multiple port\_config.ini files and create a single port list irrespective of which ASIC/namespace they belong to. @@ -70,17 +69,15 @@ Thermalctld connects to STATE\_DB and updates the following tables viz. FAN\_INF ### **Ledd:** -LED daemon which updates the port LED based on the port state change events from PORT\_TABLE, does the following - +LED daemon which updates the port LED based on the port state change events from PORT\_TABLE, currently does the following - connect to the APPL\_DB - subscribe to port state change events from PORT\_TABLE -- Call the platform plugin API's to update the port LED in the device. +- Call the platform plugin API's to update the port LED in the device. ```python # Open a handle to the Application database - appl_db = daemon_base.db_connect("APPL_DB") # Subscribe to PORT table notifications in the Application DB - …… + …… while True: (state, c) = sel.select(SELECT_TIMEOUT) (key, op, fvp) = sst.pop() @@ -105,23 +102,23 @@ The design changes for multi-asic platform would be to subscribe for port state ```python while True: (state, c) = sel.select(SELECT_TIMEOUT) - for namespace in namespaces - (key, op, fvp) = sst[namespace].pop() - …… - led_control.port_link_state_change(key, fvp_dict["oper_status"]) + # Get the namespace from the selectable object and use it to index the SubscriberStateTable handle. + ns=c.getDbNamespace() + (key, op, fvp) = sst[ns].pop() + …… + led_control.port_link_state_change(key, fvp_dict["oper_status"]) ``` -**Optimization planned:** In the current swsscommon::select() implementation, when the select comes out due to an event in any of the FD's it returns just first Selectable object, and not any of the SubscriberStateTable object we created earlier. If we can extract the namespace from the Selectable object, we can remove the **namespaces loop** above and access **sst[namespace]** directly. **Alternative approach for Ledd daemon:** In Ledd process we could spawn multiple threads, one thread per ASIC to handle events for interfaces which it owns. Each thread would subscribe for the events from PORT\_TABLE in the APP\_DB of the namespace mapped to the ASIC. **Didn't opt this as this would result in more threads depending on the number of ASIC's.** + ### ### **Xcvrd:** -Xcvrd will spawn two threads - +Xcvrd currently will spawn two threads 1. a thread to wait for the SFP plug in/out event, when event received, it will update the DB entries accordingly. 2. A timer will be started to periodically refresh the DOM sensor information. @@ -181,6 +178,7 @@ Here are the pros and cons of both the approaches, The problem we are trying to solve is to post the data into DB's in different namespaces which can be easily achieved with **interface** **to** **asic\_id** mapping table. + ## **Namespace support in swss-common DBConnector** The swss-common::DBconnector class needs to be enhanced to use the **"namespace"** context information to connect to the DB instance in that namespace. From b184299c488ea7c99bf964ba90f061f676933f01 Mon Sep 17 00:00:00 2001 From: judyjoseph <53951155+judyjoseph@users.noreply.github.com> Date: Fri, 24 Jul 2020 15:56:00 -0700 Subject: [PATCH 3/5] Update pmon_multiasic_design.md --- doc/pmon/pmon_multiasic_design.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/pmon/pmon_multiasic_design.md b/doc/pmon/pmon_multiasic_design.md index e6396888cbf..a81204fcf2d 100644 --- a/doc/pmon/pmon_multiasic_design.md +++ b/doc/pmon/pmon_multiasic_design.md @@ -114,6 +114,7 @@ The design changes for multi-asic platform would be to subscribe for port state In Ledd process we could spawn multiple threads, one thread per ASIC to handle events for interfaces which it owns. Each thread would subscribe for the events from PORT\_TABLE in the APP\_DB of the namespace mapped to the ASIC. **Didn't opt this as this would result in more threads depending on the number of ASIC's.** + ### ### **Xcvrd:** @@ -174,9 +175,8 @@ Here are the pros and cons of both the approaches, #### **Conclusion** -**Approach 1** above was taken as there is no real need of increasing the number of python threads since we have only at max 64 interfaces currently. +**Approach 1** above was taken as there is no real need of increasing the number of python threads since we have only at max 64 interfaces currently.The problem we are trying to solve is to post the data into DB's in different namespaces which can be easily achieved with **interface** **to** **asic\_id** mapping table. -The problem we are trying to solve is to post the data into DB's in different namespaces which can be easily achieved with **interface** **to** **asic\_id** mapping table. ## **Namespace support in swss-common DBConnector** From 25c76a581b4a699260a2831fab1a9886f7deefac Mon Sep 17 00:00:00 2001 From: judyjoseph <53951155+judyjoseph@users.noreply.github.com> Date: Tue, 28 Jul 2020 22:29:16 -0700 Subject: [PATCH 4/5] Update pmon_multiasic_design.md --- doc/pmon/pmon_multiasic_design.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/doc/pmon/pmon_multiasic_design.md b/doc/pmon/pmon_multiasic_design.md index a81204fcf2d..d3e731de624 100644 --- a/doc/pmon/pmon_multiasic_design.md +++ b/doc/pmon/pmon_multiasic_design.md @@ -183,9 +183,8 @@ Here are the pros and cons of both the approaches, The swss-common::DBconnector class needs to be enhanced to use the **"namespace"** context information to connect to the DB instance in that namespace. -The DB connector classes will have capability to parse the new "database\_global.json" file and retrieve the namespaces present in the platform and the database instances in each namespace. - -**Reference PR** : [https://github.com/Azure/sonic-swss-common/pull/364](https://github.com/Azure/sonic-swss-common/pull/364) +The DB connector classes will have capability to parse the new "database\_global.json" file and retrieve the namespaces present in the platform and the database instances in each namespace. +Please refer [multi_namespace_db_instances design document](https://github.com/Azure/SONiC/blob/master/doc/database/multi_namespace_db_instances.md) for more details. ## From de0336b5391199616c25c74d29028d4566c4df6f Mon Sep 17 00:00:00 2001 From: judyjoseph <53951155+judyjoseph@users.noreply.github.com> Date: Sun, 2 Aug 2020 23:07:18 -0700 Subject: [PATCH 5/5] Update pmon_multiasic_design.md --- doc/pmon/pmon_multiasic_design.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/pmon/pmon_multiasic_design.md b/doc/pmon/pmon_multiasic_design.md index d3e731de624..dc3106d9e07 100644 --- a/doc/pmon/pmon_multiasic_design.md +++ b/doc/pmon/pmon_multiasic_design.md @@ -20,7 +20,7 @@ The design approach taken is as given below, - The **interface related platform tables** like TRANSCEIVER\_INFO **,** TRANSCEIVER\_STATUS etc. will be stored in the STATE\_DB instance of **Asic database** (the database docker running in asic network namespace) -- We are interested in the front-panel interfaces and not in the backplane interfaces between ASIC's. Hence in PMON daemons we will work with namespaces relating to front-panel interfaces. +- In the multi-asic design there are namespaces created for front-end and back-end ASIC's. Since PMON is interested only in the front-panel interfaces (not in the backplane interfaces between ASIC's) it works with the namespaces relating to front-end ASIC's. - The **system wide platform tables** like PSU\_INFO, FAN\_INFO, EEPROM\_INFO etc. will be kept in the STATE\_DB instance of **Global database** (the database docker running in linux host)