2006-12-23

Solarisの周期処理のジッタ測定

さて、実時間の測定方法を押さえたところでSolarisの周期処理のジッタ測定をやってみる。

周期の作り方はnanosleepによるウェイトを利用したものと、setitimerによるシグナルを使ったもの。JDS上でxmmsを実行している、というかなりラフな負荷状態で、10/15/17/20msの周期処理を1000回繰り返した結果が以下の表(単位はすべてms)。

nanosleep
周期(=目標値)平均 標準偏差 最小 最大
10
15.4782 4.91366 10.002 20.8937
15
20.0454 1.21523 15.4322 56.6567
17
20.013 0.303867 18.8926 26.6976
20
28.4769 3.5365 20.0017 33.5873


itimer
周期(=目標値)平均 標準偏差 最小 最大
10
10 0.695859 6.40657 13.4345
15
15.0299 5.01306 6.96788 32.863
17
17.0228 4.80681 6.43815 32.7525
20
20 1.25318 7.29573 32.7424


統計からは見えてこないけど、いずれの測定でもスレッドの起床周期はタイマ割り込み周期である10msに丸められているようだ。ただ、setitimerの測定平均値が狙い値に近いことをみてもわかるように、この丸めは累積しないようになっている。

まあ、普通はsetitimerでいいのかなあ… ただ、タイマ割り込み周期の倍数にならない周期を使いたい場合は適不適が分かれそう。1/30sごとの処理とかしたいんだけどなあ…

0 件のコメント: