Test "Process swap (swapout)" on arm64

Change-Id: I1eecb046575480966febbcb55e5f4ade6313275b
This commit is contained in:
Shiratori, Takehiro
2019-03-12 16:22:24 +09:00
committed by Masamichi Takagi
parent e988bfaf50
commit fe53c6e0a5
8 changed files with 175 additions and 8 deletions

View File

@ -1,6 +1,7 @@
/* README COPYRIGHT FUJITSU LIMITED 2018 */
/* README COPYRIGHT FUJITSU LIMITED 2018-2019 */
ユーザ空間アクセスコードのアーキテクチャ依存非依存分離
プロセススワップ機能
arm64版テスト結果README
(1) NG項目の補足情報
@ -16,14 +17,20 @@ arm64版テスト結果README
1. move_pagesは一部しか実装されていないため、Arm移植の対象ではない。
そのため、テストを実施しない。
2. ./go_swapout_test.shを利用したテストケースについては、
プロセススワップ機能のテストセットであると考えているため、
arm64版では移植を行っていない機能となる。
そのため、テストを実施しない。
(3) テスト実行方法
test/user_space/READMEを参照のこと
(3) IA版における対応版数
実行に利用したIHK/McKernelは、IA版における下記の版数相当の
arm64版移植IHK/McKernelである。
swaptest実施の際にはpatch/swaptest_bufsize_malloccount.patchのパッチを
適用したものを利用する
(4) テスト項目詳細
test/user_space/READMEを参照のこと
(5) 実行結果ログ
result.logファイル内に
ユーザ空間アクセスコードのアーキテクチャ依存非依存分離
のテスト実行時のログを記載する。
実行に利用したIHK/McKernelは、IA版における下記の版数相当のものである。
IHK
commit d6fcbee8cb91f9ec4b49f97c918e696ac0335aaf
@ -36,4 +43,29 @@ arm64版テスト結果README
Date: Tue Sep 25 10:05:41 2018 +0900
ql_normal.log, swapout_copy_from.log, swapout_copy_to_01.log
swapout_copy_to_02.log, swapout_normal.logのログファイル内には
プロセススワップ機能のテスト実行時のログを記載する。
実行に利用したIHK/McKernelは、下記の版数のものである。
IHK
https://github.com/RIKEN-SysSoft/ihk.git
tag: fj_test_201902
commit f4c2dbbb0f1ba87b2b6b33a1e683c313bd2006fa
Author: Dominique Martinet <dominique.martinet@cea.fr>
Date: Thu Feb 7 14:02:00 2019 +0900
McKernel
https://github.com/RIKEN-SysSoft/mckernel.git
tag: fj_test_201902
commit 21cf953a03d54e6ca01a39f52637d79134ad4e0e
Author: Dominique Martinet <dominique.martinet@cea.fr>
Date: Wed Feb 6 16:55:14 2019 +0900
上記に加えて、以下の修正を取り込む
patch/qlmpilib_bufsize.patch
以上。

View File

@ -0,0 +1,14 @@
## qlmpilib_bufsize.patch COPYRIGHT FUJITSU LIMITED 2019 ##
diff --git a/executer/user/qlmpilib.c b/executer/user/qlmpilib.c
index 7fcbcb56..78c1f846 100644
--- a/executer/user/qlmpilib.c
+++ b/executer/user/qlmpilib.c
@@ -15,7 +15,7 @@
#include "../include/pmi.h"
-#define BUF_SIZE (32*1024)
+#define BUF_SIZE (128*1024)
#define NALLOC 10
#define QL_SUCCESS 0
#define QL_NORMAL 2

View File

@ -0,0 +1,33 @@
## swaptest_bufsize_malloccount.patch COPYRIGHT FUJITSU LIMITED 2019 ##
diff --git a/test/user_space/swapout/swaptest.c b/test/user_space/swapout/swaptest.c
index 3c48446f..5638b6da 100644
--- a/test/user_space/swapout/swaptest.c
+++ b/test/user_space/swapout/swaptest.c
@@ -4,14 +4,14 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#define BUF_SIZE (32*1024)
+#define BUF_SIZE (128*1024)
int data[1024*1024];
char sym2[1024*1024] = { 10, 20, 30, 0 };
char sym3[1024*1024] = { 10, 20, 30, 0 };
char *sym1 = "aaaaaa";
char buffer[BUF_SIZE];
-char *ptr1, *ptr2;
+char *ptr1, *ptr2, *ptr3, *ptr4, *ptr5, *ptr6;
char fnamebuf[1024];
int
@@ -54,6 +55,10 @@ main(int argc, char **argv)
printf("&cc = %p\n", &cc);
ptr1 = malloc(1024);
ptr2 = malloc(1024*1024);
+ ptr3 = malloc(1024*1024);
+ ptr4 = malloc(1024*1024);
+ ptr5 = malloc(1024*1024);
+ ptr6 = malloc(1024*1024);
printf("ptr1 = %p\n", ptr1);
printf("ptr2 = %p\n", ptr2);
sprintf((char*) data, "hello\n");

View File

@ -0,0 +1,42 @@
mckernel booting... done.
[OK] CT01001 ql_server and usr_prgs are not running on each node
make: Entering directory '/root/mckernel/test/qlmpi/qlmpi_testsuite'
make: 'usr_prg_A' is up to date.
make: Leaving directory '/root/mckernel/test/qlmpi/qlmpi_testsuite'
[OK] CT01002 ql_mpiexec_start usr_prg_A (first exec) returns 0
[OK] CT01003 ql_server is running on master node
[OK] CT01004 usr_prg_A's args are correct on each node
[OK] CT01005 usr_prg_A's env (QL_TEST) is correct on each node
[OK] CT01006 usr_prg_A's calculation is done on each node
1 programs is waiting on cnode005
[OK] CT01007 usr_prg_A is waiting for resume-req on each node
make: Entering directory '/root/mckernel/test/qlmpi/qlmpi_testsuite'
make: 'usr_prg_B' is up to date.
make: Leaving directory '/root/mckernel/test/qlmpi/qlmpi_testsuite'
[OK] CT01008 ql_mpiexec_start usr_prg_B (first exec) returns 0
[OK] CT01009 usr_prg_B's calculation is done on each node
1 programs is waiting on cnode005
[OK] CT01010 usr_prg_B is waiting for resume-req on each node
make: Entering directory '/root/mckernel/test/qlmpi/qlmpi_testsuite'
make: 'usr_prg_C' is up to date.
make: Leaving directory '/root/mckernel/test/qlmpi/qlmpi_testsuite'
[OK] CT01011 ql_mpiexec_start usr_prg_C (first exec) returns 0
[OK] CT01012 usr_prg_C's calculation is done on each node
1 programs is waiting on cnode005
[OK] CT01013 usr_prg_C is waiting for resume-req on each node
[OK] CT01014 (again) ql_mpiexec_start usr_prg_A returns 0
[OK] CT01015 (again) usr_prg_A's args are correct on each node
[OK] CT01016 (again) usr_prg_A's env (QL_TEST) is correct on each node
[OK] CT01017 (again) usr_prg_A's calculation is done on each node
1 programs is waiting on cnode005
[OK] CT01018 (again) usr_prg_A is waiting for resume-req on each node
[OK] CT01019 (again) ql_mpiexec_start usr_prg_B returns 0
[OK] CT01020 (again) usr_prg_B's calculation is done on each node
1 programs is waiting on cnode005
[OK] CT01021 (again) usr_prg_B is waiting for resume-req on each node
[OK] CT01022 ql_mpiexec_finalize usr_prg_A return 0
[OK] CT01023 ql_mpiexec_finalize usr_prg_B return 0
[OK] CT01024 ql_server is still running on master node
[OK] CT01025 ql_mpiexec_finalize usr_prg_C return 0
[OK] CT01026 ql_server is not running on master node
[OK] so_026 qlmpi test

View File

@ -0,0 +1,8 @@
mckernel booting... done.
make: Nothing to be done for 'all'.
[OK] so_001 arealist_update:variable i matched rea->tail->count :(0)
[OK] so_002 mlocklist_morereq:variable ent.count matched ent->count :(0)
[OK] so_003 arealist_preprarewrite:variable ent.count matched ent->count :(7)
[OK] so_004 do_pageout loop1:variable swap_info[].start matched sw_info.start :(420000)
[OK] so_005 do_pageout loop2:variable swap_info[].start matched sw_info.start :(420000)
[OK] so_006 do_pageout loop3:variable swap_info[].start matched sw_info.start :(420000)

View File

@ -0,0 +1,10 @@
mckernel booting... done.
make: Nothing to be done for 'all'.
[OK] so_007 arealist_update:variable i matched rea->tail->count :(0)
[OK] so_008 arealist_add:addr->start matched waddr.start :(420000)
[OK] so_009 do_pageout:variable si->udata_buf matched si->swapfname :(/tmp/pages)
[OK] so_010 do_pageout:si->swphdr->magic is McKernel swap :(McKernel swap)
[OK] so_011 do_pageout:si->swphdr->version is 1.6.0 :(1.6.0)
9
[OK] so_012 do_pageout:variable count_sarea matched swap_area.count :(9)
[OK] so_013 do_pageout:variable count_marea matched mlock_area.count :(2)

View File

@ -0,0 +1,12 @@
mckernel booting... done.
make: Nothing to be done for 'all'.
[OK] so_014 arealist_preparewrite:info[].start matched went.pair[].start :(420000)
[OK] so_015 arealist_preparewrite:info[].end matched went.pair[].end :(620000)
[OK] so_016 arealist_preparewrite:info[].flag matched went.pair[].flag :(331004)
[OK] so_017 arealist_preparewrite:info[].pos matched went.pair[].pos :(188)
[OK] so_018 pager_open:swapfname matched si-udate_buf :(/tmp/pages)
[OK] so_019 pager_unlink:swapfname matched si-udate_buf :(/tmp/pages)
0
[OK] so_020 arealist_get:arealist is inistialized. :(0)
[OK] so_021 arealist_get: area->tail->next is matched :(630620)
[OK] so_022 arealist_alloc:arealist is inistialized. :(0)

View File

@ -0,0 +1,16 @@
mckernel booting... done.
make: Nothing to be done for 'all'.
swapout returns: 0
[OK] so_023 swaptest program is nomrmal exit.
data = hello
[OK] so_024 confirmed restoration of data.
0000000000420000:0000000000620000 is matched.
0000000000650000:0000000000a50000 is matched.
0000080000030000:0000080000040000 is matched.
0000100000450000:0000100000480000 is matched.
0000100000530000:0000100000640000 is matched.
0000100000640000:0000100000750000 is matched.
0000100000750000:0000100000860000 is matched.
0000100000860000:0000100000970000 is matched.
0000100000970000:0000100000a80000 is matched.
[OK] so_025 pageout areas and pagein areas are matched.