Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Sign in
Toggle navigation
VILLASnode
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Insights
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Locked Files
Issues
17
Issues
17
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Security & Compliance
Security & Compliance
Dependency List
Packages
Packages
Container Registry
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
ACS
P
Public
VILLASframework
VILLASnode
Commits
f2f4ca8e
Commit
f2f4ca8e
authored
Oct 28, 2019
by
Sonja Happ
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
memory: init page size for mmap even if number of hugepages is equal to 0
parent
b1130135
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
26 additions
and
31 deletions
+26
-31
include/villas/memory_type.h
include/villas/memory_type.h
+1
-1
lib/memory.cpp
lib/memory.cpp
+3
-12
lib/memory/mmap.cpp
lib/memory/mmap.cpp
+22
-18
No files found.
include/villas/memory_type.h
View file @
f2f4ca8e
...
...
@@ -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
);
lib/memory.cpp
View file @
f2f4ca8e
...
...
@@ -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
;
...
...
lib/memory/mmap.cpp
View file @
f2f4ca8e
...
...
@@ -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
;
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
);
}
}
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
);
}
}
#endif
memory_default
=
&
memory_mmap_hugetlb
;
}
else
{
warning
(
"Hugepage allocator disabled."
);
memory_default
=
&
memory_mmap
;
}
return
0
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment