Table Of Contents:
Contents
概要 / Abstract
割り込みフックドライバ / Interrupt hooked driver
This is a kernel driver which records time stamps on interrupt events, and wakes up user level device drivers on interrupt receipt. It provides a psuedo-file on the /proc filesystem, and ULDD can read the file to get the interrupt events for the user-level driver.
サンプルアプリケーション / Sample Application
SM501 UART serial terminal for RTS7715R2D
実験 / Experiment
目的 / Objective
割り込み処理をユーザタスクで行う場合に問題となる、割り込み応答時間のレイテンシ増分を測定する。 Mesure the increase of the interrupt reacting time ratency, which may affect to achieve the intrerrupt handling by the user task.
環境 / Environment
- Target platform
Renesas RTS7751R2D
SH4(SH7751) 240MHz
64MB SDRAM
10Base-T Ethernet
Linux 2.6.16.4 / 2.4.20
256MB CompactFlash for rootfs
方法 / Method
シリアルからデータを送信し、割り込み発生後、カーネルドライバの割り込みハンドラが起動してから、ハンドラによってwakeup()されたULDDが起床するまでの時間を測定する。
Send the data from serial inerface. Measure the time after interrupt is evoked and the interrupt handler started, until ULDD to be woke up by the handler to wakeup().
- 10KBのデータを38400bpsで送信
- Send 10 K Bytes data with 38400 pbs speed.
データ受信時の起床時間(カーネル割り込みハンドラ起動直後からULDD復帰までの時間を計測)を計測
Measure the required time to wake up when data receiving (Measure the time from kernel interrupt handler to be evoked until ULDD to be resumed).- 負荷状況を変化 / Change the load status.
- (none): 負荷なし / No load.
lat_proc: lmbench3付属のプロセス生成ベンチマークをバッググラウンドで実行(./lat_proc -P 3 -N 20 exec &) / Use process evoking benchmark test attached with "lmbench3" in the back ground mode.
- Non-RT(SCHED_OTHER), RT(SCHED_RR, sched_prio=1) thread to be used.
結果 / Result
Disturbance task indicates load.
IRQ Delivering Method |
Scheduling Policy |
Disturbance Task |
Linux 2.6.16.4 (CONFIG_PREEMPT=y) |
Linux 2.4.20 |
||||||
MAX (us) |
AVG (us) |
MIN (us) |
Plot |
MAX (us) |
AVG (us) |
MIN (us) |
Plot |
|||
File I/O (sync) |
SCHED_OTHER |
(none) |
39.80 |
17.52 |
13.73 |
① |
14.93 |
6.98 |
6.87 |
⑬ |
SCHED_OTHER |
lat_proc |
253.27 |
42.57 |
10.93 |
② |
2808.13 |
478.43 |
6.53 |
⑭ |
|
SCHED_RR |
(none) |
38.13 |
15.73 |
14.07 |
③ |
17.13 |
6.34 |
6.20 |
⑮ |
|
SCHED_RR |
lat_proc |
33.73 |
14.32 |
8.80 |
④ |
2697.13 |
485.29 |
6.60 |
⑯ |
|
SIGIO (async) |
SCHED_OTHER |
(none) |
524.00 |
62.84 |
45.47 |
⑤ |
||||
SCHED_OTHER |
lat_proc |
72317.40 |
2185.96 |
83.33 |
⑥ |
|||||
SCHED_RR |
(none) |
81.40 |
47.12 |
43.67 |
⑦ |
|||||
SCHED_RR |
lat_proc |
280.93 |
102.89 |
79.40 |
⑧ |
|||||
SIGRT (async) |
SCHED_OTHER |
(none) |
83.47 |
50.00 |
44.80 |
⑨ |
||||
SCHED_OTHER |
lat_proc |
85973.93 |
2528.19 |
85.40 |
⑩ |
|||||
SCHED_RR |
(none) |
75.93 |
46.71 |
43.07 |
⑪ |
|||||
SCHED_RR |
lat_proc |
290.80 |
102.18 |
78.87 |
⑫ |
|||||
