[Armadillo:04072] Armadillo-220 でのsetitimer

nakamura email@hidden
2009年 3月 2日 (月) 16:46:52 JST


中村と申します。

Armadillo-220で、setitimer()で次のような現象がでています。
このような現象について、何か情報をお持ちの方はいらっしゃいますか?

●現象
10〜19msecを指定すると30msec間隔でシグナル発生。
20〜29msecを指定すると40msec間隔でシグナル発生。
30〜39msecを指定すると50msec間隔でシグナル発生。
...
100〜109msecを指定すると120msec間隔でシグナル発生。
110〜119msecを指定すると130msec間隔でシグナル発生。
...
と、指定した時間[msec](を10で切り捨てた値)より20msec多い時間間隔で
SIGALRMが発生するようです。

100msecがほしいときには80(〜89)msecを指定すれば目的は達せられるのですが、
なんとも気持ちが悪いので、もし原因がわかれば・・・、と思い、
投稿させていただきました。

同じプログラムを開発環境であるATDE2(Debian)や他のLinuxマシン(CentOS)で
動かしても、このようなことはおきません。

●タイマのセット(interval:msec)
  it.it_value.tv_usec = interval * 1000;
  it.it_value.tv_sec = 0;
  it.it_interval.tv_usec = interval * 1000;
  it.it_interval.tv_sec = 0;
 setitimer(ITIMER_REAL, &it, NULL);

●シグナルハンドラの処理:
  gettimeofday(&tv[count++], NULL);

なお、シグナルハンドラは sigaction(SIGALRM, ...) でセットしています。

使用しているカーネルとユーザランドは、
 linux-2.6.12.3-a9-15
 atmark-dist-20080717
です。

MLのアーカイブを検索してみたところ、[Armadillo:03136]で
http://lists.atmark-techno.com/pipermail/armadillo/2008-July/003136.html
| インターバル時間を10msecに設定し実行してみたところ、
| インターバル時間が約3倍になっているようなのです。

というものがありましたが、他にはこれといった情報は見つかりませんでした。
(この方の"10msecの3倍"というのが、私の10msecのときと同じと言えば
同じなのですが、この方が他の時間を指定したときのことは書いてないです)

よろしくお願いいたします。

-- 
なかむら





armadillo メーリングリストの案内