Message ID | 9e5eae113d1be50488aec88d7ad51d0dd4006a00.1626701345.git.lorenzo.bianconi@redhat.com |
---|---|
State | Accepted |
Headers | show |
Series | [ovs-dev,v2] controller: instrument ovn-controller loop with stopwatch | expand |
Context | Check | Description |
---|---|---|
ovsrobot/apply-robot | success | apply and check: success |
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@redhat.com> > Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@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()); > } > > } >
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()); } }