[ovs-dev] [PATCH v6 7/8] Documentation: Update DPDK doc with Keepalive feature.
Fischetti, Antonio
antonio.fischetti at intel.com
Fri Dec 15 14:26:00 UTC 2017
LGTM,
Acked-by: Antonio Fischetti <antonio.fischetti at intel.com>
> -----Original Message-----
> From: ovs-dev-bounces at openvswitch.org [mailto:ovs-dev-
> bounces at openvswitch.org] On Behalf Of Bhanuprakash Bodireddy
> Sent: Friday, December 8, 2017 12:04 PM
> To: dev at openvswitch.org
> Subject: [ovs-dev] [PATCH v6 7/8] Documentation: Update DPDK doc with
> Keepalive feature.
>
> 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.bodireddy at intel.com>
> ---
> Documentation/howto/dpdk.rst | 112
> +++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 112 insertions(+)
>
> diff --git a/Documentation/howto/dpdk.rst b/Documentation/howto/dpdk.rst
> index d123819..e7a2b27 100644
> --- a/Documentation/howto/dpdk.rst
> +++ b/Documentation/howto/dpdk.rst
> @@ -439,6 +439,118 @@ 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_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/>`__.
> +
> +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.
> +
> .. _dpdk-ovs-in-guest:
>
> OVS with DPDK Inside VMs
> --
> 2.4.11
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
More information about the dev
mailing list