2013年4月5日金曜日

Windowsでのリアルタイム処理(2)


昨日に引き続き、Windowsでのリアルタイム処理をテストしてみた。

今回のテスト環境は
 CPU Core-i3-2330M
  メモリ 4ギガ
 Windows7 Ultimate 64bit版 ServicePack1
 開発環境 VisualStudio 2008

ソースは変更せず、こちらの環境で再ビルドを行い実行してみた。

下図はバックグラウンドでファイルコピーを行いながら、500マイクロ秒周期での呼び出しができているかを確認している状態を示している。




ほぼ500マイクロ秒で動いているが、途中1600マイクロ秒(1.6ミリ秒)、793マイクロ秒などがちらほら出現している。

※ ディスクコピーを行っていない状態では、500マイクロ秒近辺で安定している。
 
昨日の結果から、単純にハードウェア(CPU)のパフォーマンスによる差だけではなさそう。
CPU使用率が100%に達していないため、強制的にタスク切り替えなどが発生し、そのための遅延のような気がする。


WindowsのOS内部まで入り込んで、リアルタイム制御を実行するというものもあるが、そこまでシステムに入り込まなくても、ある程度リアルタイムを実行できる方法はないものだろうか ・・・

もう少し調査してみよう。

1 件のコメント:

  1. このブログを書いて久しくなるが、先日某業務でこのからくりを実装してみた。
    (VC++2008 ExpressでbackGroundWorker部に実装)

    PCはCore-i7(4CPU、8スレッド)だったため、全体の負荷を考えても1スレッドくらい100%になっても問題なさそうだった。

    12mS周期でCANデータ送信という必要があったが、1秒間で送信したデータ数が約83個(1000/12)で安定していた。
    ジッタまでは計測できていないが、これなら今回のシステムに問題なさそう。

    その後、お客様のところで無事にシステム稼働中です。
    なかなか使えるからくりでした。

    返信削除