* Merge cd7ab307fae9bc8aa49d23b32becf37368a1603e * Merge commit is changed to one commit for gerrit Change-Id: I75f0f4cf6b8b3286284638ac2c7816c5257551e4
171 lines
6.0 KiB
Plaintext
171 lines
6.0 KiB
Plaintext
===================
|
||
Advance preparation
|
||
===================
|
||
1) install IHK/McKernel
|
||
|
||
2) set up configuration file
|
||
$ cp <mckernel>/mck_test_config.sample ~/.mck_test_config
|
||
$ emacs ~/.mck_test_config
|
||
$ cat ~/.mck_test_config
|
||
# Config file for McKernel tests
|
||
: ${BIN:=/opt/ppos/bin}
|
||
: ${SBIN:=/opt/ppos/sbin}
|
||
: ${OSTEST:=}
|
||
: ${LTP:=}
|
||
: ${BOOTPARAM:=-c 4-7 -m 8192M -e anon_on_demand}
|
||
: ${MCKERNEL_VERSION:=1.5.0}
|
||
|
||
3) compile test program
|
||
$ cd <mckernel>/test/contiguous_pte
|
||
$ patch -p1 < arm64_4KB_setting.patch (4KB granule only)
|
||
$ make
|
||
|
||
==========
|
||
How to run
|
||
==========
|
||
$ cd <mckernel>/test/contiguous_pte
|
||
$ sh ./go_contiguous_pte_test.sh | tee result.log
|
||
|
||
==========
|
||
テストが確認する内容は以下の通り。
|
||
|
||
[基本動作]
|
||
ContiguousPTEの基本的な動作を確認する。
|
||
|
||
#0: shmgetのflagにContiguousPTEのサイズが指定可能なこと。
|
||
サイズはSHM_HUGE_FIRST_CONT_BLOCKを指定する。
|
||
|
||
* 64KiBページサイズにおいては、
|
||
ARMv8.2-LPA環境の時のみ有効なテスト。
|
||
ARMv8.2-LPA環境では無いときは、
|
||
TP実行結果がNGになることが期待動作となる。
|
||
|
||
#1: shmgetのflagにContiguous PTEのサイズが指定可能なこと。
|
||
サイズはSHM_HUGE_SECOND_CONT_BLOCKを指定する。
|
||
|
||
#2: shmgetのflagにContiguous PTEのサイズが指定可能なこと。
|
||
サイズはSHM_HUGE_THIRD_CONT_BLOCKを指定する。
|
||
|
||
#3: mapのflagにContiguous PTEのサイズが指定可能なこと。
|
||
サイズはMAP_HUGE_FIRST_CONT_BLOCKを指定する。
|
||
|
||
* 64KiBページサイズにおいては、
|
||
ARMv8.2-LPA環境の時のみ有効なテスト。
|
||
ARMv8.2-LPA環境では無いときは、
|
||
TP実行結果がNGになることが期待動作となる。
|
||
|
||
#4: mmapのflagにContiguous PTEのサイズが指定可能なこと。
|
||
サイズはMAP_HUGE_SECOND_CONT_BLOCKを指定する。
|
||
|
||
#5: mmapのflagにContiguous PTEのサイズが指定可能なこと。
|
||
サイズはSHM_HUGE_THIRD_CONT_BLOCKを指定する。
|
||
|
||
#6: ContiguousPTEが割当てられたプロセスがfork可能なこと。
|
||
|
||
#7: ページテーブルの登録状況が確認できない状況でも、
|
||
上位のページテーブルの状態をチェックして、
|
||
ContiguousPTEのサイズでメモリを割り当てること。
|
||
|
||
#8: shmgetのTHPでContiguous PTEのメモリ確保が出来ること。
|
||
|
||
* shmgetは拡張THPが使えないのでNGとなる(Issue #1241)
|
||
|
||
#9: mmaptのTHPでContiguous PTEのメモリ確保が出来ること。
|
||
|
||
|
||
[メモリ割当て動作]
|
||
フラグ指定のmmapでContiguous PTEが割当て動作を確認する。
|
||
(mmapはmnumap,mremapのテストの初期化処理にてメモリ確保動作を確認)
|
||
(shmgetはmadviseテストの初期化処理にてメモリ確保動作を確認)
|
||
|
||
|
||
#100: 次の条件の下で、ContiguousPTEの割当が行えること。
|
||
対象テーブル: lv2、隣接PTE: 割り当て無し、端数: なし
|
||
|
||
* 対象ページテーブルのContiguousPTEページサイズよりも
|
||
大きな空きメモリが無い環境ではTPがSIGSEGVでNGになることが
|
||
期待動作となる。
|
||
|
||
#104: 次の条件の下で、ContiguousPTEの割当が行えないこと。
|
||
対象テーブル: lv3、隣接PTE: 割当てあり(head位置)、端数: なし
|
||
|
||
#105: 次の条件の下で、ContiguousPTEの割当が行えないこと。
|
||
対象テーブル: lv3、隣接PTE: 割当てあり(tail位置)、端数: なし
|
||
|
||
|
||
#106: 次の条件の下で、ContiguousPTEの割当が行えないこと。
|
||
ContiguousPTEのサイズでアラインされているVA/PAだが、
|
||
割当てページ数(メモリサイズ)が、ContiguousPTEの枚数に満たない。
|
||
対象テーブルはlv2。
|
||
|
||
#107: 次の条件の下で、ContiguousPTEの割当が行えないこと。
|
||
ContiguousPTEのサイズでアラインされているVA/PAだが、
|
||
割当てページ数(メモリサイズ)が、ContiguousPTEの枚数に満たない。
|
||
対象テーブルはlv3。
|
||
|
||
[munmapテスト]
|
||
munmapでContiguous PTEでマップされた領域[a, b]に含まれるメモリ範囲[p ,q]をunmapした際に、
|
||
対象領域と、その前後のPTEが期待通りになっているかを確認する。
|
||
以下、<開始アドレス、終了アドレス>の形式で設定の組み合わせを示す。
|
||
|
||
#200: <p - PAGE_SIZE, p + PAGE_SIZE>
|
||
|
||
#201: <p + PAGE_SIZE, p + PAGE_SIZE>
|
||
|
||
#202: <p - PAGE_SIZE, p - PAGE_SIZE>
|
||
|
||
#203: <p + PAGE_SIZE, p>
|
||
|
||
#204: <p, p>
|
||
|
||
#205: <p - PAGE_SIZE, p>
|
||
|
||
#206: <p, p + PAGE_SIZE>
|
||
|
||
#207: <p + PAGE_SIZE, p - PAGE_SIZE>
|
||
|
||
#208: <p, p - PAGE_SIZE>
|
||
|
||
[mremapテスト]
|
||
mremapでContiguous PTEでマップされた領域[a, b]に含まれるメモリ範囲[p ,q]をmremapした際に、
|
||
対象領域と、その前後のPTEが期待通りになっているかを確認する。
|
||
以下、<開始アドレス、終了アドレス>の形式で設定の組み合わせを示す。
|
||
|
||
#300: <p - PAGE_SIZE, p + PAGE_SIZE>
|
||
|
||
#301: <p + PAGE_SIZE, p + PAGE_SIZE>
|
||
|
||
#302: <p - PAGE_SIZE, p - PAGE_SIZE>
|
||
|
||
#303: <p + PAGE_SIZE, p>
|
||
|
||
#304: <p, p>
|
||
|
||
#305: <p - PAGE_SIZE, p>
|
||
|
||
#306: <p, p + PAGE_SIZE>
|
||
|
||
#307: <p + PAGE_SIZE, p - PAGE_SIZE>
|
||
|
||
#308: <p, p - PAGE_SIZE>
|
||
|
||
#309: <p, p>
|
||
移動先アドレスがContiguousPTEのサイズにアラインされないようにし、
|
||
ContiguousPTEが解除されることが#304と異なる。
|
||
|
||
[madvise(MADV_REMOVE)テスト]
|
||
madviseでContiguous PTEでマップした領域を無効化できることを確認する。
|
||
* MADV_REMOVEを使うプログラムを流すと
|
||
McKはプログラムの連続実行が出来なくなり再起動が必要
|
||
|
||
#400 Contiguous PTEを無効化できること
|
||
|
||
#409 Contiguous PTEを中抜きするMADV_REMOVEができないこと
|
||
Contiguous PTEのhead PTEのアドレスを対象とする。
|
||
|
||
#410 Contiguous PTEを中抜きするMADV_REMOVEができないこと
|
||
Contiguous PTEのtail PTEのアドレスを対象とする。
|
||
|
||
--
|
||
README COPYRIGHT FUJITSU LIMITED 2018
|