On Mon, Nov 4, 2024 at 12:17 PM Lorenzo Bianconi < [email protected]> wrote:
> Set HTB Qdisc scheduler root max-rate according to the reported > link-speed if it is available (use default value if the link_speed is > not reported by OvS). This patch allows more precise shaping when the > NIC speed is lower than 34Gbps (current default value) and even take into > account cases where NIC capacity is greater than 34 Gbps. > > Signed-off-by: Lorenzo Bianconi <[email protected]> > Hi Lorenzo, there is missing fixes tag: Fixes: 7d1d111ff213 ("controller: configure qos through ovs qos table and do not run tc directly") --- > controller/binding.c | 11 +++++++---- > controller/ovn-controller.c | 1 + > tests/system-ovn.at | 2 +- > 3 files changed, 9 insertions(+), 5 deletions(-) > > diff --git a/controller/binding.c b/controller/binding.c > index 16d64e534..b453e55ad 100644 > --- a/controller/binding.c > +++ b/controller/binding.c > @@ -244,6 +244,7 @@ add_or_del_qos_port(const char *ovn_port, bool add) > static bool > add_ovs_qos_table_entry(struct ovsdb_idl_txn *ovs_idl_txn, > const struct ovsrec_port *port, > + const struct ovsrec_interface *iface, > unsigned long long min_rate, > unsigned long long max_rate, > unsigned long long burst, > @@ -262,7 +263,9 @@ add_ovs_qos_table_entry(struct ovsdb_idl_txn > *ovs_idl_txn, > qos = ovsrec_qos_insert(ovs_idl_txn); > ovsrec_qos_set_type(qos, OVN_QOS_TYPE); > ovsrec_port_set_qos(port, qos); > - smap_add_format(&other_config, "max-rate", "%lld", > OVN_QOS_MAX_RATE); > + unsigned long long link_speed = > + iface->n_link_speed ? iface->link_speed[0] : OVN_QOS_MAX_RATE; > + smap_add_format(&other_config, "max-rate", "%lld", link_speed); > ovsrec_qos_set_other_config(qos, &other_config); > smap_clear(&other_config); > > @@ -391,9 +394,9 @@ configure_qos(const struct sbrec_port_binding *pb, > } > if (iface) { > /* Add new QoS entries. */ > - if (add_ovs_qos_table_entry(ovs_idl_txn, port, min_rate, > - max_rate, burst, queue_id, > - pb->logical_port)) { > + if (add_ovs_qos_table_entry(ovs_idl_txn, port, iface, > + min_rate, max_rate, burst, > + queue_id, pb->logical_port)) { > if (!q) { > q = xzalloc(sizeof *q); > hmap_insert(qos_map, &q->node, hash); > diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c > index e87274121..38287dbf2 100644 > --- a/controller/ovn-controller.c > +++ b/controller/ovn-controller.c > @@ -827,6 +827,7 @@ ctrl_register_ovs_idl(struct ovsdb_idl *ovs_idl) > ovsdb_idl_track_add_column(ovs_idl, &ovsrec_interface_col_options); > ovsdb_idl_track_add_column(ovs_idl, &ovsrec_interface_col_ofport); > ovsdb_idl_track_add_column(ovs_idl, > &ovsrec_interface_col_external_ids); > + ovsdb_idl_track_add_column(ovs_idl, &ovsrec_interface_col_link_speed); > ovsdb_idl_track_add_column(ovs_idl, &ovsrec_port_col_name); > ovsdb_idl_track_add_column(ovs_idl, &ovsrec_port_col_interfaces); > ovsdb_idl_track_add_column(ovs_idl, &ovsrec_port_col_external_ids); > diff --git a/tests/system-ovn.at b/tests/system-ovn.at > index 6dfc3055a..c9d7a7a75 100644 > --- a/tests/system-ovn.at > +++ b/tests/system-ovn.at > @@ -6756,7 +6756,7 @@ AT_CHECK([ovn-nbctl remove Logical_Switch_Port > public options qos_min_rate=20000 > AT_CHECK([ovn-nbctl remove Logical_Switch_Port public options > qos_max_rate=300000]) > > OVS_WAIT_UNTIL([tc class show dev ovs-public | \ > - grep -q 'class htb .* rate 12Kbit ceil 34359Mbit burst > 375000b cburst 373662b']) > + grep -q 'class htb .* rate 12Kbit ceil 10Gbit burst > 375000b cburst 365Kb']) > > AT_CHECK([ovn-nbctl remove Logical_Switch_Port public options > qos_burst=3000000]) > OVS_WAIT_UNTIL([test "$(tc qdisc show | grep 'htb 1: dev ovs-public')" = > ""]) > -- > 2.47.0 > > _______________________________________________ > dev mailing list > [email protected] > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > > Other than that it looks good. Acked-by: Ales Musil <[email protected]> -- Ales Musil Senior Software Engineer - OVN Core Red Hat EMEA <https://www.redhat.com> [email protected] <https://red.ht/sig> _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
