mem: raise maximum fd limit unconditionally
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@intel.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
This commit is contained in:
parent
d4ce95d6b4
commit
18329a4366
@ -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() :
|
||||
|
Loading…
Reference in New Issue
Block a user