X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=doc%2Fguides%2Fsample_app_ug%2Fkeep_alive.rst;h=c9392c995159a63f954ddc24afb4e180f11c7891;hb=5a36ec735130f81a187ef65c4bc43c445a89568d;hp=080811b6c19bd215ec331d0f55b037089c83aa91;hpb=e64833f2273ac67becbca10d9f2f1598872dc99e;p=dpdk.git diff --git a/doc/guides/sample_app_ug/keep_alive.rst b/doc/guides/sample_app_ug/keep_alive.rst index 080811b6c1..c9392c9951 100644 --- a/doc/guides/sample_app_ug/keep_alive.rst +++ b/doc/guides/sample_app_ug/keep_alive.rst @@ -1,33 +1,5 @@ - -.. BSD LICENSE - Copyright(c) 2015 Intel Corporation. All rights reserved. - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +.. SPDX-License-Identifier: BSD-3-Clause + Copyright(c) 2015-2016 Intel Corporation. Keep Alive Sample Application ============================= @@ -44,7 +16,7 @@ Overview -------- The application demonstrates how to protect against 'silent outages' -on packet processing cores. A Keep Alive Monitor Agent Core (master) +on packet processing cores. A Keep Alive Monitor Agent Core (main) monitors the state of packet processing cores (worker cores) by dispatching pings at a regular time interval (default is 5ms) and monitoring the state of the cores. Cores states are: Alive, MIA, Dead @@ -59,34 +31,16 @@ Note: Only the worker cores are monitored. A local (on the host) mechanism or agent to supervise the Keep Alive Monitor Agent Core DPDK core is required to detect its failure. -Note: This application is based on the L2 forwarding application. As +Note: This application is based on the :doc:`l2_forward_real_virtual`. As such, the initialization and run-time paths are very similar to those of the L2 forwarding application. Compiling the Application ------------------------- -To compile the application: - -#. Go to the sample application directory: - - .. code-block:: console - - export RTE_SDK=/path/to/rte_sdk cd ${RTE_SDK}/examples/keep_alive - -#. Set the target (a default target is used if not specified). For example: - - .. code-block:: console - - export RTE_TARGET=x86_64-native-linuxapp-gcc - - See the *DPDK Getting Started Guide* for possible RTE_TARGET values. - -#. Build the application: - - .. code-block:: console +To compile the sample application see :doc:`compiling`. - make +The application is located in the ``l2fwd_keep_alive`` sub-directory. Running the Application ----------------------- @@ -95,7 +49,7 @@ The application has a number of command line options: .. code-block:: console - ./build/l2fwd-keepalive [EAL options] \ + .//examples/dpdk-l2fwd-keepalive [EAL options] \ -- -p PORTMASK [-q NQ] [-K PERIOD] [-T PERIOD] where, @@ -109,12 +63,12 @@ where, * ``T PERIOD``: statistics will be refreshed each PERIOD seconds (0 to disable, 10 default, 86400 maximum). -To run the application in linuxapp environment with 4 lcores, 16 ports +To run the application in linux environment with 4 lcores, 16 ports 8 RX queues per lcore and a ping interval of 10ms, issue the command: .. code-block:: console - ./build/l2fwd-keepalive -c f -n 4 -- -q 8 -p ffff -K 10 + .//examples/dpdk-l2fwd-keepalive -l 0-3 -n 4 -- -q 8 -p ffff -K 10 Refer to the *DPDK Getting Started Guide* for general information on running applications and the Environment Abstraction Layer (EAL) @@ -127,9 +81,7 @@ Explanation The following sections provide some explanation of the The Keep-Alive/'Liveliness' conceptual scheme. As mentioned in the overview section, the initialization and run-time paths are very -similar to those of the L2 forwarding application (see Chapter 9 -"L2 Forwarding Sample Application (in Real and Virtualized -Environments)" for more information). +similar to those of the :doc:`l2_forward_real_virtual`. The Keep-Alive/'Liveliness' conceptual scheme: @@ -143,17 +95,17 @@ The Keep-Alive/'Liveliness' conceptual scheme: The following sections provide some explanation of the code aspects that are specific to the Keep Alive sample application. -The heartbeat functionality is initialized with a struct -rte_heartbeat and the callback function to invoke in the +The keepalive functionality is initialized with a struct +rte_keepalive and the callback function to invoke in the case of a timeout. .. code-block:: c rte_global_keepalive_info = rte_keepalive_create(&dead_core, NULL); - if (rte_global_hbeat_info == NULL) + if (rte_global_keepalive_info == NULL) rte_exit(EXIT_FAILURE, "keepalive_create() failed"); -The function that issues the pings hbeat_dispatch_pings() +The function that issues the pings keepalive_dispatch_pings() is configured to run every check_period milliseconds. .. code-block:: c @@ -162,18 +114,19 @@ is configured to run every check_period milliseconds. (check_period * rte_get_timer_hz()) / 1000, PERIODICAL, rte_lcore_id(), - &hbeat_dispatch_pings, rte_global_keepalive_info + &rte_keepalive_dispatch_pings, + rte_global_keepalive_info ) != 0 ) rte_exit(EXIT_FAILURE, "Keepalive setup failure.\n"); The rest of the initialization and run-time path follows -the same paths as the the L2 forwarding application. The only +the same paths as the L2 forwarding application. The only addition to the main processing loop is the mark alive functionality and the example random failures. .. code-block:: c - rte_keepalive_mark_alive(&rte_global_hbeat_info); + rte_keepalive_mark_alive(&rte_global_keepalive_info); cur_tsc = rte_rdtsc(); /* Die randomly within 7 secs for demo purposes.. */ @@ -185,7 +138,7 @@ The rte_keepalive_mark_alive function simply sets the core state to alive. .. code-block:: c static inline void - rte_keepalive_mark_alive(struct rte_heartbeat *keepcfg) + rte_keepalive_mark_alive(struct rte_keepalive *keepcfg) { - keepcfg->state_flags[rte_lcore_id()] = 1; + keepcfg->live_data[rte_lcore_id()].core_state = RTE_KA_STATE_ALIVE; }