[ovs-dev] [PATCH v2 ovn] controller: instrument ovn-controller loop with stopwatch

Mark Michelson mmichels at redhat.com
Wed Jul 21 19:03:36 UTC 2021


I pushed the change to master. Thanks!

On 7/19/21 9:30 AM, Lorenzo Bianconi wrote:
> Introduce stopwatch instrumentation to the following ovn-controller
> routines:
> - commit_ct_zones
> - bfd_run
> - patch_run
> - pinctrl_run
> - if_status_mgr_update
> - if_status_mgr_run
> - ofctrl_seqno_run
> 
> Acked-by: Dumitru Ceara <dceara at redhat.com>
> Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
> ---
> Changes since v1:
> - rebase on top of ovn master
> ---
>   controller/ovn-controller.c | 38 +++++++++++++++++++++++++++++++++++++
>   1 file changed, 38 insertions(+)
> 
> diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c
> index 2418c301b..85384908d 100644
> --- a/controller/ovn-controller.c
> +++ b/controller/ovn-controller.c
> @@ -95,6 +95,13 @@ static unixctl_cb_func debug_delay_nb_cfg_report;
>   
>   #define CONTROLLER_LOOP_STOPWATCH_NAME "flow-generation"
>   #define OFCTRL_PUT_STOPWATCH_NAME "flow-installation"
> +#define PINCTRL_RUN_STOPWATCH_NAME "pinctrl-run"
> +#define PATCH_RUN_STOPWATCH_NAME "patch-run"
> +#define CT_ZONE_COMMIT_STOPWATCH_NAME "ct-zone-commit"
> +#define IF_STATUS_MGR_RUN_STOPWATCH_NAME "if-status-mgr-run"
> +#define IF_STATUS_MGR_UPDATE_STOPWATCH_NAME "if-status-mgr-update"
> +#define OFCTRL_SEQNO_RUN_STOPWATCH_NAME "ofctrl-seqno-run"
> +#define BFD_RUN_STOPWATCH_NAME "bfd-run"
>   
>   #define OVS_NB_CFG_NAME "ovn-nb-cfg"
>   #define OVS_NB_CFG_TS_NAME "ovn-nb-cfg-ts"
> @@ -2890,6 +2897,13 @@ main(int argc, char *argv[])
>   
>       stopwatch_create(CONTROLLER_LOOP_STOPWATCH_NAME, SW_MS);
>       stopwatch_create(OFCTRL_PUT_STOPWATCH_NAME, SW_MS);
> +    stopwatch_create(PINCTRL_RUN_STOPWATCH_NAME, SW_MS);
> +    stopwatch_create(PATCH_RUN_STOPWATCH_NAME, SW_MS);
> +    stopwatch_create(CT_ZONE_COMMIT_STOPWATCH_NAME, SW_MS);
> +    stopwatch_create(IF_STATUS_MGR_RUN_STOPWATCH_NAME, SW_MS);
> +    stopwatch_create(IF_STATUS_MGR_UPDATE_STOPWATCH_NAME, SW_MS);
> +    stopwatch_create(OFCTRL_SEQNO_RUN_STOPWATCH_NAME, SW_MS);
> +    stopwatch_create(BFD_RUN_STOPWATCH_NAME, SW_MS);
>   
>       /* Define inc-proc-engine nodes. */
>       ENGINE_NODE_CUSTOM_DATA(ct_zones, "ct_zones");
> @@ -3275,23 +3289,33 @@ main(int argc, char *argv[])
>                       ct_zones_data = engine_get_data(&en_ct_zones);
>                       if (ovs_idl_txn) {
>                           if (ct_zones_data) {
> +                            stopwatch_start(CT_ZONE_COMMIT_STOPWATCH_NAME,
> +                                            time_msec());
>                               commit_ct_zones(br_int, &ct_zones_data->pending);
> +                            stopwatch_stop(CT_ZONE_COMMIT_STOPWATCH_NAME,
> +                                           time_msec());
>                           }
> +                        stopwatch_start(BFD_RUN_STOPWATCH_NAME, time_msec());
>                           bfd_run(ovsrec_interface_table_get(ovs_idl_loop.idl),
>                                   br_int, chassis,
>                                   sbrec_ha_chassis_group_table_get(
>                                       ovnsb_idl_loop.idl),
>                                   sbrec_sb_global_table_get(ovnsb_idl_loop.idl));
> +                        stopwatch_stop(BFD_RUN_STOPWATCH_NAME, time_msec());
>                       }
>   
>                       runtime_data = engine_get_data(&en_runtime_data);
>                       if (runtime_data) {
> +                        stopwatch_start(PATCH_RUN_STOPWATCH_NAME, time_msec());
>                           patch_run(ovs_idl_txn,
>                               sbrec_port_binding_by_type,
>                               ovsrec_bridge_table_get(ovs_idl_loop.idl),
>                               ovsrec_open_vswitch_table_get(ovs_idl_loop.idl),
>                               ovsrec_port_table_get(ovs_idl_loop.idl),
>                               br_int, chassis, &runtime_data->local_datapaths);
> +                        stopwatch_stop(PATCH_RUN_STOPWATCH_NAME, time_msec());
> +                        stopwatch_start(PINCTRL_RUN_STOPWATCH_NAME,
> +                                        time_msec());
>                           pinctrl_run(ovnsb_idl_txn,
>                                       sbrec_datapath_binding_by_key,
>                                       sbrec_port_binding_by_datapath,
> @@ -3312,6 +3336,8 @@ main(int argc, char *argv[])
>                                       &runtime_data->active_tunnels,
>                                       &runtime_data->local_active_ports_ipv6_pd,
>                                       &runtime_data->local_active_ports_ras);
> +                        stopwatch_stop(PINCTRL_RUN_STOPWATCH_NAME,
> +                                       time_msec());
>                           /* Updating monitor conditions if runtime data or
>                            * logical datapath goups changed. */
>                           if (engine_node_changed(&en_runtime_data)
> @@ -3334,7 +3360,11 @@ main(int argc, char *argv[])
>   
>                       struct local_binding_data *binding_data =
>                           runtime_data ? &runtime_data->lbinding_data : NULL;
> +                    stopwatch_start(IF_STATUS_MGR_UPDATE_STOPWATCH_NAME,
> +                                    time_msec());
>                       if_status_mgr_update(if_mgr, binding_data);
> +                    stopwatch_stop(IF_STATUS_MGR_UPDATE_STOPWATCH_NAME,
> +                                   time_msec());
>   
>                       lflow_output_data = engine_get_data(&en_lflow_output);
>                       pflow_output_data = engine_get_data(&en_pflow_output);
> @@ -3351,9 +3381,17 @@ main(int argc, char *argv[])
>                                      engine_node_changed(&en_pflow_output));
>                           stopwatch_stop(OFCTRL_PUT_STOPWATCH_NAME, time_msec());
>                       }
> +                    stopwatch_start(OFCTRL_SEQNO_RUN_STOPWATCH_NAME,
> +                                    time_msec());
>                       ofctrl_seqno_run(ofctrl_get_cur_cfg());
> +                    stopwatch_stop(OFCTRL_SEQNO_RUN_STOPWATCH_NAME,
> +                                   time_msec());
> +                    stopwatch_start(IF_STATUS_MGR_RUN_STOPWATCH_NAME,
> +                                    time_msec());
>                       if_status_mgr_run(if_mgr, binding_data, !ovnsb_idl_txn,
>                                         !ovs_idl_txn);
> +                    stopwatch_stop(IF_STATUS_MGR_RUN_STOPWATCH_NAME,
> +                                   time_msec());
>                   }
>   
>               }
> 



More information about the dev mailing list