[#39954] Fwd: [ruby-cvs:33451] Ruby:r26235 (trunk): * trace.h: new file. wraps tracing mechanisms. — SASADA Koichi <ko1@...>

 ささだです.

16 messages 2010/01/04
[#39957] Re: Fwd: [ruby-cvs:33451] Ruby:r26235 (trunk): * trace.h: new file. wraps tracing mechanisms. — Yugui <yugui@...> 2010/01/04

2010/1/4 SASADA Koichi <ko1@atdot.net>:

[#39959] Re: Fwd: [ruby-cvs:33451] Ruby:r26235 (trunk): * trace.h: new file. wraps tracing mechanisms. — SASADA Koichi <ko1@...> 2010/01/04

 ささだです.

[#39975] [Feature #2571] 文字列のハミング距離 — Kenta Murata <redmine@...>

Feature #2571: 文字列のハミング距離

14 messages 2010/01/07

[#39978] "require 'logge'" fails on ruby 1.8.7 from http://github.com/shyouhei/ruby — MOROHASHI Kyosuke <moronatural@...>

諸橋です。

7 messages 2010/01/07

[#40004] [Bug:trunk] require_relative depends on current directory — Yusuke ENDOH <mame@...>

遠藤です。

13 messages 2010/01/09

[#40074] [Bug #2603] NetBSD 5.0以降でpthreadの処理に由来する不具合 — Takahiro Kambe <redmine@...>

Bug #2603: NetBSD 5.0以降でpthreadの処理に由来する不具合

29 messages 2010/01/14
[#40086] Re: [Bug #2603] NetBSD 5.0以降でpthreadの処理に由来する不具合 — f-miura@... (MIURA, Fumiaki) 2010/01/14

NTTレゾナントの三浦です。不完全なpatchを書いてすみません。

[#40088] Re: [Bug #2603] NetBSD 5.0以降でpthreadの処理に由来する不具合 — Takahiro Kambe <taca@...> 2010/01/14

こんばんは。

[#40091] Re: [Bug #2603] NetBSD 5.0以降でpthreadの処理に由来する不具合 — KOSAKI Motohiro <kosaki.motohiro@...> 2010/01/15

kosakiです

[#40092] Re: [Bug #2603] NetBSD 5.0以降でpthreadの処理に由来する不具合 — Takahiro Kambe <taca@...> 2010/01/15

こんにちは。

[#40077] [Bug #2604] test_dsa_sign_verify() in test/openssl/test_ec.rb failes — Takahiro Kambe <redmine@...>

Bug #2604: test_dsa_sign_verify() in test/openssl/test_ec.rb failes

11 messages 2010/01/14

[#40153] [Bug:trunk] three bugs of Matrix::Scalar — Yusuke ENDOH <mame@...>

連投すみません。

19 messages 2010/01/25
[#40184] Re: [Bug:trunk] three bugs of Matrix::Scalar — keiju@... (石塚圭樹) 2010/01/27

けいじゅ@いしつかです.

[#40189] Re: [Bug:trunk] three bugs of Matrix::Scalar — Yusuke ENDOH <mame@...> 2010/01/27

遠藤です。

[#40191] Re: [Bug:trunk] three bugs of Matrix::Scalar — keiju@... (石塚圭樹) 2010/01/27

けいじゅ@いしつかです.

[#40224] Re: [Bug:trunk] three bugs of Matrix::Scalar — Yukihiro Matsumoto <matz@...> 2010/01/28

まつもと ゆきひろです

[#40162] [Bug #2658] rubyspec: Ruby character strings interpolates the return value of Object#inspect, without ivars, if Object#to_s does not return a String instance ERROR — Yusuke Endoh <redmine@...>

Bug #2658: rubyspec: Ruby character strings interpolates the return value of Object#inspect, without ivars, if Object#to_s does not return a String instance ERROR

8 messages 2010/01/26
[#40163] Re: [Bug #2658] rubyspec: Ruby character strings interpolates the return value of Object#inspect, without ivars, if Object#to_s does not return a String instance ERROR — Tanaka Akira <akr@...> 2010/01/26

2010年1月26日20:39 Yusuke Endoh <redmine@ruby-lang.org>:

[#40168] [Bug #2662] BigDecimal#ceil, etc. should not return Integer — Yusuke Endoh <redmine@...>

Bug #2662: BigDecimal#ceil, etc. should not return Integer

10 messages 2010/01/26

[#40200] [Feature #2673] the length for an enumerator generated by Array#permutation and Array#combination — Kenta Murata <redmine@...>

Feature #2673: the length for an enumerator generated by Array#permutation and Array#combination

14 messages 2010/01/28

[#40221] [Bug:trunk] rubyspec: SimpleDelegator when frozen creates a frozen clone ERROR — Yusuke ENDOH <mame@...>

まつもとさん、または lib/delegator.rb についてわかる誰か

13 messages 2010/01/28

[#40265] MonitorMixin::ConditionVariable#wait timeout — Tanaka Akira <akr@...>

手元の Ubuntu 9.10 の環境で Ruby 1.9.2 を make test-all すると

38 messages 2010/01/30
[#40326] Re: MonitorMixin::ConditionVariable#wait timeout — Shugo Maeda <shugo@...> 2010/02/05

前田です。

[#41155] Re: MonitorMixin::ConditionVariable#wait timeout — Yusuke ENDOH <mame@...> 2010/05/05

前田さん、akr さん

[#41157] Re: MonitorMixin::ConditionVariable#wait timeout — Tanaka Akira <akr@...> 2010/05/05

2010年5月5日9:32 Yusuke ENDOH <mame@tsg.ne.jp>:

[#41158] Re: MonitorMixin::ConditionVariable#wait timeout — Yusuke ENDOH <mame@...> 2010/05/05

遠藤です。

[#41159] Re: MonitorMixin::ConditionVariable#wait timeout — Tanaka Akira <akr@...> 2010/05/05

2010年5月5日11:46 Yusuke ENDOH <mame@tsg.ne.jp>:

[#41160] Re: MonitorMixin::ConditionVariable#wait timeout — Yusuke ENDOH <mame@...> 2010/05/05

遠藤です。

[#41182] Re: MonitorMixin::ConditionVariable#wait timeout — Tanaka Akira <akr@...> 2010/05/06

2010年5月5日13:22 Yusuke ENDOH <mame@tsg.ne.jp>:

[#41183] Re: MonitorMixin::ConditionVariable#wait timeout — Yusuke ENDOH <mame@...> 2010/05/06

遠藤です。

[#41186] Re: MonitorMixin::ConditionVariable#wait timeout — Tanaka Akira <akr@...> 2010/05/06

2010年5月6日19:58 Yusuke ENDOH <mame@tsg.ne.jp>:

[#41205] Re: MonitorMixin::ConditionVariable#wait timeout — Yusuke ENDOH <mame@...> 2010/05/06

遠藤です。

[#41207] Re: MonitorMixin::ConditionVariable#wait timeout — KOSAKI Motohiro <kosaki.motohiro@...> 2010/05/06

2010年5月6日23:08 Yusuke ENDOH <mame@tsg.ne.jp>:

[#41208] Re: MonitorMixin::ConditionVariable#wait timeout — Tanaka Akira <akr@...> 2010/05/06

2010年5月6日23:15 KOSAKI Motohiro <kosaki.motohiro@gmail.com>:

[#41245] Re: MonitorMixin::ConditionVariable#wait timeout — Yusuke ENDOH <mame@...> 2010/05/10

遠藤です。

[#41252] Re: MonitorMixin::ConditionVariable#wait timeout — KOSAKI Motohiro <kosaki.motohiro@...> 2010/05/10

kosakiです

[#41255] Re: MonitorMixin::ConditionVariable#wait timeout — Yusuke ENDOH <mame@...> 2010/05/10

遠藤です。

[#41256] Re: MonitorMixin::ConditionVariable#wait timeout — Masaya TARUI <tarui@...> 2010/05/10

樽家です。

[#40269] [Feature #2695] Supported Platforms — Kazuhiro NISHIYAMA <redmine@...>

Feature #2695: Supported Platforms

17 messages 2010/01/31
[#40760] [Feature #2695] Supported Platforms — Yusuke Endoh <redmine@...> 2010/03/25

チケット #2695 が更新されました。 (by Yusuke Endoh)

[ruby-dev:39959] Re: Fwd: [ruby-cvs:33451] Ruby:r26235 (trunk): * trace.h: new file. wraps tracing mechanisms.

From: SASADA Koichi <ko1@...>
Date: 2010-01-04 10:25:32 UTC
List: ruby-dev #39959
 ささだです.

 説明,ありがとうございます.

(2010/01/04 17:09), Yugui wrote::
> OSX付属のruby(1)およびMacRubyのdtraceサポートを参考に、Rubyの各所に対して
> アプリケーションを実行時にトレースするための観測点を埋め込みました。
> 観測点は結局set_trace_funcのものと重なる物も多く、そういったものはVMのtrace命令
> の実装の中に埋め込んであります。その他は観測点は全体に散らばっています。

 trace 命令を必要なときに埋め込むようにする,という話もあったりなかった
りしますが,その辺とバッティングしないだろうか.埋め込む API が明確化さ
れればいいか.

> ruby.hの変更は2点です。オブジェクトの生成というのは是非トレースしたいタイミングですが、
> 生成されるオブジェクトのVALUE値およびクラスを確実に知ることのできるタイミングはOBJSETUPしかありません。
> そこでOBJSETUPに観測点を追加しました。

 我々が研究で作っているプロファイラでは,OBJSETUP でのタイミングでは必
要な情報が取れない,ということで,次善策をとることにしました.これは,今
作業中なので詳細は略.

 でも,やりたいことはこれで全部出来るのかなぁ.

> 次に、殆どの場合は観測点は有効化されていないと考えられるので、このことをコンパイラに知らせるために
> 従来VMで使用していたLIKELYとUNLIKELYのようなものが必要でした。OBJSETUPの必要な場所ではUNLIKELY
> が必要になる可能性があるわけですから、ruby.hに書くのが適切です。そこでVMからruby.hに両マクロの定義を移動させました。

 LIKELY,UNLIKELY はたしか Linux のソースから取ったような気がするんです
が(Binary Hacks で読んだんだっけ),十分に一般的な名前なんでしょうか.
私がこれを導入したときは,VM の中だけだから,まぁいっかぁ,とあまり考え
ずに使いました.

 これを,全 C拡張ライブラリ開発者が使えるようにするためには,もう少し議
論が必要な気もします.が,杞憂でしょうか.個人的には,もう少しわかりやす
い名前がいいと思うのですが.例えば,分からない人がてきとーに書いちゃう不
安はないでしょうか.

>> この辺の狙いを教えて頂けないでしょうか.変更をあんまり読めていないので
>> すが,そもそも,Ruby のトレースまわりを全部書き換えちゃったりするんで
>> しょうか.
> 
> 狙いは、Rubyアプリケーションの実行時に、アプリケーションを改変することなく外部から状態を計測することです。

 「DTrace を持つ環境下では」で,一般的な話じゃないですよね.これから
DTrace が一般的になっていくのかもしれませんが,現在はそうじゃないわけで.

> 今回、まずは非有効時のオーバーヘッドが少ない技術としてdtraceの上に実装してみましたが、
> dtraceべったりではないので他のメカニズムも実装すれば、configure時に選択可能です。
> usaさんからwindowsだとETWもありえるという指摘をいただきました。
> traceやprobeのような一般的な名前はdtraceべったりでなくした結果です。

 まず,標準の probe ライブラリとするためには,

(1) probe の挿入点の妥当性の検証
(2) probe の挿入点の名前の検証
(3) 実装方法の検証

が必要かと思います.(1)〜(3) まで,どれもまだという認識でいいでしょうか.

 コミットされないと検証もままならない,という意見があるかと思います.

 個人的には,(3) 実装方法に関して,の DTrace 依存が当分外れることはない
と思うので,標準的な名前になることに違和感があります(私が普段使う環境に
はないし).(1),(2),および (3) の詳細に関しては,まだよく見てません.

 DTrace のサポートを受けることが出来るようにすることは,意味があると思
います.ただ,それなら (a) DTrace 専用であることを謳う(Win32OLE みたい
に,専用ぽくする) (b) gem で標準っぽいものを作って試行錯誤し,標準添付
を狙う,なんて方針もあるんじゃないかと思います.

 あと,set_trace_func の挙動が rescue もひっかけるようになってしまって
変わってしまったということを IRC で聞きました.この辺の挙動の変更は,今
回の話とは直接関係なさそうですから,別途議論したほうがいいのではないで
しょうか.多分,増えて困る人はあまり居ないと思いますが.


>> あと,出来ればベンチマーク結果があると嬉しいかも(prove を刺さない状態
>> での).
> 
> あー、計ってからコミットしようと思っていて忘れてました。やってみました。添付します。 (wo_w-dtrace.log)
> リビジョン番号が新しいほうがdtraceを入れたやつです。
> 
> なお、意外にオーバーヘッドが大きいように見えました。特に命令をひたすら繰り返す系統が遅いので、試しにYARV命令ごとのトレースを削除して再度計ってみました。
> そちらがwo_w-dtrace2.logになります。他のトレースメカニズムを取り入れると、もっとオーバーヘッドが大きいことも考えられますし、
> 命令ごとのトレースはデフォルトで無効にしたほうが良いかも知れませんね。

 命令ごとのトレースもあるんですね.短い命令は数語なので,いくら分岐予測
が働いたとしても,3 命令のオーバヘッドは大きいのかもしれません.

 あと,ベンチマーク1回だけの実行は擾乱が大きいので,5 回くらいやっても
らうといいかもしれません.

  $ make benchmark COMPARE_RUBY='before:: [before path]' OPTS='-r 5'

みたいな.

-- 
// SASADA Koichi at atdot dot net

In This Thread