This patch is aimed at achieving Fastpath Service Assurance in OVS-DPDK deployments. This commit adds support for monitoring the packet processing cores(pmd thread cores) by dispatching heartbeats at regular intervals. Incase of heartbeat miss the failure shall be detected & reported to higher level fault management systems/frameworks.
The implementation uses POSIX shared memory object for storing the events that will be read by monitoring framework. keep-alive feature can be enabled through below OVSDB settings. keepalive=true - Keepalive feature is disabled by default keepalive-interval="50" - Timer interval in milliseconds for monitoring the packet processing cores. keepalive-shm-name="/dpdk_keepalive_shm_name" - Shared memory block name where the events shall be updated. When KA is enabled, 'ovs-keepalive' thread shall be spawned that wakes up at regular intervals to update the timestamp and status of pmd cores in shared memory region. An external monitoring framework like collectd(with dpdk plugin support) can read the status updates from shared memory. On a missing heartbeat, the collectd shall relay the status to ceilometer service running in the controller. Below is the high level overview of deployment model. Compute Node Controller Collectd <-----------------> Ceilometer OVS DPDK +-----+ | VM | +--+--+ \---+---/ | +--+---+ +------------+----------+ +------+-------+ | OVS |-----> | dpdkevents plugin | --> | collectd | +--+---+ +------------+----------+ +------+-------+ +------+-----+ +---------------+------------+ | Ceilometer | <-- | collectd ceilometer plugin | <---- +------+-----+ +---------------+------------+ v1->v2: - Sort the patches in the order leaving no dead code behind. - Remove xusleep() implementation and instead used usleep(). - Replace '_WIN32' with '__linux__' in get_process_status(). - Add comments for different Keepalive states. - Remove semaphore and all the logic associated with it. - Fix the documentation as suggested. - Fix and added few appropriate comments to KA helper functions. - Add latency stats details in the commit log for future reference. Bhanuprakash Bodireddy (6): dpdk: Add helper functions for DPDK keepalive. process: Retrieve process status. dpif-netdev: Register packet processing cores for keepalive. netdev-dpdk: Add support for keepalive functionality. vswitch.xml: Add keepalive support. Documentation: Update DPDK doc with Keepalive feature. Documentation/howto/dpdk.rst | 93 ++++++++++++++++++ lib/dpdk-stub.c | 30 ++++++ lib/dpdk.c | 92 ++++++++++++++++++ lib/dpdk.h | 11 ++- lib/dpif-netdev.c | 19 ++++ lib/netdev-dpdk.c | 220 ++++++++++++++++++++++++++++++++++++++++++- lib/netdev-dpdk.h | 4 + lib/process.c | 60 ++++++++++++ lib/process.h | 10 ++ vswitchd/vswitch.xml | 38 ++++++++ 10 files changed, 575 insertions(+), 2 deletions(-) -- 2.4.11 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev