【Issue#1025 動作確認】 □ 前提 PERF_COUNT_HW_REF_CPU_CYCLESイベントの計測は、aarch64アーキテクチャの Linuxではサポートされていない。 しかし、本件の機能追加ではMcKernelのthreadが持つuser_tsc, system_tsc を 用いて計測する方式で実装したため、アーキテクチャによらず計測が可能である。 □ テスト内容 1. Issueで報告された再現プログラムでの確認 C1025T01: PERF_COUNT_HW_REF_CPU_CYCLES 指定での計測 除外なし、ユーザモード除外、カーネルモード除外の3パターンを用いて PERF_COUNT_HW_REF_CPU_CYCLES の計測を行う それぞれの計測において、PERF_COUNT_HW_REF_CPU_CYCLESの計測値が アーキテクチャごとの以下の条件を満たした場合にPASSとする [x86_64] - ユーザ時間 :Linuxでのユーザ時間計測値の90% ~ 110% - カーネル時間:McKernelでのユーザ時間計測結果の1% 未満 [aarch64] LinuxでのPERF_COUNT_HW_REF_CPUの計測が行えないため、 計測値が取得できた場合にPASSとする 2. 計測の基本機能の確認 (x86_64 でのみ実施) perf_event_openでの基本機能の確認として、計測対象の演算処理と、 Start, Stop, Reset, Readを以下のフローで実施する CASE-A: 基本計測の確認 Start -> 演算 -> Stop -> Read CASE-B: Stop機能の確認 Start -> 演算 -> Stop -> 演算 -> Read CASE-C: Reset機能の確認 Start -> 演算 -> Stop -> Reset -> Read CASE-D: Read機能の確認 Start -> 演算 -> Read -> 演算 -> Read CASE-E: Stop後の再Start機能の確認 Start -> 演算 -> Stop -> 演算 -> Start-> 演算 -> Stop -> Read CASE-F: Start後の再Start機能の確認 Start -> 演算 -> Start -> 演算 -> Stop -> Read また、本テストでは、perf_event_openで取得したfdをグループ化し、 グループ内のリーダーとなるfdへの操作でグループ全体の操作が可能な PERF_FORMAT_GROUP の指定を用いる。 その上で、PERF_COUNT_HW_REF_CPU_CYCLES の指定を行ったfdがリーダーの場合と リーダー以外の場合で検証を行う。 本テストで実行するテストプログラム群(perf_case_X)では、1つ目の計測項目として 指定したものがリーダーとなる。 C1025T02: CASE-A でPERF_FORMAT_GROUPのリーダーの場合 C1025T03: CASE-B でPERF_FORMAT_GROUPのリーダーの場合 C1025T04: CASE-C でPERF_FORMAT_GROUPのリーダーの場合 C1025T05: CASE-D でPERF_FORMAT_GROUPのリーダーの場合 C1025T06: CASE-E でPERF_FORMAT_GROUPのリーダーの場合 C1025T07: CASE-F でPERF_FORMAT_GROUPのリーダーの場合 C1025T08: CASE-A でPERF_FORMAT_GROUPのリーダー以外の場合 C1025T09: CASE-B でPERF_FORMAT_GROUPのリーダー以外の場合 C1025T10: CASE-C でPERF_FORMAT_GROUPのリーダー以外の場合 C1025T11: CASE-D でPERF_FORMAT_GROUPのリーダー以外の場合 C1025T12: CASE-E でPERF_FORMAT_GROUPのリーダー以外の場合 C1025T13: CASE-F でPERF_FORMAT_GROUPのリーダー以外の場合 それぞれの計測において、PERF_COUNT_HW_REF_CPU_CYCLESの計測値が 以下の条件を満たした場合にPASSとする - ユーザ時間 :Linuxでのユーザ時間計測値の90% ~ 110% - カーネル時間:McKernelでのユーザ時間計測結果の1% 未満 □ 実行手順 $ make test McKernelのインストール先や、OSTEST, LTPの配置場所は、 $HOME/.mck_test_config を参照している .mck_test_config は、McKernelをビルドした際に生成されるmck_test_config.sample ファイルを $HOMEにコピーし、適宜編集する □ 実行結果 x86_64_result.log aarch64_result.log 参照 すべての項目で、PASSしていることを確認した