[前][次][番号順一覧][スレッド一覧][生データ]

yarv-dev:637

From: Shiro Kawai <shiro lava.net>
Date: Sat, 01 Oct 2005 16:26:29 -1000 (HST)
Subject: [yarv-dev:637] Re: check interrupt timing

From: SASADA Koichi <ko1 atdot.net>
Subject: [yarv-dev:629] check interrupt timing
Date: Fri, 30 Sep 2005 20:41:18 +0900

>  で、その監視のタイミングなのですが、rb_eval() (今の Ruby 評価機)では
> node ごとにチェックしているが、チェックの間隔が短すぎるとオーバヘッドが
> 大きくなるし、長すぎる(もしくはチェックしないタイミングが任意に引き伸ば
> せる)とスレッドスケジューリングが

オーバヘッドは
 (1) 現在のVMが時間を使いきったかどうかのフラグチェック
 (2) 待ちスレッドが無い状態でmutex_unlock/lockを行うこと

の2つがあると思うのですが、(1)に関してはよっぽどVMの性能が良くない
限り問題にならないのではないかと思います。GaucheでもVM instruction
毎にシグナルとファイナライザのためにフラグをチェックしていますが
これを省いて性能測定してみても差はほとんど出ませんでした。
なので、フラグチェックに関しては細粒度でやっていいんじゃないかと
思います。

(2)の方は多分深刻で、シングルスレッドアプリであるにもかかわらず
タイムスライス毎にmutex_unlock/lockを呼ぶのは相当なオーバヘッドに
なると思いますが、「待ちスレッドがあるかないか」だけをmutexの操作
無しでチェックできれば回避できるんじゃないでしょうか。

--shiro

--
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]

       629 2005-09-30 20:41 [ko1 atdot.net       ] check interrupt timing                  
       630 2005-09-30 21:07 ┣[ko1 atdot.net       ]                                       
->     637 2005-10-02 11:26 ┗[shiro lava.net      ]                                       
       639 2005-10-02 18:24  ┗[ko1 atdot.net       ]