1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-09 00:00:00 +01:00

memory: init page size for mmap even if number of hugepages is equal to 0

This commit is contained in:
Sonja Happ 2019-10-28 15:10:31 +01:00
parent b11301351e
commit f2f4ca8efd
3 changed files with 25 additions and 30 deletions

View file

@ -60,4 +60,4 @@ extern struct memory_type *memory_default;
struct memory_type * memory_ib(struct node *n, struct memory_type *parent);
struct memory_type * memory_managed(void *ptr, size_t len);
int memory_hugepage_init(int hugepages);
int memory_mmap_init(int hugepages);

View file

@ -44,18 +44,9 @@ int memory_init(int hugepages)
info("Initialize memory sub-system: #hugepages=%d", hugepages);
if (hugepages > 0) {
ret = memory_hugepage_init(hugepages);
if (ret)
return ret;
memory_default = &memory_mmap_hugetlb;
}
else {
memory_default = &memory_mmap;
warning("Hugepage allocator disabled.");
}
ret = memory_mmap_init(hugepages);
if (ret < 0)
return ret;
size_t lock = kernel_get_hugepage_size() * hugepages;

View file

@ -45,32 +45,36 @@ using namespace villas::utils;
static size_t pgsz = -1;
static size_t hugepgsz = -1;
int memory_hugepage_init(int hugepages)
int memory_mmap_init(int hugepages)
{
pgsz = kernel_get_page_size();
if (pgsz < 0)
return -1;
hugepgsz = kernel_get_hugepage_size();
if (hugepgsz < 0)
return -1;
if (hugepages > 0) {
hugepgsz = kernel_get_hugepage_size();
if (hugepgsz < 0)
return -1;
#if defined(__linux__) && defined(__x86_64__)
int pagecnt;
int pagecnt;
pagecnt = kernel_get_nr_hugepages();
if (pagecnt < hugepages) {
if (getuid() == 0) {
kernel_set_nr_hugepages(hugepages);
debug(LOG_MEM | 2, "Increased number of reserved hugepages from %d to %d", pagecnt, hugepages);
}
else {
warning("Failed to reserved hugepages. Please reserve manually by running as root:");
warning(" $ echo %d > /proc/sys/vm/nr_hugepages", hugepages);
}
}
pagecnt = kernel_get_nr_hugepages();
if (pagecnt < hugepages) {
if (getuid() == 0) {
kernel_set_nr_hugepages(hugepages);
debug(LOG_MEM | 2, "Increased number of reserved hugepages from %d to %d", pagecnt, hugepages);
} else {
warning("Failed to reserved hugepages. Please reserve manually by running as root:");
warning(" $ echo %d > /proc/sys/vm/nr_hugepages", hugepages);
}
}
#endif
memory_default = &memory_mmap_hugetlb;
} else {
warning("Hugepage allocator disabled.");
memory_default = &memory_mmap;
}
return 0;
}