Files
mckernel/test/large_page
Masamichi Takagi d9b2924249 Update patch for "Add test programs for large page"
Change-Id: I6ee96b677c65c5bf4b2312059abd689225c0581d
2019-02-14 16:26:20 +09:00
..
2019-02-01 15:15:44 +09:00
2019-02-01 15:15:44 +09:00
2019-02-01 15:15:44 +09:00
2019-02-01 15:15:44 +09:00
2019-02-01 15:15:44 +09:00
2019-02-01 15:15:44 +09:00
2019-02-01 15:15:44 +09:00

==========
How to run
==========

(1) cd <mckernel> && patch -p0 < <mckernel>/test/large_page/large_page.patch
(2) Build McKernel
(3) cd <mckernel>/test/large_page/<arch> && make test

============
What to test
============

Check the large page allocation with the following settings.

------
x86_64
------

ID	Program sections	Size
---------------------------------------
001	mmap + THP		2M, 1G
101	mmap + flag		2M, 1G
201	shmget + THP		2M, 1G
301	shmget + flag		2M, 1G
401	heap			2M
402	heap			1G
501	.data, .bss, stack	2M
601	mmap + hugetlbfs	2M, 1G
--------------------------------------

* 1 GiB for .data, .bss, stack is not tested because it's impossible to
  align symbol to 1 GiB due to relocation restrictions.

-----
arm64
-----

(1) Granule size: 64 KiB

ID	Program sections	Size
---------------------------------------
001	mmap + THP		2M, 512M
101	mmap + flag		2M, 512M
201	shmget + THP		2M, 512M
301	shmget + flag		2M, 512M
401	heap			2M
402	heap			512M
501	.data, .bss, stack	2M
502	.data, .bss		512M
601	mmap + hugetlbfs	2M, 512M

* 512 MiB for stack is not tested because it's impossible to
  align symbol to 512 MiB due to relocation restrictions.

(2) Granule size: 4 KiB

ID	Program sections	Size
---------------------------------------
001	mmap + THP		64K, 2M, 32M, 1G
101	mmap + flag		64K, 2M, 32M, 1G
201	shmget + THP		64K, 2M, 32M, 1G
301	shmget + flag		64K, 2M, 32M, 1G
401	heap			64K
402	heap			2M
403	heap			32M
404	heap			1G
501	.data, .bss, stack	64K
502	.data, .bss, stack	2M
503	.data, .bss, stack	32M
504	.data, .bss		1G
601	mmap + hugetlbfs	64K, 2M, 32M, 1G

* 1 GiB for stack is not tested because it's impossible to
  align symbol to 1 GiB due to relocation restrictions.

======
Detail
======

With the patch, McKernel does the followings for the test:
(1) Align heap with the value passed via mcexec -h option
(2) Map stack and .data with the page with the size of the value
    passed via mcexec -s option
(3) Enable THP via shmget
(5) Report large page allocations

Alignment of symbols in .data, .bss is done by using the modified
linker scripts.