[v9] app/pdump: exit with primary process
Checks
Commit Message
From: Suanming Mou <mousuanming@huawei.com>
The pdump tool works as the secondary process. When the primary process
exits and the residual secondary process keeps running, it will make the
primary process can't start up again. Since the ex-fbarry files are still
attached by the secondary process pdump, the 'new' primary process can't
get these files locked.
The patch is to set up an alarm which runs every 0.5s periodically
to monitor the primary process in the pdump. Once the primary exits,
so will the pdump.
Signed-off-by: Suanming Mou <mousuanming@huawei.com>
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
Reviewed-by: Vipin Varghese <vipin.varghese@intel.com>
Reviewed-by: Reshma Pattan <reshma.pattan@intel.com>
Reviewed-by: Thomas Monjalon <thomas@monjalon.net>
---
V9:
* reword the comments and update the git log.
* move release note to release_19_08.rst.
* remove dot in name.
app/pdump/main.c | 46 ++++++++++++++++++++++++++++++++++
doc/guides/rel_notes/release_19_08.rst | 3 +++
doc/guides/tools/pdump.rst | 2 ++
3 files changed, 51 insertions(+)
Comments
> -----Original Message-----
> From: Suanming.Mou [mailto:mousuanming@huawei.com]
> Sent: Wednesday, May 15, 2019 6:11 AM
> To: dev@dpdk.org
> Cc: Varghese, Vipin <vipin.varghese@intel.com>; Burakov, Anatoly
> <anatoly.burakov@intel.com>; thomas@monjalon.net; Pattan, Reshma
> <reshma.pattan@intel.com>
> Subject: [PATCH v9] app/pdump: exit with primary process
>
> From: Suanming Mou <mousuanming@huawei.com>
>
> The pdump tool works as the secondary process. When the primary process
> exits and the residual secondary process keeps running, it will make the
> primary process can't start up again. Since the ex-fbarry files are still
> attached by the secondary process pdump, the 'new' primary process can't
> get these files locked.
>
> The patch is to set up an alarm which runs every 0.5s periodically to monitor
> the primary process in the pdump. Once the primary exits, so will the
> pdump.
>
> Signed-off-by: Suanming Mou <mousuanming@huawei.com>
> Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
> Reviewed-by: Vipin Varghese <vipin.varghese@intel.com>
> Reviewed-by: Reshma Pattan <reshma.pattan@intel.com>
> Reviewed-by: Thomas Monjalon <thomas@monjalon.net>
> ---
> V9:
> * reword the comments and update the git log.
> * move release note to release_19_08.rst.
> * remove dot in name.
>
Acked-by line is missing, so re acking. Keep my ack if you have to send next version.
Acked-by: Reshma Pattan <reshma.pattan@intel.com>
20/06/2019 15:32, Pattan, Reshma:
> From: Suanming.Mou [mailto:mousuanming@huawei.com]
> > Signed-off-by: Suanming Mou <mousuanming@huawei.com>
> > Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
> > Reviewed-by: Vipin Varghese <vipin.varghese@intel.com>
> > Reviewed-by: Reshma Pattan <reshma.pattan@intel.com>
> > Reviewed-by: Thomas Monjalon <thomas@monjalon.net>
> > ---
> > V9:
> > * reword the comments and update the git log.
> > * move release note to release_19_08.rst.
> > * remove dot in name.
> >
> Acked-by line is missing, so re acking. Keep my ack if you have to send next version.
> Acked-by: Reshma Pattan <reshma.pattan@intel.com>
That's not correct to add Reviewed-by lines if it was not explicitly
found in a previous reply.
Suanming, I think you need to remove some lines above.
On 6/24/2019 6:30 AM, Thomas Monjalon wrote:
> 20/06/2019 15:32, Pattan, Reshma:
>> From: Suanming.Mou [mailto:mousuanming@huawei.com]
>>> Signed-off-by: Suanming Mou <mousuanming@huawei.com>
>>> Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
>>> Reviewed-by: Vipin Varghese <vipin.varghese@intel.com>
>>> Reviewed-by: Reshma Pattan <reshma.pattan@intel.com>
>>> Reviewed-by: Thomas Monjalon <thomas@monjalon.net>
>>> ---
>>> V9:
>>> * reword the comments and update the git log.
>>> * move release note to release_19_08.rst.
>>> * remove dot in name.
>>>
>> Acked-by line is missing, so re acking. Keep my ack if you have to send next version.
>> Acked-by: Reshma Pattan <reshma.pattan@intel.com>
> That's not correct to add Reviewed-by lines if it was not explicitly
> found in a previous reply.
> Suanming, I think you need to remove some lines above.
>
>
>
>
Hi Thomas,
Thanks for the guidelines.
Yes, the tags should be as below since just Anatoly gave the Reviewed-by
tag and Reshma gave the Acked-by tag in the previous mail.
Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Reshma Pattan reshma.pattan@intel.com
Sorry for the mistake and the late response.
(I wish my thunderbird would correctly handle the In-Reply-To header by
direct click the mailto link.)
BR
SuanmingMou
10/07/2019 16:04, Suanming Mou:
> On 6/24/2019 6:30 AM, Thomas Monjalon wrote:
> > 20/06/2019 15:32, Pattan, Reshma:
> >> From: Suanming.Mou [mailto:mousuanming@huawei.com]
> >>> Signed-off-by: Suanming Mou <mousuanming@huawei.com>
> >>> Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
> >>> Reviewed-by: Vipin Varghese <vipin.varghese@intel.com>
> >>> Reviewed-by: Reshma Pattan <reshma.pattan@intel.com>
> >>> Reviewed-by: Thomas Monjalon <thomas@monjalon.net>
> >>> ---
> >>> V9:
> >>> * reword the comments and update the git log.
> >>> * move release note to release_19_08.rst.
> >>> * remove dot in name.
> >>>
> >> Acked-by line is missing, so re acking. Keep my ack if you have to send next version.
> >> Acked-by: Reshma Pattan <reshma.pattan@intel.com>
> > That's not correct to add Reviewed-by lines if it was not explicitly
> > found in a previous reply.
> > Suanming, I think you need to remove some lines above.
>
> Thanks for the guidelines.
> Yes, the tags should be as below since just Anatoly gave the Reviewed-by
> tag and Reshma gave the Acked-by tag in the previous mail.
> Reviewed-by: Anatoly Burakov <anatoly.burakov@intel.com>
> Acked-by: Reshma Pattan reshma.pattan@intel.com
>
> Sorry for the mistake and the late response.
> (I wish my thunderbird would correctly handle the In-Reply-To header by
> direct click the mailto link.)
Applied, thanks
@@ -13,6 +13,7 @@
#include <net/if.h>
#include <rte_eal.h>
+#include <rte_alarm.h>
#include <rte_common.h>
#include <rte_debug.h>
#include <rte_ethdev.h>
@@ -65,6 +66,8 @@
#define SIZE 256
#define BURST_SIZE 32
#define NUM_VDEVS 2
+/* Maximum delay for exiting after primary process. */
+#define MONITOR_INTERVAL (500 * 1000)
/* true if x is a power of 2 */
#define POWEROF2(x) ((((x)-1) & (x)) == 0)
@@ -413,6 +416,21 @@ struct parse_val {
}
static void
+monitor_primary(void *arg __rte_unused)
+{
+ if (quit_signal)
+ return;
+
+ if (rte_eal_primary_proc_alive(NULL)) {
+ rte_eal_alarm_set(MONITOR_INTERVAL, monitor_primary, NULL);
+ return;
+ }
+
+ printf("Primary process is no longer active, exiting...\n");
+ quit_signal = 1;
+}
+
+static void
print_pdump_stats(void)
{
int i;
@@ -537,6 +555,21 @@ struct parse_val {
}
static void
+disable_primary_monitor(void)
+{
+ int ret;
+
+ /*
+ * Cancel monitoring of primary process.
+ * There will be no error if no alarm is set
+ * (in case primary process kill was detected earlier).
+ */
+ ret = rte_eal_alarm_cancel(monitor_primary, NULL);
+ if (ret < 0)
+ printf("Fail to disable monitor:%d\n", ret);
+}
+
+static void
signal_handler(int sig_num)
{
if (sig_num == SIGINT) {
@@ -910,6 +943,17 @@ struct parse_val {
;
}
+static void
+enable_primary_monitor(void)
+{
+ int ret;
+
+ /* Once primary exits, so will pdump. */
+ ret = rte_eal_alarm_set(MONITOR_INTERVAL, monitor_primary, NULL);
+ if (ret < 0)
+ printf("Fail to enable monitor:%d\n", ret);
+}
+
int
main(int argc, char **argv)
{
@@ -953,8 +997,10 @@ struct parse_val {
/* create mempool, ring and vdevs info */
create_mp_ring_vdev();
enable_pdump();
+ enable_primary_monitor();
dump_packets();
+ disable_primary_monitor();
cleanup_pdump_resources();
/* dump debug stats */
print_pdump_stats();
@@ -54,6 +54,9 @@ New Features
Also, make sure to start the actual text at the margin.
=========================================================
+* **Updated the pdump application.**
+
+ Add support for pdump to exit with primary process.
Removed Items
-------------
@@ -26,6 +26,8 @@ a DPDK secondary process and is capable of enabling packet capture on dpdk ports
Once the libpcap development files are installed, the libpcap based PMD
can be enabled by setting CONFIG_RTE_LIBRTE_PMD_PCAP=y and recompiling the DPDK.
+ * The ``dpdk-pdump`` tool runs as a DPDK secondary process. It exits when
+ the primary application exits.
Running the Application
-----------------------