> Keepalive feature is aimed at achieving Fastpath Service Assurance in OVS- > DPDK deployments. It adds support for monitoring the packet processing > threads by dispatching heartbeats at regular intervals. > > The implementation uses OvSDB for reporting the health of the PMD threads. > Any external monitoring application can query the OvSDB for status at > regular intervals (or) subscribe to OvSDB updates. > > keepalive feature can be enabled through below OVSDB settings. > > enable-keepalive=true > - Keepalive feature is disabled by default and should be enabled > at startup before ovs-vswitchd daemon is started. > > keepalive-interval="5000" > - Timer interval in milliseconds for monitoring the packet > processing cores. > > When KA is enabled, 'ovs-keepalive' thread shall be spawned that wakes up > at regular intervals to update the timestamp and status of pmd threads in > process map. This information shall be read by vswitchd thread and written > in to 'keepalive' column of Open_vSwitch table in OVSDB. > > An external monitoring framework like collectd with ovs events support can > read (or) subscribe to the datapath status changes in ovsdb. When the > state is updated, the collectd shall be notified and will eventually relay > the status to ceilometer service running in the controller. Below is the > high level overview of deployment model. > > Compute Node Controller Compute Node > > Collectd <----------> Ceilometer <--------> Collectd > > OvS DPDK OvS DPDK > > +-----+ > | VM | > +--+--+ > \---+---/ > | > +--+---+ +------------+----------+ +------+-------+ > | OVS |-----> | ovsevents plugin | --> | collectd | > +--+---+ +------------+----------+ +------+-------+ > > +------+-----+ +---------------+------------+ | > | Ceilometer | <-- | collectd ceilometer plugin | <--- > +------+-----+ +---------------+------------+ > > Performance impact > ------------------ > No noticeable performance or latency impact is observed with KA feature > enabled. > > Signed-off-by: Bhanuprakash Bodireddy <bhanuprakash.bodire...@intel.com> > --- > Documentation/howto/dpdk.rst | 113 > +++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 113 insertions(+) > > diff --git a/Documentation/howto/dpdk.rst b/Documentation/howto/dpdk.rst > index d123819..6fc1316 100644 > --- a/Documentation/howto/dpdk.rst > +++ b/Documentation/howto/dpdk.rst > @@ -439,6 +439,119 @@ For certain traffic profiles with many parallel > flows, it's recommended to set > > For more information on the EMC refer to :doc:`/intro/install/dpdk` . > > +.. _dpdk_keepalive: > + > +Keepalive > +--------- > + > +OvS Keepalive(KA) feature is disabled by default. To enable KA feature:: > + > + $ ovs-vsctl --no-wait set Open_vSwitch . > + other_config:enable-keepalive=true > + > +The KA feature can't be enabled at run time and should be done at > +startup before ovs-vswitchd daemon is started. > + > +The default timer interval for monitoring packet processing threads is > 1000ms. > +To set a different timer value, run:: > + > + $ ovs-vsctl --no-wait set Open_vSwitch . \ > + other_config:keepalive-interval="5000" > + > +The events comprise of thread states and the last seen timestamps. The > +events are written in to process map periodically by keepalive thread. > + > +The events in the process map are retrieved by main(vswitchd) thread > +and updated in to keepalive column of Open_vSwitch table in OVSDB. Any > +external monitoring application can read the status from OVSDB at > +intervals or subscribe to the updates so that they get notified when the > changes happen on OvSDB. > + > +To monitor the datapath status using ovsdb-client, run:: > + > + $ ovsdb-client monitor Open_vSwitch > + $ ovsdb-client monitor Open_vSwitch Open_vSwitch keepalive > + > +The datapath thread states are explained below:: > + > + KA_STATE_UNUSED - Not registered to KA framework. > + KA_STATE_ALIVE - Thread alive. > + KA_STATE_MISSING - Thread missed first heartbeat. > + KA_STATE_DEAD - Thread missed two heartbeats. > + KA_STATE_GONE - Thread missed two or more heartbeats and > burried. > + KA_STATE_DOZING - Thread is idle. > + KA_STATE_SLEEP - Thread is sleeping. > + > +To query the datapath status, run:: > + > + $ ovs-appctl keepalive/pmd-health-show > + > +`collectd <https://collectd.org/>`__ has built-in support for DPDK and > +provides a `ovs_events` and `ovs_stats` plugin that can be enabled to > +relay the datapath status and the PMD status to OpenStack service > +`Ceilometer <https://docs.openstack.org/developer/ceilometer/>`__. > +
Hi Bhanu, thanks for working on this, Is collectd the only external framework that works with this? I guess is there a risk that if work stopped on collectd does this feature become redundant? > +To install and configure `collectd`, run:: > + > + # Clone collectd from Git repository > + $ git clone https://github.com/collectd/collectd.git > + > + # configure and install collectd > + $ cd collectd > + $ ./build.sh > + $ ./configure --enable-syslog --enable-logfile --with-libdpdk=/usr > + $ make > + $ make install > + > +`collectd` is installed in ``/opt/collectd`` by default. Edit the > +configuration file in ``/opt/collectd/etc/collectd.conf`` to enable > +logfile, dpdkevents and csv plugin:: > + > + LoadPlugin logfile > + <Plugin logfile> > + LogLevel debug > + File "/var/log/collectd/collectd.log" > + Timestamp true > + PrintSeverity false > + </Plugin> > + > + <Plugin syslog> > + LogLevel info > + </Plugin> > + > +Enable `ovs_events` plugin and update the plugindetails as below:: > + > + LoadPlugin ovs_events > + > + <Plugin ovs_events> > + Port "6640" > + Address "127.0.0.1" > + Socket "/usr/local/var/run/openvswitch/db.sock" > + SendNotification true > + DispatchValues false > + </Plugin> > + > +Enable `ovs_stats` plugin and update the plugindetails as below:: > + > + LoadPlugin ovs_stats > + > + <Plugin ovs_stats> > + Port "6640" > + Address "127.0.0.1" > + Socket "/usr/local/var/run/openvswitch/db.sock" > + Bridges "br0" > + </Plugin> > + > +Enable ``csv`` plugin as below:: > + > + LoadPlugin csv > + > + <Plugin csv> > + DataDir "/var/log/collectd/csv" > + StoreRates false > + </Plugin> > + > +With csv plugin enabled, *meter* or *gauge* file is created and > +timestamp and thread status gets updated which are sent to ceilometer > service. I guess one could argue that the collectd setup instructions above belong in collectd documentation and that we should just point a user to that documentation when setting up OVS with DPDK with it. Ian > + > .. _dpdk-ovs-in-guest: > > OVS with DPDK Inside VMs > -- > 2.4.11 > > _______________________________________________ > dev mailing list > d...@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev