[dpdk-dev] [PATCH v3 3/9] mem: raise maximum fd limit unconditionally

Maxime Coquelin maxime.coquelin at redhat.com
Thu Sep 13 15:12:40 CEST 2018



On 09/04/2018 05:15 PM, Anatoly Burakov wrote:
> Previously, when we allocated hugepages, we closed the fd's corresponding
> to them after we've done our mappings. Since we did mmap(), we didn't
> actually lose the reference, but file descriptors used for mmap() do not
> count against the fd limit. Since we are going to store all of our fd's,
> we will hit the fd limit much more often when using smaller page sizes.
> 
> Fix this to raise the fd limit to maximum unconditionally.
> 
> Signed-off-by: Anatoly Burakov <anatoly.burakov at intel.com>
> ---
>   lib/librte_eal/linuxapp/eal/eal_memory.c | 20 ++++++++++++++++++++
>   1 file changed, 20 insertions(+)
> 
> diff --git a/lib/librte_eal/linuxapp/eal/eal_memory.c b/lib/librte_eal/linuxapp/eal/eal_memory.c
> index dbf19499e..dfb537f59 100644
> --- a/lib/librte_eal/linuxapp/eal/eal_memory.c
> +++ b/lib/librte_eal/linuxapp/eal/eal_memory.c
> @@ -17,6 +17,7 @@
>   #include <sys/stat.h>
>   #include <sys/queue.h>
>   #include <sys/file.h>
> +#include <sys/resource.h>
>   #include <unistd.h>
>   #include <limits.h>
>   #include <sys/ioctl.h>
> @@ -2204,6 +2205,25 @@ memseg_secondary_init(void)
>   int
>   rte_eal_memseg_init(void)
>   {
> +	/* increase rlimit to maximum */
> +	struct rlimit lim;
> +
> +	if (getrlimit(RLIMIT_NOFILE, &lim) == 0) {
> +		/* set limit to maximum */
> +		lim.rlim_cur = lim.rlim_max;
> +
> +		if (setrlimit(RLIMIT_NOFILE, &lim) < 0) {
> +			RTE_LOG(DEBUG, EAL, "Setting maximum number of open files failed: %s\n",
> +					strerror(errno));
> +		} else {
> +			RTE_LOG(DEBUG, EAL, "Setting maximum number of open files to %"
> +					PRIu64 "\n",
> +					(uint64_t)lim.rlim_cur);
> +		}
> +	} else {
> +		RTE_LOG(ERR, EAL, "Cannot get current resource limits\n");
> +	}
> +
>   	return rte_eal_process_type() == RTE_PROC_PRIMARY ?
>   #ifndef RTE_ARCH_64
>   			memseg_primary_init_32() :
> 

Reviewed-by: Maxime Coquelin <maxime.coquelin at redhat.com>


More information about the dev mailing list