From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 882CAA034F for ; Mon, 22 Feb 2021 12:58:49 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 53CE74003C; Mon, 22 Feb 2021 12:58:49 +0100 (CET) Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) by mails.dpdk.org (Postfix) with ESMTP id 773804003C for ; Mon, 22 Feb 2021 12:58:48 +0100 (CET) Received: by mail-wr1-f53.google.com with SMTP id l12so18780547wry.2 for ; Mon, 22 Feb 2021 03:58:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=bAhuppl8MjSRgn5fBWAaehudrwBOf6CmO6E6rphGxrs=; b=Aaj6xUW7s/g/B1dH2K6oOTQmpz5GXGnMxofdego819Yeh4F/hEUwlXuus2q8gqs8RW 7tXjVLWYzATXkn4ZEUhuwmVqf/mnwjUCVM28W7txFgGAZkAHvMlxjPljoFYwYW81EGJQ OocGwRie5cIto4kwH1TSCa+i1O20GAZwpQKXKFBWmInFADMMbLfTGxTylO8A9UWp6pHq b+/pSI1RQ4zaqZdv27hqDp0RgziCtig7sAzAQZX4FU8btnDcWuPEORPyC2wbIJOdGwPs SmT5DoSnzaPa/SGwWeajNE/9MvCgXhsSgQqTKcUxUORW3JPvj8YFYTqzYkOTl8qUaz+y kjXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=bAhuppl8MjSRgn5fBWAaehudrwBOf6CmO6E6rphGxrs=; b=VYxwQZtiN+C5yZiBpPMoKMTLgZUsaRpzbERpmOnbz1G9NYeXZV6kfg6rPnAlWg3FiC 6Pcxnb4XHvDMdWlcUjbGzRd0htQbK+EfybWPZJHMkSJnHABg67s4WmjlkZDjzsCarPyl 1vBzoaQ4uySeFr7+LG3OMd+kVGuqOl3jvgjcZCy1bIH78ZzZDTBdBA9d65/q5nS+4T8b 9S2qIfx1BihWNqTr/Nkzix0MOzqmid7Ih/zxGDPzGBy37+tUQz/2abT560uNdK91lBY9 FfsENcHz13dmQfG0kyGOxbfuHDiwMnscTkDfHSm6PlgmlpgBRMf4bD2mnL6ncPN0An1L DRxg== X-Gm-Message-State: AOAM533T0kJtCzQZY5qyuuhPq//S8QMGV3NXL7DM/Di5ARgUUfgE135r lfaRwTZFH7jYX7P7dEcIVFlCtjAIqVo= X-Google-Smtp-Source: ABdhPJz9fVpUCL3qS7LeFqcd5S6rGQaStKtmoWKlAB3Qj3929gaiR6bv5L57uIe76bF29FTnF2wWHQ== X-Received: by 2002:a05:6000:2cf:: with SMTP id o15mr20841946wry.184.1613995127859; Mon, 22 Feb 2021 03:58:47 -0800 (PST) Received: from localhost ([88.98.246.218]) by smtp.gmail.com with ESMTPSA id v66sm26406745wme.33.2021.02.22.03.58.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Feb 2021 03:58:47 -0800 (PST) From: luca.boccassi@gmail.com To: stable@dpdk.org Cc: stephen@networkplumber.org, Li Feng , Anatoly Burakov Date: Mon, 22 Feb 2021 11:58:39 +0000 Message-Id: <20210222115840.137249-1-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] [PATCH 19.11 1/2] mem: exclude unused memory from core dump X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" From: Li Feng [ backported from upstream commit d72e4042c5ebda7af81448b387af8218136402d0 ] Currently, even though memory is mapped with PROT_NONE, this does not cause it to be excluded from core dumps. This is counter-productive, because in a lot of cases, this memory will go unused (e.g. when the memory subsystem preallocates VA space but hasn't yet mapped physical pages into it). Use `madvise()` call with MADV_DONTDUMP/MADV_NOCORE to exclude the unused memory from being dumped. Signed-off-by: Li Feng Acked-by: Anatoly Burakov --- As requested by Stephen. This stops coredumps from DPDK applications from massively inflating in size with unused memory chunks. lib/librte_eal/common/eal_common_memory.c | 15 +++++++++++++++ lib/librte_eal/linux/eal/eal_memalloc.c | 3 +++ 2 files changed, 18 insertions(+) diff --git a/lib/librte_eal/common/eal_common_memory.c b/lib/librte_eal/common/eal_common_memory.c index cc7d54e0c7..9a797a4fa3 100644 --- a/lib/librte_eal/common/eal_common_memory.c +++ b/lib/librte_eal/common/eal_common_memory.c @@ -40,6 +40,14 @@ static void *next_baseaddr; static uint64_t system_page_sz; +#ifdef RTE_EXEC_ENV_LINUX +#define RTE_DONTDUMP MADV_DONTDUMP +#elif RTE_EXEC_ENV_FREEBSD +#define RTE_DONTDUMP MADV_NOCORE +#else +#error "madvise doesn't support this OS" +#endif + #define MAX_MMAP_WITH_DEFINED_ADDR_TRIES 5 void * eal_get_virtual_area(void *requested_addr, size_t *size, @@ -179,6 +187,13 @@ eal_get_virtual_area(void *requested_addr, size_t *size, munmap(aligned_end, after_len); } + if (!unmap) { + /* Exclude these pages from a core dump. */ + if (madvise(aligned_addr, *size, RTE_DONTDUMP) != 0) + RTE_LOG(DEBUG, EAL, "madvise failed: %s\n", + strerror(errno)); + } + return aligned_addr; } diff --git a/lib/librte_eal/linux/eal/eal_memalloc.c b/lib/librte_eal/linux/eal/eal_memalloc.c index 51d239de37..22f1ff68eb 100644 --- a/lib/librte_eal/linux/eal/eal_memalloc.c +++ b/lib/librte_eal/linux/eal/eal_memalloc.c @@ -710,6 +710,9 @@ free_seg(struct rte_memseg *ms, struct hugepage_info *hi, return -1; } + if (madvise(ms->addr, ms->len, MADV_DONTDUMP) != 0) + RTE_LOG(DEBUG, EAL, "madvise failed: %s\n", strerror(errno)); + exit_early = false; /* if we're using anonymous hugepages, nothing to be done */ -- 2.29.2