[ruby-list:49259] Re: シングルコアでのthread動作

From: OOTANI TAKASHI <tksotn@...707.to>
Date: 2013-03-06 12:11:39 UTC
List: ruby-list #49259
大谷です。

そちらでも再現ということで安心しました。
「時々再現」
ということですが、こちらではシングルコアだと、必ず再現します。
VirtualBoxとVMwareで多少現象が違うんですかね。
シングルコアの実マシンでも試してみたいけど、身の回りには無いです。
(古いPCはあるけど多分最新のLinuxは動かない)

よろしくお願いします。

From: SASADA Koichi <ko1@atdot.net>
Subject: [ruby-list:49243] Re: シングルコアでのthread動作
Date: Sat, 2 Mar 2013 12:57:41 +0900
> ご指摘ありがとうございます。
> 
> 実は、私の環境(VirtualBox VM + Ubuntu)でも時々再現しているんですが、実
> マシンとかでは再現しないんですよね。ということで、ticket 化しようと思い
> ます。シングルコアがキモなのかなぁ。
> 
> リリース前に、デバッガで少しおったのですが、ちょっと追い切れなかったとい
> う感じです。ううむ。
> 
> (2013/02/28 23:05), OOTANI TAKASHI wrote:
> > 大谷です。
> > 
> > Ruby2.0p0ですが、make test が終わらない!
> > 
> > ここの部分で引っかかっているようです。
> > assert_equal 'true', %{
> >   t = Thread.new { loop {} }
> >   begin
> >     pid = fork {
> >       exit t.status != "run"
> >     }
> >     Process.wait pid
> >     $?.success?
> >   rescue NotImplementedError
> >     true
> >   end
> > }
> > 
> > 少し変えて、
> >   t = Thread.new { loop {sleep 1} }
> > にすると終わります。これで、気づいたのですが、
> > 使っているのはVMwareの仮想マシン上のCentOS6.3なのですが、
> > CPUが1コアの設定でした。
> > おそらく loop {} がCPUを使うのでメインスレッドが(ほとんど)動かないのだと思います。
> > ・仮想マシンの設定を変えて2コアにすると終わる
> > ・1コアでも一晩放置すると終わる(約6時間かかってました)
> > 
> > なぜ1.9.3と挙動が違うのでしょうか?ネイティブスレッドへの変更は1.9からですよね?
> > 2.0と1.9.3でそれぞれ何度かずつ試してみたので、たまたまでは無いと思うのですが。
> > 
> 
> 
> -- 
> // SASADA Koichi at atdot dot net
> 
> 

-- 
OOTANI TAKASHI <tksotn@mail.707.to>


In This Thread