Test "make sure to context-switch to idle thread when therad's status is PS_EXITED" on arm64
Change-Id: I757d529e49655e9010022f10414e4d6c9eb4c059 Refs: #1029
This commit is contained in:
committed by
Masamichi Takagi
parent
01b2a1d213
commit
0ee446923a
69
test/mng_mod/issues/1029/x86_64/README
Normal file
69
test/mng_mod/issues/1029/x86_64/README
Normal file
@ -0,0 +1,69 @@
|
||||
【Issue#1029 動作確認】
|
||||
Issue#1029が解決され、既存機能にも影響がないことをストレステスト用いた確認(1項目)と、
|
||||
schedule()の基本動作確認(12項目)の計13項目のテストによって確認した。
|
||||
|
||||
1. ストレステストを用いた確認
|
||||
・Issue#1029 (https://postpeta.pccluster.org/redmine/issues/1029)
|
||||
報告で使用されたテストプログラムを用いて、現象が再現しないことを確認した。
|
||||
|
||||
2. schedule()の基本動作確認
|
||||
schedule()実行時のコンテキストスイッチ前thread(prev)と、
|
||||
runqに積まれている実行待ちthreadの状態の組み合わせで、12項目のテストを実施した。
|
||||
|
||||
基本動作確認の詳細を以下に示す。
|
||||
|
||||
(1) ファイルの説明
|
||||
1029.patch 動作確認用デバッグプリントを追加するパッチファイル
|
||||
sched_test.c 修正対象のschedule()の動作を確認するプログラム
|
||||
複数の子プロセスをfork()し、それぞれの子プロセスでsched_setaffinity()を行う
|
||||
go_test.c schedule()の動作確認テストを実施するプログラム
|
||||
sched_testプログラムを並列実行する
|
||||
result.log go_testプログラムの実行結果
|
||||
|
||||
(2) テストの実行方法
|
||||
以下の手順でテストを実行する
|
||||
1. 1029.patch をMcKernelのソースコードに適用し、ビルドとインストールを行う
|
||||
2. ${HOME}/.mck_test_config.mkのMCK_DIR変数の内容を、McKernelがインストールされているディレクトリに変更する
|
||||
3. <mckernel-install>/bin/mcreboot.sh -c 2-7 -m 2G -O
|
||||
4. sh make test を実行する
|
||||
|
||||
(3) テスト項目
|
||||
schedule()実行時のコンテキストスイッチ前thread(prev)と、
|
||||
runqに積まれている実行待ちthreadの状態の以下の組み合わせで、
|
||||
schedule()が想定どおりの動作をすることを確認する。
|
||||
|
||||
・prevがidleのケース
|
||||
CT_001: runqが空
|
||||
⇒ コンテキストスイッチを行わない
|
||||
CT_002: runqに実行待ちのthreadが存在し、且つ、そのthreadが1度も実行状態になっていない
|
||||
⇒ 非idleのthreadにスイッチする
|
||||
CT_003: runqに実行待ちのthreadが存在し、且つ、そのthreadが実行状態になったことがある
|
||||
⇒ 非idleのthreadにスイッチする
|
||||
|
||||
・schedule時点で当該CPUのCPU_FLAGS_NEED_MIGRATEが活性化しているケース
|
||||
CT_004: runqが空
|
||||
⇒ idleにスイッチする
|
||||
CT_005: runqに実行待ちのthreadが存在し、且つ、そのthreadが1度も実行状態になっていない
|
||||
⇒ idleにスイッチする
|
||||
CT_006: runqに実行待ちのthreadが存在し、且つ、そのthreadが実行状態になったことがある
|
||||
⇒ idleにスイッチする
|
||||
|
||||
・prevがidle以外で、statusがPS_EXITED以外:
|
||||
CT_007: runqが空
|
||||
⇒ idleにスイッチする
|
||||
CT_008: runqに実行待ちのthreadが存在し、且つ、そのthreadが1度も実行状態になっていない
|
||||
⇒ 非idleのthreadにスイッチする
|
||||
CT_009: runqに実行待ちのthreadが存在し、且つ、そのthreadが実行状態になったことがある
|
||||
⇒ 非idleのthreadにスイッチする
|
||||
|
||||
・prevがidle以外で、statusがPS_EXITED:
|
||||
CT_010: runqが空
|
||||
⇒ idleにスイッチする
|
||||
CT_011: runqに実行待ちのthreadが存在し、且つ、そのthreadが1度も実行状態になっていない
|
||||
⇒ idleにスイッチする
|
||||
CT_012: runqに実行待ちのthreadが存在し、且つ、そのthreadが実行状態になったことがある
|
||||
⇒ idleにスイッチする
|
||||
|
||||
(4) 結果
|
||||
テストプログラムの実行結果はresult.log に出力される。
|
||||
上記12項目で[OK]が出力されていることを確認した。
|
||||
Reference in New Issue
Block a user