Using thread's tsc count instead of performance counter Refs: #1025 Change-Id: I1d7a18f1c52f1d52087002d31818638a6b206014
78 lines
3.8 KiB
Plaintext
78 lines
3.8 KiB
Plaintext
【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していることを確認した
|