From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8BD39A00BE; Sun, 26 Apr 2020 22:29:11 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id BCF1C1C1AD; Sun, 26 Apr 2020 22:29:10 +0200 (CEST) Received: from mail-pf1-f193.google.com (mail-pf1-f193.google.com [209.85.210.193]) by dpdk.org (Postfix) with ESMTP id 7F0091C1D5 for ; Fri, 24 Apr 2020 11:34:23 +0200 (CEST) Received: by mail-pf1-f193.google.com with SMTP id r14so4548013pfg.2 for ; Fri, 24 Apr 2020 02:34:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=a91AjY1ZZfEB0hR6g9+yjj/ACJP4upaP9UJyHHBYko4=; b=eke13+cXksFG/GvpPKcPj0xsdr7Fh9V/Wc1QTWMRj3NCnkbKZIMItzGmUuaah7x9Cf aPXj8WO/JdKZBeFv5omhPebpBrffCy822zkS5+DGMIKtkhRjwO99Vuyh1D3yzIoi0gB5 tu3Zl1nzbQbrIq9Yr4dRuREC7+hSjplM1nqHuby0zQolFslcjEdioBaWxiZn7hBGRJ5H bAK8xQe7lpY88nyUl41ENWZ7MqY3AiOsEb1LFjAD+kapFd8nobmSvYbloeVcx+qQs40l IhRTsYL7dVCdIv4bYTQMztPAG8opmHSQ/QEHyytwaR6eUt7WCpjsFapC4/8uQM/ake+I Vv6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=a91AjY1ZZfEB0hR6g9+yjj/ACJP4upaP9UJyHHBYko4=; b=Xp9LpRi/hqVMSbrQjdvgIkr/qxgjFUrYaGxkW/stE5ogpwOe9KDw6uOVpoe0aMxHB0 YbfW9XF4amKiaOvfb1iWHvFj5g66gQ4JusQzbeB/PLjh2HcVMQVVnD3V83rFR/wIoFSe iypxvi6j3LFapfEQGITHEeJJ4PQTMj77crHTAKEmTs1pZZt6xXsXRWZZvDgblteSXoou kSqoELxeGfuZwjo7ZzpcuAMh+2bP4CWCHc8BqJN2r6pVq/d/xa6TDQ1B9CuEh/1pQx3l reZDEyaLp/EyxgXZRXAYoiopQLy9Ebax5VXSuyiSrQDgawR7ijOhhRaUNBLsNn/iPT+d pxBQ== X-Gm-Message-State: AGi0PuZJVv7Xkb7TQaCCLbXNO1E98tA7QeiL4/aT+p2kc2FsZloioQq4 vkjZbVlukl5pBffCLMMKTVayoCHigC5y4xJf8tE= X-Google-Smtp-Source: APiQypLNDyR8zj+A3EBUdS2scAFevAp7Pejutsac+cdqK/JBdsZzXVajLDpWqDehE2pqsdm5SxMuX0ggLgm3PJxrojo= X-Received: by 2002:a63:d850:: with SMTP id k16mr8542752pgj.190.1587720862549; Fri, 24 Apr 2020 02:34:22 -0700 (PDT) MIME-Version: 1.0 References: <20200420070508.645533-1-fengli@smartx.com> <20200423154302.2217041-1-fengli@smartx.com> <9d6dc63b-34f7-36b3-5c3f-df74b71d961c@intel.com> <083d248a-77dd-0b07-cb8b-f2703e8503f5@intel.com> <20200424091421.GB1440@bricha3-MOBL.ger.corp.intel.com> In-Reply-To: <20200424091421.GB1440@bricha3-MOBL.ger.corp.intel.com> From: Feng Li Date: Fri, 24 Apr 2020 17:33:55 +0800 Message-ID: To: Bruce Richardson Cc: "Burakov, Anatoly" , David Marchand , Li Feng , dev , Kyle Zhang , Yang Fan Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Mailman-Approved-At: Sun, 26 Apr 2020 22:29:09 +0200 Subject: Re: [dpdk-dev] [PATCH v2] eal: add madvise to avoid dump memory X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Bruce Richardson =E4=BA=8E2020=E5=B9=B44=E6=9C= =8824=E6=97=A5=E5=91=A8=E4=BA=94 =E4=B8=8B=E5=8D=885:14=E5=86=99=E9=81=93= =EF=BC=9A > > On Fri, Apr 24, 2020 at 10:12:10AM +0100, Burakov, Anatoly wrote: > > On 23-Apr-20 9:04 PM, David Marchand wrote: > > > On Thu, Apr 23, 2020 at 6:34 PM Burakov, Anatoly > > > wrote: > > > > > diff --git a/lib/librte_eal/common/eal_common_memory.c b/lib/libr= te_eal/common/eal_common_memory.c > > > > > index cc7d54e0c..2d9564b28 100644 > > > > > --- a/lib/librte_eal/common/eal_common_memory.c > > > > > +++ b/lib/librte_eal/common/eal_common_memory.c > > > > > @@ -177,6 +177,20 @@ eal_get_virtual_area(void *requested_addr, s= ize_t *size, > > > > > after_len =3D RTE_PTR_DIFF(map_end, aligned_end); > > > > > if (after_len > 0) > > > > > munmap(aligned_end, after_len); > > > > > + > > > > > + /* > > > > > + * Exclude this pages from a core dump. > > > > > + */ > > > > > + if (madvise(aligned_addr, *size, MADV_DONTDUMP) != =3D 0) > > > > > + RTE_LOG(WARNING, EAL, "Madvise with MADV_DO= NTDUMP failed: %s\n", > > > > > + strerror(errno));> + } else { > > > > > + /* > > > > > + * Exclude this pages from a core dump. > > > > > + */ > > > > > + if (madvise(mapped_addr, map_sz, MADV_DONTDUMP) != =3D 0) > > > > > + RTE_LOG(WARNING, EAL, "Madvise with MADV_DO= NTDUMP failed: %s\n", > > > > > + strerror(errno)); > > > > > } > > > > > > > > > > return aligned_addr; > > > > > > > > > > > > > For the contents of this patch, > > > > > > MADV_DONTDUMP does not seem POSIX, but as I said [1], there seems to > > > be a MADV_NOCORE option on FreeBSD. > > > 1: http://inbox.dpdk.org/dev/CAJFAV8y9YtT-7njUz+mD6U8+3XUqYrgp28KD7jy= 2923EpAcXrg@mail.gmail.com/ > > > > > > > > > > Oh, right, so this would probably not compile on FreeBSD. Perhaps this > > function would have to be OS-specific after all (or call into an OS-spe= cific > > madvise() after reserving the memory area). > > > > Is it just a differently named flag? If so, I think a single #ifdef macro > won't kill us in the common code. > Just the flag name is different. I should use RTE_EXEC_ENV_FREEBSD and RTE_EXEC_ENV_LINUX, right? Another question, in `eal_memalloc.c:alloc_seg`, I should undo the DONTMAP of the memory region. Right? @Anatoly Just few minutes, I have prepared a patch for the OS-specific code: --- a/lib/librte_eal/common/eal_private.h +++ b/lib/librte_eal/common/eal_private.h @@ -443,4 +443,20 @@ rte_option_usage(void); uint64_t eal_get_baseaddr(void); +/** + * @internal + * Exclude this pages from a core dump. + * + * @param addr + * The memory region starts. + * + * @param len + * The memory region length.. + * + * @return + * returns 0 or -errno + */ +int +eal_madvise_dontdump(void* addr, size_t len); + #endif /* _EAL_PRIVATE_H_ */ diff --git a/lib/librte_eal/freebsd/eal_memory.c b/lib/librte_eal/freebsd/eal_memory.c index a97d8f0f0..585042dde 100644 --- a/lib/librte_eal/freebsd/eal_memory.c +++ b/lib/librte_eal/freebsd/eal_memory.c @@ -534,3 +534,9 @@ rte_eal_memseg_init(void) memseg_primary_init() : memseg_secondary_init(); } + +int +eal_madvise_dontdump(void* addr, size_t len) +{ + return madvise(addr, len, MADV_NOCORE); +} diff --git a/lib/librte_eal/linux/eal_memory.c b/lib/librte_eal/linux/eal_memory.c index 7a9c97ff8..cfdbfccfe 100644 --- a/lib/librte_eal/linux/eal_memory.c +++ b/lib/librte_eal/linux/eal_memory.c @@ -2479,3 +2479,9 @@ rte_eal_memseg_init(void) #endif memseg_secondary_init(); } + +int +eal_madvise_dontdump(void* addr, size_t len) +{ + return madvise(addr, len, MADV_DONTDUMP); +}