[#37892] 配列の重複検出用Hashの使いまわし — wanabe <s.wanabe@...>
ワナベと申します。
[#37898] [Bug #1105] Ruby1.9でのrescue節の例外ハンドラのマッチの処理 — Tatsuji Kawai <redmine@...>
Bug #1105: Ruby1.9でのrescue節の例外ハンドラのマッチの処理
[#37910] [Bug:1.9] lack consistency in hash iteration — Yusuke ENDOH <mame@...>
遠藤です。
まつもと ゆきひろです
[#37918] [BUG: 1.9] encoding warning — SASADA Koichi <ko1@...>
ささだです.
[#37921] [Feature:trunk] with_index_from — Yusuke ENDOH <mame@...>
遠藤です。
At Thu, 5 Feb 2009 23:18:49 +0900,
遠藤です。
At Fri, 6 Feb 2009 00:58:59 +0900,
[#37936] zombie processes by drb tests — Tanaka Akira <akr@...>
OpenBSD で、test-all をすると、drb のところで、テストに 100
咳といいます。
[#37956] proposal: Module#method_adding — SASADA Koichi <ko1@...>
ささだです.
[#37959] [Bug:trunk] I can modify literals — Yusuke ENDOH <mame@...>
遠藤です。
[#37980] Re: [ruby-changes:10687] Ruby:r22250 (trunk): * iseq.c (simple_default_value): allow plain strings as default — SASADA Koichi <ko1@...>
ささだです.
[#37995] Add POSTARG support to rb_scan_args() — Akinori MUSHA <akinori.musha@...>
rb_scan_args()をPOSTARG対応にするパッチです。
[#37998] [Feature:1.9] {Array,Enumerable}#uniq_by, #uniq_by! — Nobuyoshi Nakada <nobu@...>
なかだです。
[#38005] Is URI.decode() broken? — MOROHASHI Kyosuke <moronatural@...>
もろはしです。いつもお世話になっております。
なかだです。
成瀬です、
xibbarこと藤岡です。
成瀬です。
NARUSE, Yui さんは書きました:
成瀬です。
(2009年03月03日 22:45), NARUSE, Yui さんは書きました:
成瀬です。
In article <4A9E44DD.6050706@airemix.jp>,
成瀬です。
小崎@思いつきを適当に書いてみるテスト
In article <20090907091830.2C7A.A69D9226@jp.fujitsu.com>,
> In article <20090907091830.2C7A.A69D9226@jp.fujitsu.com>,
2009/09/07 14:38, Tanaka Akira wrote:
In article <4AA5EA67.1040504@airemix.jp>,
[#38007] [Feature #1159] StringScanner に文字ベースでのインデックスを返すメソッドがほしい — Akira Matsuda <redmine@...>
Feature #1159: StringScanner に文字ベースでのインデックスを返すメソッドがほしい
[#38018] circular require in openssl — Tanaka Akira <akr@...>
以下のように、openssl には環状の require があり、警告が出ます。
In article <87vdrcul7y.fsf@fsij.org>,
まつもと ゆきひろです
In article <E1LYyoE-0005P0-Hi@x61.netlab.jp>,
[#38022] ENCODING_FIXED と ENCODING_NONE の廃止 — "NARUSE, Yui" <naruse@...>
成瀬です。
In article <49986A0A.5060602@airemix.jp>,
成瀬です。
In article <49995412.6040000@airemix.jp>,
[#38048] Add option hash support to rb_scan_args() — "Akinori MUSHA" <knu@...>
rb_scan_args() にoption hash対応を組み込むのはどうでしょうか。
[#38067] Re: [ruby-cvs:29304] Ruby:r22086 (trunk): * ruby.c (process_options): set initial default_external before -r. — "Yugui (Yuki Sonoda)" <yugui@...>
Yuguiです。
[#38075] [Bug #1198] corrupted iteratoin during "enum_for :inject" — Shyouhei Urabe <redmine@...>
Bug #1198: corrupted iteratoin during "enum_for :inject"
[#38080] [Feature:trunk] nested loop construct — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
ささだです.
[#38096] 多重代入やメソッド引数の展開でto_aが呼ばれます — nagachika <nagachika00@...>
nagachika と申します。
前田です。
まつもと ゆきひろです
前田です。
In article <704d5db90907141754p285e6e51xdd3208b27d556906@mail.gmail.com>,
[#38098] ブロック引数と括弧・引数なしsuper — Shugo Maeda <shugo@...>
前田です。
まつもと ゆきひろです
[ruby-dev:38060] [Bug:1.9] thread switch when heavy load
マシンの負荷が高いときに、マルチスレッドプログラムの処理が進
まないことがあります。
以下のプログラムはパイプに 1秒毎に "a" を書き込んで、それを
他のスレッドから sysread で読み出して、読み出しにかかった時
間を表示するものです。
% cat /etc/debian_version
4.0
% uname -a
Linux nute 2.6.18-6-486 #1 Fri Dec 12 16:18:30 UTC 2008 i686 GNU/Linux
% ruby -ve '
p $$
r, w = IO.pipe
Thread.new {
begin
t1 = Time.now
loop {
s = r.sysread(10)
t2 = Time.now
p [t2-t1, s]
t1 = t2
}
ensure
p $!
end
}
loop { w.write "a"; sleep 1 }
'
ruby 1.9.2dev (2009-02-15 trunk 22328) [i686-linux]
16259
[1.5086e-05, "a"]
[1.001370774, "a"]
[1.004141531, "a"]
[1.004539908, "a"]
[1.003810203, "a"]
[1.003755167, "a"]
[1.004224783, "a"]
[1.003889822, "a"]
[1.004372847, "a"]
[2.163765927, "a"]
[15.54612696, "a"]
[1.009049164, "a"]
[1.002022536, "a"]
...
ここで、だいたいは読み出しは 1秒で行われます。これは 1秒毎に
書き込むので期待される挙動です。
しかし、ひとつ 15秒以上かかっているところがあります。
これは、このタイミングで他の端末から以下のように負荷をかけた
結果です。
% ruby -e 'loop {}'
この負荷を ^C で終わらせた後はふつうに進み出します。
負荷をかけた結果、少なくとも書き込み側のスレッドの処理が進ま
なくなっています。
(読み出し側が止まっているのでないことは、負荷を取り除いた後
に表示される "a" の数がひとつであることからわかります。もし
読みだし側だけが進まなくなっているのであれば、15個とかもっと
たくさん表示されるはずです。)
それならなにをしてんのか、ということで strace すると、
くりかえし sched_yield() してるようです。
% strace -p 16259
Process 16259 attached - interrupt to quit
sched_yield() = 0
sched_yield() = 0
sched_yield() = 0
sched_yield() = 0
sched_yield() = 0
sched_yield() = 0
sched_yield() = 0
sched_yield() = 0
sched_yield() = 0
sched_yield() = 0
...
少なくとも、OS が ruby に処理を進める機会をまったく与えてく
れないというわけではないようです。
しかし実際には処理が進まないのでこの挙動は嬉しくありません。
で、以下の疑問があるんですが、どうなんでしょうか。
* この挙動はどの OS で起こるのか
* ruby と GNU/Linux のどちらが問題なのか (あるいは両方か)
あと、ここでテストしたマシンはシングルプロセッサです。マルチ
プロセッサ (マルチコア) だと、再現するのに負荷を増やす必要が
あったりするかもしれません。
なお、容易に予測されることですが、1.8 では問題ありません。
--
[田中 哲][たなか あきら][Tanaka Akira]