性能評価

Home

テスト環境

CPU Pentium II 450MHz
メモリ 256MB
VME アダプタ SBS Model-617
OS Linux 2.4.18 (Vine Linux 2.5)
KiNOKO Ver. 1.0.13 (RC1)

VMEデバイスドライバ性能

VME バス上のメモリモジュールから,固定サイズのデータの読み出しを 100 回行ない,所要時間を計測します. データサイズは,2kB から 1024 kB まで 2kB づつ変化させます. 使用したモジュールは,TKO で使われる SMP です.

以下のグラフは,各データサイズに対して,1回あたりの読み出しに要した時間と,総所要時間から計算した処理速度です.

このうち,データサイズが 2kB から 20 kB の範囲を直線でフィットして,データ転送自体の速度(サイズ比例部分)とオーバーヘッド(定数部分)を計算すると以下のようになります.
VME PIO 転送速度 1.52 MB/sec
VME PIO オーバーヘッド 36 usec
VME DMA 転送速度 13.7 MB/sec
VME DMA オーバーヘッド 970 usec

データバッファ性能

256MB のデータを固定サイズのパケットに分割し,256kB のバッファを使って転送して,所要時間を計ります.以下のグラフは,各パケットサイズに対して,パケットあたりの所要時間と,256MB の転送に要した時間から計算した処理速度です.
パケットサイズ 1kB から 50 kB の範囲を直線でフィットして,データ転送自体の速度(サイズ比例部分)とオーバーヘッド(定数部分)を計算すると以下のようになります.
データバッファ転送速度 128.3 MB/sec
データバッファオーバーヘッド 58.3 usec

読み出しスクリプトオーバーヘッド

VME のインタラプタからの割り込みでメモリモジュール2枚から DMA でデータを読むという処理を, デバイスドライバに直接アクセスする C のネイティブコードと,スクリプトでコントロールされる tinykinoko でそれぞれ行ない,割り込み要求からDMA開始までの時間を比較することにより,スクリプトのオーバーヘッドを見積ります.使用したプログラムとスクリプトは以下のものです.
ドライバに直接アクセスするCのネイティブコード: driver-performance-test.c
tinykinoko で使用する読み出しスクリプト: ScriptPerformenceTest.kts
時間の計測は,VMEのバックプレーンに直接接続したロジックアナライザを用いて行ないました. 割り込み要求のタイミングは IRQ ラインで,DMA の開始は LWORD ラインで読み取ります. 以下のは時間計測のときのロジックアナライザの画面です.IRQ3でトリガをかけています.画面の右半分で DMA 転送をしていることが読み取れます.
Page-1 拡大 Page-2 拡大
計測結果を以下に示します(全て手動での計測のためデータ数が少なくなっています). 計測値は,システムの割り込み応答処理の時間に加え,DMA開始処理の時間も含んでいることに注意してください.
これより,それぞれのアクセス方法での平均所要時間は以下のようになります.
ドライバ直接アクセス 146.5 usec
スクリプト経由 293.5 usec
単純にこれらの差をとってスクリプトのオーバーヘッドとすると,これは以下のように計算されます.
スクリプトオーバーヘッド 147.0 usec

まとめ

Pentium II 450MHz, 256MB Memory, Linux 2.4.18, KiNOKO 1.0.13 (RC1)
VME PIO 転送速度 1.52 MB/sec
VME PIO オーバーヘッド 36 usec
VME DMA 転送速度 13.7 MB/sec
VME DMA オーバーヘッド 970 usec
データバッファ転送速度 128.3 MB/sec
データバッファオーバーヘッド 58.3 usec
スクリプトオーバーヘッド 147 usec

Edited by: Enomoto Sanshiro