From: keiju@... (=?ISO-2022-JP?B?GyRCQFBETTc9PHkbKEI=?=) Date: 2008-11-18T18:58:10+09:00 Subject: [ruby-dev:37111] Re: ruby1.9 segmentation fault --Multipart_Tue_Nov_18_19:02:41_2008-1 Content-Type: text/plain; charset=ISO-2022-JP けいじゅ@いしつかです. In [ruby-dev :37105 ] the message: "[ruby-dev:37105] Re: ruby1.9 segmentation fault ", on Nov/17 19:23(JST) Yukihiro Matsumoto writes: >まつもと ゆきひろです >|やはり Segvして以下の感じのメッセージが出ました: >現象は同じですね。変化ないんで付加的な情報はないと思います。 いや. 再現性のある簡単なスクリプトで確かめたって話です. 添付します. 実行は: % ruby test-th-pf.rb 3 6000 の感じで実行します. 6000がスレッド数になります. >いや、ほんとにちゃんと動くのか疑問ってことです。メモリの限界 >に突き当たりそうな。実際当たってるのかもしれません。 うーん. パラメータ(njpb)を調整して調べました. スレッド数の問題よりもプロセスサイズが問題みたいです. njob=501でプロセ スサイズが3067MBだと無事実行が終了し, njob=502だとプロセスが3070MBぐら いになると動作しなくなります. ruby1.9はなかなかすばらしく, 6000スレッドでもそれなりに動作しているみ たいです. とはいえ, 個々のスレッドは対したことをやっているわけでもない ですが... >Rubyレベルではできないはずです。Cレベルはちょっとわかんない >ですね。生成する瞬間しか指定できないはずですが。 そうですか... limit値にすれば良いような気もするのですが, そう単純でも ないものです? --Multipart_Tue_Nov_18_19:02:41_2008-1 Content-Type: application/octet-stream Content-Disposition: attachment; filename="test-th-pf.rb" Content-Transfer-Encoding: quoted-printable #!/usr/local/bin/ruby # # test-th-pf.rb -=20 # $Release Version: $ # $Revision: 1.1 $ # $Date: 1997/08/08 00:57:08 $ # by Keiju ISHITSUKA # # -- # # =20 # require "benchmark" def bm(n, &block) Benchmark.bm do |bm| bm0(bm, 1, n, &block) bm0(bm, 2, n, &block) bm0(bm, 4, n, &block) bm0(bm, 8, n, &block) bm0(bm, 16, n, &block) end end def bmx(x, n, &block) Benchmark.bm do |bm| bm0(bm, x, n, &block) end end def bm0(bm, th, n, &block) bm.report("th: #{th}") do ths =3D [] th.times do |i|=20 begin ths[i] =3D Thread.start{(n/th).times(&block)} rescue NoMemoryError p $! rescue p $! end end ths.map{|th| th.join} end end case ARGV[0] when "1" N =3D 10000000 ary =3D Array.new(1000) bm(N){ary.each()} when "2" io =3D File.open("/dev/null", "a+") ary =3D Array.new(1000) c =3D "a"*100 bm(1000){ary.each{|e| io.puts c}} when "3" x =3D 100=20 x =3D ARGV[1].to_i if ARGV[1] N =3D 10000000 ary =3D Array.new(1000) bmx(x, N){sleep 10} end =20 --Multipart_Tue_Nov_18_19:02:41_2008-1 Content-Type: text/plain; charset=ISO-2022-JP __ ---------------------------------------------------->> 石塚 圭樹 <<--- ---------------------------------->> e-mail: keiju@ishitsuka.com <<--- --Multipart_Tue_Nov_18_19:02:41_2008-1--