JPS 第55回年次大会(新潟大)Performance Evaluation ofLinux Real-Time Extensions- for DAQ Systems for HEP exp. -KEK Online Group
仲吉一男, 安 芳次, 藤井啓文, 藤田陽一,五十嵐洋一, 井上栄二, 児玉英世

AgendaMotivation
Real-Time DAQ System
Linux Real-Time Extensions
Performance Evaluation Test
Test Results
Summary of Evaluation Test
Issues for Linux RT Control

Motivation
PC/Linux DAQ システムは, 広く普及
CAMAC : Kinetic, CC7x00, CCP
VMEbus: Bit3 61{6,7,8}, CPU board

全ての DAQ システムに Real-Time 機能は不要
しかし, 必要なシステムも存在する
Event Builder
High rate trigger Exp.

PC/Linux DAQ で Real-Time 機能を使いたいReal-Time(RT) DAQ SystemRT DAQ System: 一定時間内で DAQ 完了を保証
Front-end エレキによる高速化
Real-Time OS の利用

Std. Linux
Fair Share Policy
Dynamic Priority

POSIX 1003.1b(標準 Linux で実装済)
Static Priority(POSIX: 0 - 99)
Scheduling Policy : FIFO, RR, OTHER

まず Linux の POSIX.1b の性能を調べる

Important factors for RT System
デッドライン保証
応答性
Interrupt Response Time
Context Switch Time高エネルギー実験用 DAQ System
Network functionality
Portability of code
Small Size Kernel

Linux Real-Time Extensions
Std. LinuxPOSIX.1b

Non Standard
RTLinux(NMT/FSMlabs)
KURT(Kansas Univ.)
Red Linux(UCI)
L4Linux(Dresden Tech.)Linux/RK(CMU)
ART Linux(ETL)Hard Hat Linux(MontaVista)
BlueCat(LynuxWorks)
Ingo’s Patch

Linux RT の研究・開発が急速に行われつつある

RTLinux is Best?
Real-Time Task = カーネルモジュール
システムコールの直接利用はできない
既存のデバイスドライバは利用不可
プログラム開発時のデバッグが難しい
Network ベースの大規模 DAQ システムでは利用が困難
標準 Linux から RT 対応に seamless な移行をしたい
他のアプローチの Linux RT Extensions を調査Performance Evaluation Test
VMEbus からの割り込み応答時間の測定
4 つの負荷の下で測定を行った
NO Load
CPU Load(loop x 40)
I/O Load(ls -lR > /dev/null)
Network Load(ping -f)

性能評価を行った RT Extensions
POSIX.1b(Linux2.2.13)
KURT(Linux2.2.13)
MontaVista’s RT scheduler(Linux2.2.14)
Ingo’s Low Latency Patch(Linux2.2.13)

Test BenchVME CPU Board(PenII 333MHz), Linux2.2.{13,14}
VME Interrupt Register
VME Visual Scaler
NIM Modules
Slackware 7.0
Linux2.2.{13,14}
GNU libc2.1.2(glibc2)

N of Events

Test Results
51041010

Normal2

10100200300

400500usec

N of Events

510 4
1010POSIX

210100200300

400500usec

N of Events

51041010

KURT

210100200300

400500usec

N of Events

51041010

Mvista210100200300

400500usec

N of Events

510410101Ingo

20100200300400500
usec

N of Events

Test Results(Cont.)
51041010

Normal2105000

10000

15000

20000

25000

30000

35000
usec

N of Events

510 4
1010POSIX

2105000

10000

15000

20000

25000

30000

35000
usec

N of Events

51041010KURT

2105000

10000

15000

20000

25000

30000

35000
usec

N of Events

51041010

Mvista2105000

10000

15000

20000

25000

30000

35000
usec

N of Events

510410101Ingo

205000

10000

15000

20000

25000

30000

35000
usec

Summary of Evaluation Test
VMEbus からの割り込み応答の評価結果
POSIX, KURT, MontaVista は CPU 負荷中では有効しかし I/O や Network 負荷では RT 制御に問題あり
Ingo’s Patch は CPU,I/O,Network 負荷で有効に作用

標準 Linux scheduler の RT 化だけではだめ
ドライバも含めた RT 用の最適化が必要Issues for Linux RT Control
Linux の基本設計はトータルなスループット向上であるので RT 制御は, 基本的に困難Linux RT 化には標準のカーネルやドライバに変更を加える必要がある
現時点の Linux RT 拡張を適用可能な DAQ のアプリ
ケーションは存在する「割り込み応答性能」以外の評価も行う
今後の Linux RT Extension の発展に期待References

RTLinux
http://www.rtlinux.org/
KURT
http://www.ittc.ukans.edu/kurt/
ART Linux
http://www.etl.go.jp/etl/robotics/Projects/ART-Linux/
Linux/RK
http://www.cs.cmu.edu/~rajkumar/linux-rk.html
Hard Hat Linux http://www.mvista.com/
BlueCathttp://www.lynuxworks.com/
今後も下記で評価結果等を公開予定
http://onlax2.kek.jp/~nakayosi/index-rt.html
kazuo.nakayoshi@kek.jp

KURT(Kansas Univ. Real-Time Linux)
KURT v1.x for Linux2.0.34, 2.1.{75.105,107}
KURT v2.0 for Linux2.2.{5.9.13}
Target: Multimedia applications
Features: Firm real-time, UTIME
RT mode:Forcused Real-Time
Mixed Real-Time
NormalART LinuxART Linux for Linux2.0.36
Developer :Youichi Ishiwata(ETL)
Features:Source level compatibility of device drivers with Std. LinuxNo priority inversion.
Binary level compatibility of user programs with Std. Linux
Avoids uncertainty of real-time execution due to interrupts
Real-time task execution at user priviledge level

Test Results(Std. Linux)

Number of Events

Linux2.2.13(normal)

104103102

YEL : NO Load
RED : CPU Load
BLU : NETWORK Load
GRN : I/O Load

1010255075

100125150175200usec

Test Results(Linux POSIX)
Linux2.2.13(POSIX)

Number of Events

Policy : FIFO
Priority: MAX(99)104103102

YEL : NO Load
RED : CPU Load
BLU : NETWORK Load
GRN : I/O Load

1010255075100125150175200usec

Test Results(KURT)

Number of Events

Linux2.2.13(KURT2.0)

104103102

YEL : NO Load
RED : CPU Load
BLU : NETWORK Load
GRN : I/O Load

1010255075100125150175200usec

Test Results(MontaVista)
Linux2.2.14(MontaVista real-time scheduler)

Number of Events

Policy : FIFO
Priority: MAX(127)104103102

YEL : NO Load
RED : CPU Load
BLU : NETWORK Load
GRN : I/O Load

1010255075100125150175200usec

Test Results(Ingo’s Patch)

Number of Events

Linux2.2.13(lowlatency-2.2.13-A1)

104103102

YEL : NO Load
RED : CPU Load
BLU : NETWORK Load
GRN : I/O Load

1010255075100125150175200usec