Linux での高精度タイミング
国立研究開発法人 情報通信研究機構 時空標準研究室
				Last update: 2007/08/02
一般のPCを使って、ジッタ 37ns (標準偏差)でパケット到着時刻を計測するためのテクニックを紹介します。
  - Linuxの時刻管理
  
    - Linux 2.4.27
 システムクロックの分解能はマイクロ秒。
- Linux 2.6.21
 POSIX対応が進み、
					システムクロックの分解能がナノ秒となり、
					複数のクロック源を利用するようになっている。
					更に、SMPやDynamic CPU clockに対応するために、HPETの準備が進められている。
 
- 水晶の置換
 PCに標準で搭載されている水晶は温度変化が激しく、
					起動時(常温)にキャリブレーションしても、
					使用中(40℃以上にも)には100ppm以上ズレることもあるので、
					より精度の高い発振子に換装する。
 Cs < Rb < OCXO < TCXO < XO
- 時刻取得関数
 RDTSCをベースにした nst_gettai()関数を公開中。
- 時刻取得の位置
 イベントの近くで取得する。
					例えば、ネットワークパケット受信時なら、
 割込みハンドラ < デバイスドライバ < ユーザランド
- リソース競合
  
    - 不要プロセスの停止
    
- バッファフラッシュのインターバル調整
    
- 競合検知
  
 
- ハードウェア依存
  
    - ノースブリッジとサウスブリッジ
    
- バスクロック
    
- CPUクロックのSpread Spectrum
    
- 省電力モード
    
- マルチプロセッサシステム
    
- NICコントローラと「まとめ割込み」
  
 
詳しくは、論文をご覧ください。
また、本技術をNSTクライアントに実装し、ライブラリを公開しています。