DMA speed of Bit3 617 using HSM 8170 on various conditions
64 kB のブロックを DMA 転送するのに要する正味の時間(※)を
色々な条件下で測定したものです。
解釈については下の説明を御覧ください。
共通する条件は、ランダムパルサーを使って、
イベント当り 57 ワード
(16 ビット) のデータを FERA バスから書き込んでいる事です。
-
ダブルバッファにしているので、
計数率が上がると DMA 転送速度が遅くなります。
HSM 内のメモリに対して、
FERA バスからの書き込みは、
VME バスからのアクセスより優先する為です。
-
データを I/O へ書き込ませると、
PCI バスの取り合いが起こり、
DMA 転送が待たされる事が予想されますが、
ネットワーク経由で他のマシンのハードディスクに書き込む場合は、
速度の低下がほとんど見られません。
一方、ローカルのハードディスク (IDE) に書き込むと、
ある確率で転送の遅れが発生するようです。
SCSI ハードディスクは、
マシンに SCSI カードを刺す余裕が無い
(スロットが一杯な) ので、テストしていません。
※
DMA 転送はユーザープロセスから起動しているので、
システムの負荷が上がると、
タスク切り替えによる DMA 起動の遅延が起ります。
Linux の場合、
最短のタスク切り替え時間
(一旦他のプロセスに主導権が移ってから自分に戻ってくるまでの時間)
は 10 msec なので、
上記で問題にしている時間より非常に長いのですが、
ダブルバッファにしている為、
通常はデータ収集速度に影響を与えません。
しかし、DMA の起動が極端に遅れた結果、
DMA 転送中に HSM 8170 の (次の) バッファフルが起った場合には、
VME バスからの割り込みより DMA が優先される為、
HSM のポインタ切り替え処理が後回しとなり、
従って
データ収集の停止 (BUSY VETO) 時間が増大する事になります。
これが起こるのは、
非リアルタイム OS である Linux システムを、
しかも汎用用途で使いながらデータ収集をさせる事に原因が有ります。
データ収集性能の上限を規定する一つの要因となる訳ですが、
通常の使用環境では、
DMA の遅延が頻繁に起こる以前に他の部分が律速になると
(何となく)思っています。