This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
【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していることを確認した