source: perf/README.txt@ 18

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

性能評価プログラムのコミット.

  • Property svn:executable set to *
File size: 3.6 KB
RevLine 
[18]1==========================================================================
2 TOPPERSカーネル性能評価プログラム
3 Last Modified: 2012 Apr 26 16:01:41
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
24○方針
25・可能な限り依存部の変更で計測可能とする.
26・計測はパフォーマンスカウンタで行う.パフォーマンスカウンタは,
27 プロセッサ付属のパフォーマンスカウンタであっても,
28 プロセッサ外部のタイマでもよい.精度はnsecを推奨.
29・1個の計測プログラムで行う.
30
31
32○計測項目
33 [FMP]はFMPカーネルのみ該当する
34・起動時間
35 ・起動時からsta_kerまで.
36 ・target_mprc_initialize()の実行時間 [FMP]
37 ・target_initialize()の実行時間.
38 ・オブジェクト初期化の時間
39 ・初期化ルーチン実行から最初のタスクの実行まで.
40
41・act_tsk()の実行時間
42 ・ディスパッチなし
43 ・ディスパッチあり
44 ・ディスパッチあり(他コア)[FMP]
45
46・割り込み応答時間
47 ・タイマー割り込みが入ってから,割込みハンドラが実行されるまでの時間.
48
49
50○マクロ
51・計測時には以下のマクロを有効とする.
52 ・TOPPERS_ENA_PERF
53
54
55○依存部で用意する関数
56以下の型及び関数を xxx_kernel.h に定義する.
57
58・PERFCNT : 性能計測用のカウンタのデータ型
59
60・void x_init_pcc(void) : パフォーマンスカウンタの初期化
61・void x_get_pcc(PERFCNT *p_count) : パフォーマンスカウンタの読み込み
62・void x_rst_pcc(void) : パフォーマンスカウンタのリセット
63・ulont_t x_cnv_usec(PERFCNT *p_count) : パフォーマンスカウンタ値からnsecへの変換
64
65FMPカーネルでは,コアをまだいた計測を行うため,上記のパフォーマンスカウンタは全コアから
66アクセス可能な物を用いること.
67
68また,ヒストグラムライブラリ用のマクロを定義する.
69#define HIST_GET_TIME(p_time) ((void) x_get_pcc(p_time));
70#define HIST_CONV_TIM(time) (x_cnv_usec(time))
71#define HIST_BM_HOOK() ((void) x_rst_pcc())
72
73
74
75○依存部の変更箇所
76・性能評価時以外は影響を及ぼさないように,TOPPERS_ENA_PERF が有効な場合のみ,
77 有効なようにifdefを入れることを推奨する.
78
79●起動時間計測
80
81ASP
821.起動直後のパフォーマンスカウンタの初期化とリセット
83 ・スタートアップルーチンの先頭ないし,hardware_init_hook で実施する.
842.target_initialize()もしくは相当処理の先頭で,パフォーマンスカウンタのカウント値を
85 取得してperf_boot_time[0]に保存してカウント値をリセットする
863.target_initialize()もしくは相当処理の終端で,パフォーマンスカウンタのカウント値を
87 取得してperf_boot_time[1]に保存してカウント値をリセットする
88
89FMP
90FMPでは,1,2の間に,target_mprc_initialize()の先頭の時間を計測する.
91計測はそれぞれマスタプロセッサで実施する.
92
931.起動直後のパフォーマンスカウンタの初期化とリセット
942.target_mprc_initialize()の先頭でのパフォーマンスカウンタのカウント値を
95 取得してperf_boot_time[0]に保存してカウント値をリセットする
963.target_initialize()もしくは相当処理の先頭で,パフォーマンスカウンタのカウント値を
97 取得してperf_boot_time[1]に保存してカウント値をリセットする
984.target_initialize()もしくは相当処理の終端で,パフォーマンスカウンタのカウント値を
99 取得してperf_boot_time[2]に保存してカウント値をリセットする
100
101
102●割込み応答時間計測
103ASP
104・システムティックの割込みハンドラの先頭で perf_int_latency() を呼び出す.
105
106FMP
107・上記をマスタプロセッサのみから呼び出す.
108
109
110○ビルド用のMakefile
111・CDEFS
112 -DTOPPERS_ENA_PERF を追加する.
113・APPL_COBJS
114 histogram.o test_lib.o を追加する.
115
116
117○ARM依存部のみの定義
118・TOPPERS_ARM_PCC_DIV64 : パフォーマンスカウンタを64分周で駆動
119
120以上.
Note: See TracBrowser for help on using the repository browser.