All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jerin Jacob <jerinjacobk@gmail.com>
To: Gaoxiang Liu <gaoxiangliu0@163.com>
Cc: dpdk-dev <dev@dpdk.org>,
	Anatoly Burakov <anatoly.burakov@intel.com>,
	liugaoxiang@huawei.com, dpdk stable <stable@dpdk.org>
Subject: Re: [PATCH] mem: exclude used memory from core dump by config
Date: Tue, 14 Dec 2021 17:38:51 +0530	[thread overview]
Message-ID: <CALBAE1M=Kqrc7R8_N30gJqLLefyM-tNXhoBPNVDHa-_j_Bh2eA@mail.gmail.com> (raw)
In-Reply-To: <20211214114151.1298-1-gaoxiangliu0@163.com>

On Tue, Dec 14, 2021 at 5:12 PM Gaoxiang Liu <gaoxiangliu0@163.com> wrote:
>
> Some DPDK application is allolcateed storage partition of 8G(or smaller)

allocated

> If coredump happens, the application doesn't work because of
> insufficient storage space.
> The patch provides a config that means whether the huge used memory
> needs to be not dumped in core dump.
> The DPDK application can choose to open it according to the actual
> situation.
>
> Fixes: d72e4042c5eb ("mem: exclude unused memory from core dump")
> Cc: stable@dpdk.org

Probably subject can be changed to: eal: allow to exclude memseg from core dump

>
> Signed-off-by: Gaoxiang Liu <liugaoxiang@huawei.com>
> ---
>  lib/eal/common/eal_internal_cfg.h |  1 +
>  lib/eal/common/eal_options.h      |  3 ++-
>  lib/eal/linux/eal.c               |  3 +++
>  lib/eal/linux/eal_memalloc.c      | 10 ++++++++++

freebsd support can be updated,
Please update doc/guides/linux_gsg/linux_eal_parameters.rst and
doc/guides/freebsd_gsg/freebsd_eal_parameters.rst.


>  4 files changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/lib/eal/common/eal_internal_cfg.h b/lib/eal/common/eal_internal_cfg.h
> index d6c0470eb8..f9cd300f86 100644
> --- a/lib/eal/common/eal_internal_cfg.h
> +++ b/lib/eal/common/eal_internal_cfg.h
> @@ -87,6 +87,7 @@ struct internal_config {
>                         /**< user defined mbuf pool ops name */
>         unsigned num_hugepage_sizes;      /**< how many sizes on this system */
>         struct hugepage_info hugepage_info[MAX_HUGEPAGE_SIZES];
> +       volatile unsigned huge_dont_dump_flag;

Volatile may not be needed. it can be changed to bool as well.


>         enum rte_iova_mode iova_mode ;    /**< Set IOVA mode on this system  */
>         rte_cpuset_t ctrl_cpuset;         /**< cpuset for ctrl threads */
>         volatile unsigned int init_complete;
> diff --git a/lib/eal/common/eal_options.h b/lib/eal/common/eal_options.h
> index 8e4f7202a2..6b9a24f0f9 100644
> --- a/lib/eal/common/eal_options.h
> +++ b/lib/eal/common/eal_options.h
> @@ -87,7 +87,8 @@ enum {
>         OPT_NO_TELEMETRY_NUM,
>  #define OPT_FORCE_MAX_SIMD_BITWIDTH  "force-max-simd-bitwidth"
>         OPT_FORCE_MAX_SIMD_BITWIDTH_NUM,
> -
> +#define OPT_HUGE_DONT_DUMP     "huge-dont-dump"
> +       OPT_HUGE_DONT_DUMP_NUM,
>         OPT_LONG_MAX_NUM
>  };
>
> diff --git a/lib/eal/linux/eal.c b/lib/eal/linux/eal.c
> index 60b4924838..eeab5e4f3d 100644
> --- a/lib/eal/linux/eal.c
> +++ b/lib/eal/linux/eal.c
> @@ -816,6 +816,9 @@ eal_parse_args(int argc, char **argv)
>                 case OPT_MATCH_ALLOCATIONS_NUM:
>                         internal_conf->match_allocations = 1;
>                         break;
> +               case OPT_HUGE_DONT_DUMP_NUM:
> +                       internal_config->huge_dont_dump_flag = 1;
> +                       break;
>
>                 default:
>                         if (opt < OPT_LONG_MIN_NUM && isprint(opt)) {
> diff --git a/lib/eal/linux/eal_memalloc.c b/lib/eal/linux/eal_memalloc.c
> index 337f2bc739..13ca1cf58c 100644
> --- a/lib/eal/linux/eal_memalloc.c
> +++ b/lib/eal/linux/eal_memalloc.c
> @@ -663,6 +663,16 @@ alloc_seg(struct rte_memseg *ms, void *addr, int socket_id,
>         ms->iova = iova;
>         ms->socket_id = socket_id;
>
> +       if (internal_config->huge_dont_dump_flag) {
> +               if (madvise(addr, alloc_sz, EAL_DONTDUMP)) {
> +                       RTE_LOG(INFO, EAL, "madvise(%p, %#zx, %d) failed: %s\n",
> +                                       virt, size, flags, strerror(rte_errno));
> +               } else {
> +                       RTE_LOG(INFO, EAL, "%s(): madvise(MADV_DONTDUMP) memory success.(len=%zu)\n",
> +                                       __func__, alloc_sz);
> +               }

I think, you can use eal_mem_set_dump()

> +       }
> +
>         return 0;
>
>  mapped:
> --
> 2.32.0
>
>

  parent reply	other threads:[~2021-12-14 12:09 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-14 11:41 [PATCH] mem: exclude used memory from core dump by config Gaoxiang Liu
2021-12-14 12:08 ` [PATCH v2] " Gaoxiang Liu
2021-12-14 15:18   ` [PATCH v3] eal: allow to exclude memseg from core dump Gaoxiang Liu
2021-12-15 12:06     ` Jerin Jacob
2021-12-15 14:34       ` Dmitry Kozlyuk
2021-12-15 15:46     ` Dmitry Kozlyuk
2021-12-14 12:08 ` Jerin Jacob [this message]
2021-12-14 12:21   ` [PATCH] mem: exclude used memory from core dump by config Gaoxiang Liu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CALBAE1M=Kqrc7R8_N30gJqLLefyM-tNXhoBPNVDHa-_j_Bh2eA@mail.gmail.com' \
    --to=jerinjacobk@gmail.com \
    --cc=anatoly.burakov@intel.com \
    --cc=dev@dpdk.org \
    --cc=gaoxiangliu0@163.com \
    --cc=liugaoxiang@huawei.com \
    --cc=stable@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.