source: perf/README.txt@ 26

Last change on this file since 26 was 19, checked in by ertl-honda, 12 years ago

HRP2用の性能評価プログラムの追加.

  • Property svn:executable set to *
File size: 3.8 KB
Line 
1==========================================================================
2 TOPPERSカーネル性能評価プログラム
3 Last Modified: 2012 May 02 09:11:11
4==========================================================================
5○目的
6
7本プログラム目的は,各種のTOPPERSカーネルの性能評価を行うことである.
8
9○ファイル
10./README.txt
11./asp
12 ./perf : ASP用の性能評価プログラム
13 ./perf.cfg
14 ./perf.h
15 ./perf.c
16 ./patch : FMP用のパッチ
17./fmp
18 ./perf : FMP用の性能評価プログラム
19 ./perf.cfg
20 ./perf.h
21 ./perf.c
22 ./patch : fmp用のパッチ
23./hrp2
24 ./perf : HRP2用の性能評価プログラム
25 ./perf.cfg
26 ./perf.h
27 ./perf.c
28
29○方針
30・可能な限り依存部の変更で計測可能とする.
31・計測はパフォーマンスカウンタで行う.パフォーマンスカウンタは,
32 プロセッサ付属のパフォーマンスカウンタであっても,
33 プロセッサ外部のタイマでもよい.精度はnsecを推奨.
34・1個の計測プログラムで行う.
35
36
37○計測項目
38 [FMP]はFMPカーネルのみ該当する
39 [HRP2]はHRPカーネルのみ該当する
40
41・起動時間
42 ・起動時からsta_kerまで.
43 ・target_mprc_initialize()の実行時間 [FMP]
44 ・target_initialize()の実行時間.
45 ・オブジェクト初期化の時間
46 ・初期化ルーチン実行から最初のタスクの実行まで.
47
48・act_tsk()の実行時間
49 ・ディスパッチなし
50 ・ディスパッチあり
51 ・ディスパッチあり(他コア)[FMP]
52 ・ディスパッチあり(ユーザードメイン間)[HRP2]
53 ・ディスパッチあり(異なるユーザードメイン間)[HRP2]
54
55・割り込み応答時間
56 ・タイマー割り込みが入ってから,割込みハンドラが実行されるまでの時間.
57
58
59○マクロ
60・計測時には以下のマクロを有効とする.
61 ・TOPPERS_ENA_PERF
62
63
64○依存部で用意する関数
65以下の型及び関数を xxx_kernel.h に定義する.
66
67・PERFCNT : 性能計測用のカウンタのデータ型
68
69・void x_init_pcc(void) : パフォーマンスカウンタの初期化
70・void x_get_pcc(PERFCNT *p_count) : パフォーマンスカウンタの読み込み
71・void x_rst_pcc(void) : パフォーマンスカウンタのリセット
72・ulont_t x_cnv_usec(PERFCNT *p_count) : パフォーマンスカウンタ値からnsecへの変換
73
74FMPカーネルでは,コアをまだいた計測を行うため,上記のパフォーマンスカウンタは全コアから
75アクセス可能な物を用いること.
76
77また,ヒストグラムライブラリ用のマクロを定義する.
78#define HIST_GET_TIME(p_time) ((void) x_get_pcc(p_time));
79#define HIST_CONV_TIM(time) (x_cnv_usec(time))
80#define HIST_BM_HOOK() ((void) x_rst_pcc())
81
82
83
84○依存部の変更箇所
85・性能評価時以外は影響を及ぼさないように,TOPPERS_ENA_PERF が有効な場合のみ,
86 有効なようにifdefを入れることを推奨する.
87
88●起動時間計測
89
90ASP
911.起動直後のパフォーマンスカウンタの初期化とリセット
92 ・スタートアップルーチンの先頭ないし,hardware_init_hook で実施する.
932.target_initialize()もしくは相当処理の先頭で,パフォーマンスカウンタのカウント値を
94 取得してperf_boot_time[0]に保存してカウント値をリセットする
953.target_initialize()もしくは相当処理の終端で,パフォーマンスカウンタのカウント値を
96 取得してperf_boot_time[1]に保存してカウント値をリセットする
97
98FMP
99FMPでは,1,2の間に,target_mprc_initialize()の先頭の時間を計測する.
100計測はそれぞれマスタプロセッサで実施する.
101
1021.起動直後のパフォーマンスカウンタの初期化とリセット
1032.target_mprc_initialize()の先頭でのパフォーマンスカウンタのカウント値を
104 取得してperf_boot_time[0]に保存してカウント値をリセットする
1053.target_initialize()もしくは相当処理の先頭で,パフォーマンスカウンタのカウント値を
106 取得してperf_boot_time[1]に保存してカウント値をリセットする
1074.target_initialize()もしくは相当処理の終端で,パフォーマンスカウンタのカウント値を
108 取得してperf_boot_time[2]に保存してカウント値をリセットする
109
110
111●割込み応答時間計測
112ASP
113・システムティックの割込みハンドラの先頭で perf_int_latency() を呼び出す.
114
115FMP
116・上記をマスタプロセッサのみから呼び出す.
117
118
119○ビルド用のMakefile
120・CDEFS
121 -DTOPPERS_ENA_PERF を追加する.
122・APPL_COBJS
123 histogram.o test_lib.o を追加する.
124
125
126○ARM依存部のみの定義
127・TOPPERS_ARM_PCC_DIV64 : パフォーマンスカウンタを64分周で駆動
128
129以上.
Note: See TracBrowser for help on using the repository browser.