Hi Ilya,
On Tue, Sep 22, 2020 at 01:22:58PM +0200, Ilya Maximets wrote: > On 9/19/20 3:07 PM, Flavio Leitner wrote: > > The EMC is not large enough for current production cases > > and they are scaling up, so this change switches over from > > EMC to SMC by default, which provides better results. > > > > The EMC is still available and could be used when only a > > few number of flows is used. > > > > Hi, Flavio. Thanks for the patch! > > I generally agree with this change. Great! > The main thing that bothers me is that > with current version of the patch we will drop all testing on EMC at once. > > Right now EMC is enabled by default, so we have it tested in many cases. > We also have probability configuration covered in one test. And we have > at least one test with SMC enabled. We doesn't check SMC hits, but at least > insertions should work. :) > > After this patch we will have zero tests with EMC enabled. And that is not > a good thing. In general, I think that we need much more tests for both > SMC and EMC, but at least couple of tests needed for EMC right now since > you're disabling it by default. And we definitely need at least one test > for emc-insert-inv-prob configuration. This patch should enable more testing, indeed. > One more thing is that our DPCLS implementation could actually be faster > than SMC in some cases [1], so, I think, maybe it worth performing a series > of performance tests to better understand what we actually want. It may > turn out that we want to disable all the caches by default and just have > datapath classifier to handle all the traffic since it's more flexible and > even faster in common cases. > > [1] https://mail.openvswitch.org/pipermail/ovs-dev/2019-July/360586.html Yes, but AFAICT the last proposed patch is from mid 2019 while SMC is already merged since 2.10. I mean, it's great that we have further optimizations that might not even require caching, but not sure if such work will be ready for 2.15. > Few minor comments inline. ACK to below changes. I am curious to find out what others think about this change, so going to wait a bit before following up with the next version if that sounds OK. Thanks for your review Ilya, fbl > > Best regards, Ilya Maximets. > > > Signed-off-by: Flavio Leitner <f...@sysclose.org> > > --- > > Documentation/topics/dpdk/bridge.rst | 10 +++++----- > > NEWS | 3 +++ > > lib/dpif-netdev.c | 6 +++--- > > tests/pmd.at | 4 ++-- > > vswitchd/vswitch.xml | 4 ++-- > > 5 files changed, 15 insertions(+), 12 deletions(-) > > > > diff --git a/Documentation/topics/dpdk/bridge.rst > > b/Documentation/topics/dpdk/bridge.rst > > index 526d5c959..0d9aed4eb 100644 > > --- a/Documentation/topics/dpdk/bridge.rst > > +++ b/Documentation/topics/dpdk/bridge.rst > > @@ -130,13 +130,13 @@ SMC cache > > SMC cache or signature match cache is a new cache level after EMC cache. > > The difference between SMC and EMC is SMC only stores a signature of a flow > > thus it is much more memory efficient. With same memory space, EMC can > > store 8k > > -flows while SMC can store 1M flows. When traffic flow count is much larger > > than > > -EMC size, it is generally beneficial to turn off EMC and turn on SMC. It is > > -currently turned off by default. > > +flows while SMC can store 1M flows. When traffic flow count is small than > > +EMC size, it is generally beneficial to turn off SMC and turn on EMC. It is > > +currently turned on by default. > > > > -To turn on SMC:: > > +To turn off SMC:: > > > > - $ ovs-vsctl --no-wait set Open_vSwitch . other_config:smc-enable=true > > + $ ovs-vsctl --no-wait set Open_vSwitch . other_config:smc-enable=false > > > > Datapath Classifier Performance > > ------------------------------- > > diff --git a/NEWS b/NEWS > > index 2f67d5047..5b88937fb 100644 > > --- a/NEWS > > +++ b/NEWS > > @@ -1,6 +1,9 @@ > > Post-v2.14.0 > > --------------------- > > > > Usually, we do not have an empty line here. > > > + - DPDK: > > This should say "Userspace datapath:" instead, as this is a generic change > for all port types. > > > + * The SMC cache is enabled by default. > > + * The EMC cache is disabled by default. > > > > v2.14.0 - 17 Aug 2020 > > --------------------- > > diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c > > index 02df8f11e..0f2bb10fd 100644 > > --- a/lib/dpif-netdev.c > > +++ b/lib/dpif-netdev.c > > @@ -2079,7 +2079,7 @@ port_create(const char *devname, const char *type, > > port->netdev = netdev; > > port->type = xstrdup(type); > > port->sf = NULL; > > - port->emc_enabled = true; > > + port->emc_enabled = false; > > port->need_reconfigure = true; > > ovs_mutex_init(&port->txq_used_mutex); > > > > @@ -4305,7 +4305,7 @@ dpif_netdev_set_config(struct dpif *dpif, const > > struct smap *other_config) > > } > > } > > > > - bool smc_enable = smap_get_bool(other_config, "smc-enable", false); > > + bool smc_enable = smap_get_bool(other_config, "smc-enable", true); > > bool cur_smc; > > atomic_read_relaxed(&dp->smc_enable_db, &cur_smc); > > if (smc_enable != cur_smc) { > > @@ -4440,7 +4440,7 @@ dpif_netdev_port_set_config(struct dpif *dpif, > > odp_port_t port_no, > > struct dp_netdev_port *port; > > int error = 0; > > const char *affinity_list = smap_get(cfg, "pmd-rxq-affinity"); > > - bool emc_enabled = smap_get_bool(cfg, "emc-enable", true); > > + bool emc_enabled = smap_get_bool(cfg, "emc-enable", false); > > > > ovs_mutex_lock(&dp->port_mutex); > > error = get_port_by_number(dp, port_no, &port); > > diff --git a/tests/pmd.at b/tests/pmd.at > > index 5b612f88f..20c179b39 100644 > > --- a/tests/pmd.at > > +++ b/tests/pmd.at > > @@ -238,8 +238,8 @@ pmd thread numa_id <cleared> core_id <cleared>: > > packets received: 20 > > packet recirculations: 0 > > avg. datapath passes per packet: 1.00 > > - emc hits: 19 > > - smc hits: 0 > > + emc hits: 0 > > + smc hits: 19 > > megaflow hits: 0 > > avg. subtable lookups per megaflow hit: 0.00 > > miss with success upcall: 1 > > diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml > > index 81c84927f..009f0e550 100644 > > --- a/vswitchd/vswitch.xml > > +++ b/vswitchd/vswitch.xml > > @@ -513,7 +513,7 @@ > > when flow count is larger than EMC capacity. > > </p> > > <p> > > - Defaults to false but can be changed at any time. > > + Defaults to true but can be changed at any time. > > </p> > > </column> > > > > @@ -3296,7 +3296,7 @@ ovs-vsctl add-port br0 p0 -- set Interface p0 > > type=patch options:peer=p1 \ > > key="emc-insert-inv-prob"/> will have effect on this interface. > > </p> > > <p> > > - Defaults to true. > > + Defaults to false. > > </p> > > </column> > > </group> > > > -- fbl _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev