ruby-dev (Japanese) list archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-dev:47135] [ruby-trunk - Feature #8024][Assigned] Lazy sweep を on/off するための機能
@ 2013-03-06  1:50 mrkn (Kenta Murata)
  2013-03-06  2:09 ` [ruby-dev:47136] [ruby-trunk - Feature #8024] " kosaki (Motohiro KOSAKI)
                   ` (12 more replies)
  0 siblings, 13 replies; 16+ messages in thread
From: mrkn (Kenta Murata) @ 2013-03-06  1:50 UTC (permalink / raw
  To: ruby developers list


Issue #8024 has been reported by mrkn (Kenta Murata).

----------------------------------------
Feature #8024: Lazy sweep を on/off するための機能
https://bugs.ruby-lang.org/issues/8024

Author: mrkn (Kenta Murata)
Status: Assigned
Priority: Normal
Assignee: authorNari (Narihiro Nakamura)
Category: core
Target version: 


Lazy sweep を on/off する機能を追加するパッチを作りました。
このパッチは環境変数1つと GC のモジュール関数2つを追加します。

環境変数は RUBY_GC_DISABLE_LAZY_SWEEP です。
これに 0 以外の整数を設定して ruby を実行すると、
lazy sweep が off の状態で実行されます。

GC に追加されるモジュール関数は disable_lazy_sweep と enable_lazy_sweep です。
文字通り、lazy_sweep の on/off を切り替えるために使います。

このパッチを作るに至った経緯は、Lazy sweep が on の時だけ再現する SEGV が
弊社のテストコードで発生していたからです。
SEGV の発生条件がまだ絞れていないため、残念ながらバグ報告はまだできません。

運用上 Lazy sweep を止めておく必要があっために作ったパッチですが、
他の人の役にも立つかもしれませんので、こちらで提案させて頂きます。

trunk/2.0.0 用 → https://gist.github.com/mrkn/5096076

1.9.3 用 → https://gist.github.com/mrkn/5096071


-- 
http://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ruby-dev:47136] [ruby-trunk - Feature #8024] Lazy sweep を on/off するための機能
  2013-03-06  1:50 [ruby-dev:47135] [ruby-trunk - Feature #8024][Assigned] Lazy sweep を on/off するための機能 mrkn (Kenta Murata)
@ 2013-03-06  2:09 ` kosaki (Motohiro KOSAKI)
  2013-03-06 11:24 ` [ruby-dev:47137] " mrkn (Kenta Murata)
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 16+ messages in thread
From: kosaki (Motohiro KOSAKI) @ 2013-03-06  2:09 UTC (permalink / raw
  To: ruby developers list


Issue #8024 has been updated by kosaki (Motohiro KOSAKI).


えーと、一般論としてチューニングパラメータはdisable_hogehoge とかいう否定形は好ましくないよ。間違えるから。
環境変数は RUBY_GC_ENABLE_LAZY_SWEEP のほうがよいんじゃないかな。
GC.disable_lazy_sweepも有り難みがよくわかりませんでした。


----------------------------------------
Feature #8024: Lazy sweep を on/off するための機能
https://bugs.ruby-lang.org/issues/8024#change-37322

Author: mrkn (Kenta Murata)
Status: Assigned
Priority: Normal
Assignee: authorNari (Narihiro Nakamura)
Category: core
Target version: 


Lazy sweep を on/off する機能を追加するパッチを作りました。
このパッチは環境変数1つと GC のモジュール関数2つを追加します。

環境変数は RUBY_GC_DISABLE_LAZY_SWEEP です。
これに 0 以外の整数を設定して ruby を実行すると、
lazy sweep が off の状態で実行されます。

GC に追加されるモジュール関数は disable_lazy_sweep と enable_lazy_sweep です。
文字通り、lazy_sweep の on/off を切り替えるために使います。

このパッチを作るに至った経緯は、Lazy sweep が on の時だけ再現する SEGV が
弊社のテストコードで発生していたからです。
SEGV の発生条件がまだ絞れていないため、残念ながらバグ報告はまだできません。

運用上 Lazy sweep を止めておく必要があっために作ったパッチですが、
他の人の役にも立つかもしれませんので、こちらで提案させて頂きます。

trunk/2.0.0 用 → https://gist.github.com/mrkn/5096076

1.9.3 用 → https://gist.github.com/mrkn/5096071


-- 
http://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ruby-dev:47137] [ruby-trunk - Feature #8024] Lazy sweep を on/off するための機能
  2013-03-06  1:50 [ruby-dev:47135] [ruby-trunk - Feature #8024][Assigned] Lazy sweep を on/off するための機能 mrkn (Kenta Murata)
  2013-03-06  2:09 ` [ruby-dev:47136] [ruby-trunk - Feature #8024] " kosaki (Motohiro KOSAKI)
@ 2013-03-06 11:24 ` mrkn (Kenta Murata)
  2013-03-06 15:54 ` [ruby-dev:47139] " kosaki (Motohiro KOSAKI)
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 16+ messages in thread
From: mrkn (Kenta Murata) @ 2013-03-06 11:24 UTC (permalink / raw
  To: ruby developers list


Issue #8024 has been updated by mrkn (Kenta Murata).


> GC.disable_lazy_sweepも有り難みがよくわかりませんでした。

rspec が spec ファイル群をロードするだけで10分以上かかる場合があるので、
プロセスの起動時〜specファイルロード完了までは lazy sweep は有効であって欲しくて、
begin(:suite) で GC.disable_lazy_sweep することにしています。

ですから、私の個人的なユースケースでは GC.enable_lazy_sweep は使っていません。
GC.disable / GC.enable のペアとの対称性を保つために追加してあるだけだったりします。

環境変数は起動直後からオフにしたいときに使うようにしています。
----------------------------------------
Feature #8024: Lazy sweep を on/off するための機能
https://bugs.ruby-lang.org/issues/8024#change-37328

Author: mrkn (Kenta Murata)
Status: Assigned
Priority: Normal
Assignee: authorNari (Narihiro Nakamura)
Category: core
Target version: 


Lazy sweep を on/off する機能を追加するパッチを作りました。
このパッチは環境変数1つと GC のモジュール関数2つを追加します。

環境変数は RUBY_GC_DISABLE_LAZY_SWEEP です。
これに 0 以外の整数を設定して ruby を実行すると、
lazy sweep が off の状態で実行されます。

GC に追加されるモジュール関数は disable_lazy_sweep と enable_lazy_sweep です。
文字通り、lazy_sweep の on/off を切り替えるために使います。

このパッチを作るに至った経緯は、Lazy sweep が on の時だけ再現する SEGV が
弊社のテストコードで発生していたからです。
SEGV の発生条件がまだ絞れていないため、残念ながらバグ報告はまだできません。

運用上 Lazy sweep を止めておく必要があっために作ったパッチですが、
他の人の役にも立つかもしれませんので、こちらで提案させて頂きます。

trunk/2.0.0 用 → https://gist.github.com/mrkn/5096076

1.9.3 用 → https://gist.github.com/mrkn/5096071


-- 
http://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ruby-dev:47139] [ruby-trunk - Feature #8024] Lazy sweep を on/off するための機能
  2013-03-06  1:50 [ruby-dev:47135] [ruby-trunk - Feature #8024][Assigned] Lazy sweep を on/off するための機能 mrkn (Kenta Murata)
  2013-03-06  2:09 ` [ruby-dev:47136] [ruby-trunk - Feature #8024] " kosaki (Motohiro KOSAKI)
  2013-03-06 11:24 ` [ruby-dev:47137] " mrkn (Kenta Murata)
@ 2013-03-06 15:54 ` kosaki (Motohiro KOSAKI)
  2013-03-06 19:52 ` [ruby-dev:47140] " sorah (Shota Fukumori)
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 16+ messages in thread
From: kosaki (Motohiro KOSAKI) @ 2013-03-06 15:54 UTC (permalink / raw
  To: ruby developers list


Issue #8024 has been updated by kosaki (Motohiro KOSAKI).


今後なにかあるたびに、GCにメソッドが2つづつ増えるのは非生産的なので、対称性だけが目的なら GC.enableにbool引数追加して、GC.enable_lazy_sweepもそうするってのが私の好みかなあ。すでにstressはboolean値のようだし。
ただの好みなのでむらけんさんの好みに合わないならこれ以上はプッシュしません

では。
----------------------------------------
Feature #8024: Lazy sweep を on/off するための機能
https://bugs.ruby-lang.org/issues/8024#change-37332

Author: mrkn (Kenta Murata)
Status: Assigned
Priority: Normal
Assignee: authorNari (Narihiro Nakamura)
Category: core
Target version: 


Lazy sweep を on/off する機能を追加するパッチを作りました。
このパッチは環境変数1つと GC のモジュール関数2つを追加します。

環境変数は RUBY_GC_DISABLE_LAZY_SWEEP です。
これに 0 以外の整数を設定して ruby を実行すると、
lazy sweep が off の状態で実行されます。

GC に追加されるモジュール関数は disable_lazy_sweep と enable_lazy_sweep です。
文字通り、lazy_sweep の on/off を切り替えるために使います。

このパッチを作るに至った経緯は、Lazy sweep が on の時だけ再現する SEGV が
弊社のテストコードで発生していたからです。
SEGV の発生条件がまだ絞れていないため、残念ながらバグ報告はまだできません。

運用上 Lazy sweep を止めておく必要があっために作ったパッチですが、
他の人の役にも立つかもしれませんので、こちらで提案させて頂きます。

trunk/2.0.0 用 → https://gist.github.com/mrkn/5096076

1.9.3 用 → https://gist.github.com/mrkn/5096071


-- 
http://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ruby-dev:47140] [ruby-trunk - Feature #8024] Lazy sweep を on/off するための機能
  2013-03-06  1:50 [ruby-dev:47135] [ruby-trunk - Feature #8024][Assigned] Lazy sweep を on/off するための機能 mrkn (Kenta Murata)
                   ` (2 preceding siblings ...)
  2013-03-06 15:54 ` [ruby-dev:47139] " kosaki (Motohiro KOSAKI)
@ 2013-03-06 19:52 ` sorah (Shota Fukumori)
  2013-03-07  1:42 ` [ruby-dev:47145] " mrkn (Kenta Murata)
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 16+ messages in thread
From: sorah (Shota Fukumori) @ 2013-03-06 19:52 UTC (permalink / raw
  To: ruby developers list


Issue #8024 has been updated by sorah (Shota Fukumori).


bool 値化同意します。
----------------------------------------
Feature #8024: Lazy sweep を on/off するための機能
https://bugs.ruby-lang.org/issues/8024#change-37334

Author: mrkn (Kenta Murata)
Status: Assigned
Priority: Normal
Assignee: authorNari (Narihiro Nakamura)
Category: core
Target version: 


Lazy sweep を on/off する機能を追加するパッチを作りました。
このパッチは環境変数1つと GC のモジュール関数2つを追加します。

環境変数は RUBY_GC_DISABLE_LAZY_SWEEP です。
これに 0 以外の整数を設定して ruby を実行すると、
lazy sweep が off の状態で実行されます。

GC に追加されるモジュール関数は disable_lazy_sweep と enable_lazy_sweep です。
文字通り、lazy_sweep の on/off を切り替えるために使います。

このパッチを作るに至った経緯は、Lazy sweep が on の時だけ再現する SEGV が
弊社のテストコードで発生していたからです。
SEGV の発生条件がまだ絞れていないため、残念ながらバグ報告はまだできません。

運用上 Lazy sweep を止めておく必要があっために作ったパッチですが、
他の人の役にも立つかもしれませんので、こちらで提案させて頂きます。

trunk/2.0.0 用 → https://gist.github.com/mrkn/5096076

1.9.3 用 → https://gist.github.com/mrkn/5096071


-- 
http://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ruby-dev:47145] [ruby-trunk - Feature #8024] Lazy sweep を on/off するための機能
  2013-03-06  1:50 [ruby-dev:47135] [ruby-trunk - Feature #8024][Assigned] Lazy sweep を on/off するための機能 mrkn (Kenta Murata)
                   ` (3 preceding siblings ...)
  2013-03-06 19:52 ` [ruby-dev:47140] " sorah (Shota Fukumori)
@ 2013-03-07  1:42 ` mrkn (Kenta Murata)
  2013-03-07  2:14 ` [ruby-dev:47146] " authorNari (Narihiro Nakamura)
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 16+ messages in thread
From: mrkn (Kenta Murata) @ 2013-03-07  1:42 UTC (permalink / raw
  To: ruby developers list


Issue #8024 has been updated by mrkn (Kenta Murata).


> むらけんさんの好みに合わないなら

この件に関しては好みを主張できるほど詳しくないので、メソッド名から要/不要まで nari3 にすべての決めて頂こうと考えてました。
私は真偽値を与えて on/off を制御する方式でも問題ないと思ってます〜

----------------------------------------
Feature #8024: Lazy sweep を on/off するための機能
https://bugs.ruby-lang.org/issues/8024#change-37343

Author: mrkn (Kenta Murata)
Status: Assigned
Priority: Normal
Assignee: authorNari (Narihiro Nakamura)
Category: core
Target version: 


Lazy sweep を on/off する機能を追加するパッチを作りました。
このパッチは環境変数1つと GC のモジュール関数2つを追加します。

環境変数は RUBY_GC_DISABLE_LAZY_SWEEP です。
これに 0 以外の整数を設定して ruby を実行すると、
lazy sweep が off の状態で実行されます。

GC に追加されるモジュール関数は disable_lazy_sweep と enable_lazy_sweep です。
文字通り、lazy_sweep の on/off を切り替えるために使います。

このパッチを作るに至った経緯は、Lazy sweep が on の時だけ再現する SEGV が
弊社のテストコードで発生していたからです。
SEGV の発生条件がまだ絞れていないため、残念ながらバグ報告はまだできません。

運用上 Lazy sweep を止めておく必要があっために作ったパッチですが、
他の人の役にも立つかもしれませんので、こちらで提案させて頂きます。

trunk/2.0.0 用 → https://gist.github.com/mrkn/5096076

1.9.3 用 → https://gist.github.com/mrkn/5096071


-- 
http://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ruby-dev:47146] [ruby-trunk - Feature #8024] Lazy sweep を on/off するための機能
  2013-03-06  1:50 [ruby-dev:47135] [ruby-trunk - Feature #8024][Assigned] Lazy sweep を on/off するための機能 mrkn (Kenta Murata)
                   ` (4 preceding siblings ...)
  2013-03-07  1:42 ` [ruby-dev:47145] " mrkn (Kenta Murata)
@ 2013-03-07  2:14 ` authorNari (Narihiro Nakamura)
  2013-03-07  3:28 ` [ruby-dev:47147] " mrkn (Kenta Murata)
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 16+ messages in thread
From: authorNari (Narihiro Nakamura) @ 2013-03-07  2:14 UTC (permalink / raw
  To: ruby developers list


Issue #8024 has been updated by authorNari (Narihiro Nakamura).


このメソッドや環境変数を追加する動機が「SEGVが発生するかしないかの切り分けのため」なので、その用途だけでメソッド追加などをするのはやり過ぎかな、と思いました。
SEGVが直ったら用済みになっちゃうかもしれないですよね…。

それ以外の用途がなにかあれば教えてもらえると助かります。
----------------------------------------
Feature #8024: Lazy sweep を on/off するための機能
https://bugs.ruby-lang.org/issues/8024#change-37345

Author: mrkn (Kenta Murata)
Status: Assigned
Priority: Normal
Assignee: authorNari (Narihiro Nakamura)
Category: core
Target version: 


Lazy sweep を on/off する機能を追加するパッチを作りました。
このパッチは環境変数1つと GC のモジュール関数2つを追加します。

環境変数は RUBY_GC_DISABLE_LAZY_SWEEP です。
これに 0 以外の整数を設定して ruby を実行すると、
lazy sweep が off の状態で実行されます。

GC に追加されるモジュール関数は disable_lazy_sweep と enable_lazy_sweep です。
文字通り、lazy_sweep の on/off を切り替えるために使います。

このパッチを作るに至った経緯は、Lazy sweep が on の時だけ再現する SEGV が
弊社のテストコードで発生していたからです。
SEGV の発生条件がまだ絞れていないため、残念ながらバグ報告はまだできません。

運用上 Lazy sweep を止めておく必要があっために作ったパッチですが、
他の人の役にも立つかもしれませんので、こちらで提案させて頂きます。

trunk/2.0.0 用 → https://gist.github.com/mrkn/5096076

1.9.3 用 → https://gist.github.com/mrkn/5096071


-- 
http://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ruby-dev:47147] [ruby-trunk - Feature #8024] Lazy sweep を on/off するための機能
  2013-03-06  1:50 [ruby-dev:47135] [ruby-trunk - Feature #8024][Assigned] Lazy sweep を on/off するための機能 mrkn (Kenta Murata)
                   ` (5 preceding siblings ...)
  2013-03-07  2:14 ` [ruby-dev:47146] " authorNari (Narihiro Nakamura)
@ 2013-03-07  3:28 ` mrkn (Kenta Murata)
  2013-03-19  2:27 ` [ruby-dev:47179] [ruby-trunk - Feature #8024][Rejected] " authorNari (Narihiro Nakamura)
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 16+ messages in thread
From: mrkn (Kenta Murata) @ 2013-03-07  3:28 UTC (permalink / raw
  To: ruby developers list


Issue #8024 has been updated by mrkn (Kenta Murata).


> SEGVが発生するかしないかの切り分けのため

これは正確な表現ではなく、本当の動機は「SEGVを回避するため」です。

> SEGVが直ったら用済みになっちゃうかもしれないですよね…。

そうですね。

> それ以外の用途

ありません〜
----------------------------------------
Feature #8024: Lazy sweep を on/off するための機能
https://bugs.ruby-lang.org/issues/8024#change-37346

Author: mrkn (Kenta Murata)
Status: Assigned
Priority: Normal
Assignee: authorNari (Narihiro Nakamura)
Category: core
Target version: 


Lazy sweep を on/off する機能を追加するパッチを作りました。
このパッチは環境変数1つと GC のモジュール関数2つを追加します。

環境変数は RUBY_GC_DISABLE_LAZY_SWEEP です。
これに 0 以外の整数を設定して ruby を実行すると、
lazy sweep が off の状態で実行されます。

GC に追加されるモジュール関数は disable_lazy_sweep と enable_lazy_sweep です。
文字通り、lazy_sweep の on/off を切り替えるために使います。

このパッチを作るに至った経緯は、Lazy sweep が on の時だけ再現する SEGV が
弊社のテストコードで発生していたからです。
SEGV の発生条件がまだ絞れていないため、残念ながらバグ報告はまだできません。

運用上 Lazy sweep を止めておく必要があっために作ったパッチですが、
他の人の役にも立つかもしれませんので、こちらで提案させて頂きます。

trunk/2.0.0 用 → https://gist.github.com/mrkn/5096076

1.9.3 用 → https://gist.github.com/mrkn/5096071


-- 
http://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ruby-dev:47179] [ruby-trunk - Feature #8024][Rejected] Lazy sweep を on/off するための機能
  2013-03-06  1:50 [ruby-dev:47135] [ruby-trunk - Feature #8024][Assigned] Lazy sweep を on/off するための機能 mrkn (Kenta Murata)
                   ` (6 preceding siblings ...)
  2013-03-07  3:28 ` [ruby-dev:47147] " mrkn (Kenta Murata)
@ 2013-03-19  2:27 ` authorNari (Narihiro Nakamura)
  2013-03-23 15:01 ` [ruby-dev:47190] [ruby-trunk - Feature #8024] " authorNari (Narihiro Nakamura)
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 16+ messages in thread
From: authorNari (Narihiro Nakamura) @ 2013-03-19  2:27 UTC (permalink / raw
  To: ruby developers list


Issue #8024 has been updated by authorNari (Narihiro Nakamura).

Status changed from Assigned to Rejected

特にみなさんから反論もなさそうなのでRejectしておきます。
----------------------------------------
Feature #8024: Lazy sweep を on/off するための機能
https://bugs.ruby-lang.org/issues/8024#change-37713

Author: mrkn (Kenta Murata)
Status: Rejected
Priority: Normal
Assignee: authorNari (Narihiro Nakamura)
Category: core
Target version: 


Lazy sweep を on/off する機能を追加するパッチを作りました。
このパッチは環境変数1つと GC のモジュール関数2つを追加します。

環境変数は RUBY_GC_DISABLE_LAZY_SWEEP です。
これに 0 以外の整数を設定して ruby を実行すると、
lazy sweep が off の状態で実行されます。

GC に追加されるモジュール関数は disable_lazy_sweep と enable_lazy_sweep です。
文字通り、lazy_sweep の on/off を切り替えるために使います。

このパッチを作るに至った経緯は、Lazy sweep が on の時だけ再現する SEGV が
弊社のテストコードで発生していたからです。
SEGV の発生条件がまだ絞れていないため、残念ながらバグ報告はまだできません。

運用上 Lazy sweep を止めておく必要があっために作ったパッチですが、
他の人の役にも立つかもしれませんので、こちらで提案させて頂きます。

trunk/2.0.0 用 → https://gist.github.com/mrkn/5096076

1.9.3 用 → https://gist.github.com/mrkn/5096071


-- 
http://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ruby-dev:47190] [ruby-trunk - Feature #8024] Lazy sweep を on/off するための機能
  2013-03-06  1:50 [ruby-dev:47135] [ruby-trunk - Feature #8024][Assigned] Lazy sweep を on/off するための機能 mrkn (Kenta Murata)
                   ` (7 preceding siblings ...)
  2013-03-19  2:27 ` [ruby-dev:47179] [ruby-trunk - Feature #8024][Rejected] " authorNari (Narihiro Nakamura)
@ 2013-03-23 15:01 ` authorNari (Narihiro Nakamura)
  2013-03-23 15:29   ` [ruby-dev:47193] " SASADA Koichi
  2013-03-23 15:12 ` [ruby-dev:47191] " naruse (Yui NARUSE)
                   ` (3 subsequent siblings)
  12 siblings, 1 reply; 16+ messages in thread
From: authorNari (Narihiro Nakamura) @ 2013-03-23 15:01 UTC (permalink / raw
  To: ruby developers list


Issue #8024 has been updated by authorNari (Narihiro Nakamura).


ちなみに以下のようにパッチを修正しないとヒープがうまく拡張してくれず、GCが多発するようです > mrknさん
https://gist.github.com/authorNari/5227985/revisions
----------------------------------------
Feature #8024: Lazy sweep を on/off するための機能
https://bugs.ruby-lang.org/issues/8024#change-37857

Author: mrkn (Kenta Murata)
Status: Rejected
Priority: Normal
Assignee: authorNari (Narihiro Nakamura)
Category: core
Target version: 


Lazy sweep を on/off する機能を追加するパッチを作りました。
このパッチは環境変数1つと GC のモジュール関数2つを追加します。

環境変数は RUBY_GC_DISABLE_LAZY_SWEEP です。
これに 0 以外の整数を設定して ruby を実行すると、
lazy sweep が off の状態で実行されます。

GC に追加されるモジュール関数は disable_lazy_sweep と enable_lazy_sweep です。
文字通り、lazy_sweep の on/off を切り替えるために使います。

このパッチを作るに至った経緯は、Lazy sweep が on の時だけ再現する SEGV が
弊社のテストコードで発生していたからです。
SEGV の発生条件がまだ絞れていないため、残念ながらバグ報告はまだできません。

運用上 Lazy sweep を止めておく必要があっために作ったパッチですが、
他の人の役にも立つかもしれませんので、こちらで提案させて頂きます。

trunk/2.0.0 用 → https://gist.github.com/mrkn/5096076

1.9.3 用 → https://gist.github.com/mrkn/5096071


-- 
http://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ruby-dev:47191] [ruby-trunk - Feature #8024] Lazy sweep を on/off するための機能
  2013-03-06  1:50 [ruby-dev:47135] [ruby-trunk - Feature #8024][Assigned] Lazy sweep を on/off するための機能 mrkn (Kenta Murata)
                   ` (8 preceding siblings ...)
  2013-03-23 15:01 ` [ruby-dev:47190] [ruby-trunk - Feature #8024] " authorNari (Narihiro Nakamura)
@ 2013-03-23 15:12 ` naruse (Yui NARUSE)
  2013-03-23 15:16 ` [ruby-dev:47192] [ruby-trunk - Feature #8024][Open] " authorNari (Narihiro Nakamura)
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 16+ messages in thread
From: naruse (Yui NARUSE) @ 2013-03-23 15:12 UTC (permalink / raw
  To: ruby developers list


Issue #8024 has been updated by naruse (Yui NARUSE).


authorNari (Narihiro Nakamura) wrote:
> ちなみに以下のようにパッチを修正しないとヒープがうまく拡張してくれず、GCが多発するようです > mrknさん
> https://gist.github.com/authorNari/5227985/revisions

わたしも先日 lazy sweep 切ってデバッグしたくなったので、マクロ定義を見るとかでもいいので、
正しい lazy sweep を切るコード自体は入れておいて頂けませんか。

参考 https://github.com/nurse/rubyspec/commit/c02c78b3899fcf769084a88777c63de0fcebb48d
----------------------------------------
Feature #8024: Lazy sweep を on/off するための機能
https://bugs.ruby-lang.org/issues/8024#change-37858

Author: mrkn (Kenta Murata)
Status: Rejected
Priority: Normal
Assignee: authorNari (Narihiro Nakamura)
Category: core
Target version: 


Lazy sweep を on/off する機能を追加するパッチを作りました。
このパッチは環境変数1つと GC のモジュール関数2つを追加します。

環境変数は RUBY_GC_DISABLE_LAZY_SWEEP です。
これに 0 以外の整数を設定して ruby を実行すると、
lazy sweep が off の状態で実行されます。

GC に追加されるモジュール関数は disable_lazy_sweep と enable_lazy_sweep です。
文字通り、lazy_sweep の on/off を切り替えるために使います。

このパッチを作るに至った経緯は、Lazy sweep が on の時だけ再現する SEGV が
弊社のテストコードで発生していたからです。
SEGV の発生条件がまだ絞れていないため、残念ながらバグ報告はまだできません。

運用上 Lazy sweep を止めておく必要があっために作ったパッチですが、
他の人の役にも立つかもしれませんので、こちらで提案させて頂きます。

trunk/2.0.0 用 → https://gist.github.com/mrkn/5096076

1.9.3 用 → https://gist.github.com/mrkn/5096071


-- 
http://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ruby-dev:47192] [ruby-trunk - Feature #8024][Open] Lazy sweep を on/off するための機能
  2013-03-06  1:50 [ruby-dev:47135] [ruby-trunk - Feature #8024][Assigned] Lazy sweep を on/off するための機能 mrkn (Kenta Murata)
                   ` (9 preceding siblings ...)
  2013-03-23 15:12 ` [ruby-dev:47191] " naruse (Yui NARUSE)
@ 2013-03-23 15:16 ` authorNari (Narihiro Nakamura)
  2013-03-24  3:35 ` [ruby-dev:47194] [ruby-trunk - Feature #8024] " authorNari (Narihiro Nakamura)
  2013-03-24 17:32 ` [ruby-dev:47199] " authorNari (Narihiro Nakamura)
  12 siblings, 0 replies; 16+ messages in thread
From: authorNari (Narihiro Nakamura) @ 2013-03-23 15:16 UTC (permalink / raw
  To: ruby developers list


Issue #8024 has been updated by authorNari (Narihiro Nakamura).

Status changed from Rejected to Open

なるほどです。デバッグ用途にマクロでONになるやつを作ってみます。
----------------------------------------
Feature #8024: Lazy sweep を on/off するための機能
https://bugs.ruby-lang.org/issues/8024#change-37859

Author: mrkn (Kenta Murata)
Status: Open
Priority: Normal
Assignee: authorNari (Narihiro Nakamura)
Category: core
Target version: 


Lazy sweep を on/off する機能を追加するパッチを作りました。
このパッチは環境変数1つと GC のモジュール関数2つを追加します。

環境変数は RUBY_GC_DISABLE_LAZY_SWEEP です。
これに 0 以外の整数を設定して ruby を実行すると、
lazy sweep が off の状態で実行されます。

GC に追加されるモジュール関数は disable_lazy_sweep と enable_lazy_sweep です。
文字通り、lazy_sweep の on/off を切り替えるために使います。

このパッチを作るに至った経緯は、Lazy sweep が on の時だけ再現する SEGV が
弊社のテストコードで発生していたからです。
SEGV の発生条件がまだ絞れていないため、残念ながらバグ報告はまだできません。

運用上 Lazy sweep を止めておく必要があっために作ったパッチですが、
他の人の役にも立つかもしれませんので、こちらで提案させて頂きます。

trunk/2.0.0 用 → https://gist.github.com/mrkn/5096076

1.9.3 用 → https://gist.github.com/mrkn/5096071


-- 
http://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ruby-dev:47193] Re: [ruby-dev:47190] [ruby-trunk - Feature #8024] Lazy sweep を on/off するための機能
  2013-03-23 15:01 ` [ruby-dev:47190] [ruby-trunk - Feature #8024] " authorNari (Narihiro Nakamura)
@ 2013-03-23 15:29   ` SASADA Koichi
  0 siblings, 0 replies; 16+ messages in thread
From: SASADA Koichi @ 2013-03-23 15:29 UTC (permalink / raw
  To: ruby developers list; +Cc: authorNari

すみません、ちょっとわかってないんですが、
ObjectSpace.each_object 中って lazy GC 起きないようになってますよね。

(1) lazy sweep を止めるときは、別スレッドで適当に
ObjectSpace.each_object を実行しておく
(で、その中で sleep させておく)、というので行けると思ったんですが、
あってますか?

(2) で、ヒープの拡張がうまくいかない問題は、ObjectSpace.each_object 中に
も同様に発生するでしょうか? もしそうなら、それはそれで修正しないといけ
ないような気がします。

-- 
// SASADA Koichi at atdot dot net

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ruby-dev:47194] [ruby-trunk - Feature #8024] Lazy sweep を on/off するための機能
  2013-03-06  1:50 [ruby-dev:47135] [ruby-trunk - Feature #8024][Assigned] Lazy sweep を on/off するための機能 mrkn (Kenta Murata)
                   ` (10 preceding siblings ...)
  2013-03-23 15:16 ` [ruby-dev:47192] [ruby-trunk - Feature #8024][Open] " authorNari (Narihiro Nakamura)
@ 2013-03-24  3:35 ` authorNari (Narihiro Nakamura)
  2013-03-24 15:20   ` [ruby-dev:47197] " SASADA Koichi
  2013-03-24 17:32 ` [ruby-dev:47199] " authorNari (Narihiro Nakamura)
  12 siblings, 1 reply; 16+ messages in thread
From: authorNari (Narihiro Nakamura) @ 2013-03-24  3:35 UTC (permalink / raw
  To: ruby developers list


Issue #8024 has been updated by authorNari (Narihiro Nakamura).


ko1 (Koichi Sasada) wrote:
> すみません、ちょっとわかってないんですが、
>  ObjectSpace.each_object 中って lazy GC 起きないようになってますよね。
>  
>  (1) lazy sweep を止めるときは、別スレッドで適当に
>  ObjectSpace.each_object を実行しておく
>  (で、その中で sleep させておく)、というので行けると思ったんですが、
>  あってますか?
>  

すみませんが、修正内容がよく理解できませんでした。
別スレッドで実行すると何が解決するのでしょうか?

>  (2) で、ヒープの拡張がうまくいかない問題は、ObjectSpace.each_object 中に
>  も同様に発生するでしょうか? もしそうなら、それはそれで修正しないといけ
>  ないような気がします。
>  

はい、修正が必要だと思います(のでなおしておきます)。
ただ、ObjectSpace.each_objectの中でヒープが拡張していくようなコードは無限ループになる可能性があるので、そもそもあまり推奨されるコードじゃないですね…。

----------------------------------------
Feature #8024: Lazy sweep を on/off するための機能
https://bugs.ruby-lang.org/issues/8024#change-37873

Author: mrkn (Kenta Murata)
Status: Open
Priority: Normal
Assignee: authorNari (Narihiro Nakamura)
Category: core
Target version: 


Lazy sweep を on/off する機能を追加するパッチを作りました。
このパッチは環境変数1つと GC のモジュール関数2つを追加します。

環境変数は RUBY_GC_DISABLE_LAZY_SWEEP です。
これに 0 以外の整数を設定して ruby を実行すると、
lazy sweep が off の状態で実行されます。

GC に追加されるモジュール関数は disable_lazy_sweep と enable_lazy_sweep です。
文字通り、lazy_sweep の on/off を切り替えるために使います。

このパッチを作るに至った経緯は、Lazy sweep が on の時だけ再現する SEGV が
弊社のテストコードで発生していたからです。
SEGV の発生条件がまだ絞れていないため、残念ながらバグ報告はまだできません。

運用上 Lazy sweep を止めておく必要があっために作ったパッチですが、
他の人の役にも立つかもしれませんので、こちらで提案させて頂きます。

trunk/2.0.0 用 → https://gist.github.com/mrkn/5096076

1.9.3 用 → https://gist.github.com/mrkn/5096071


-- 
http://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ruby-dev:47197] Re: [ruby-dev:47194] [ruby-trunk - Feature #8024] Lazy sweep を on/off するための機能
  2013-03-24  3:35 ` [ruby-dev:47194] [ruby-trunk - Feature #8024] " authorNari (Narihiro Nakamura)
@ 2013-03-24 15:20   ` SASADA Koichi
  0 siblings, 0 replies; 16+ messages in thread
From: SASADA Koichi @ 2013-03-24 15:20 UTC (permalink / raw
  To: ruby developers list

(2013/03/24 12:35), authorNari (Narihiro Nakamura) wrote:
>> > すみません、ちょっとわかってないんですが、
>> >  ObjectSpace.each_object 中って lazy GC 起きないようになってますよね。
>> >  
>> >  (1) lazy sweep を止めるときは、別スレッドで適当に
>> >  ObjectSpace.each_object を実行しておく
>> >  (で、その中で sleep させておく)、というので行けると思ったんですが、
>> >  あってますか?
>> >  
> すみませんが、修正内容がよく理解できませんでした。
> 別スレッドで実行すると何が解決するのでしょうか?

修正内容云々、という話ではなく、

(1-1) lazy sweep を切るには、ObjectSpace.each_object
      を実行中は lazy sweep は無効になる

(1-2) 例えば、
    Thread.new{ObjectSpace.each_object{sleep} # sleep で止まる
    ... 他の処理 ...
 とすると、「他の処理」実行中は lazy sweep 止まっている

(1-3) 新しいメソッドなどを定義しなくても、Lazy sweep を無効にする
      ことができる

という話を確認したかったのです。もしかしたら、私が何かしら勘違いしている
かもしれないので。つまり、この ticket は簡単に実現できるんじゃないの、
と。もちろん、実装依存の bad know-how ですが、そもそも今回の用途は実装依
存の挙動に対する調査なので、まぁいいかなと。


> 
>> >  (2) で、ヒープの拡張がうまくいかない問題は、ObjectSpace.each_object 中に
>> >  も同様に発生するでしょうか? もしそうなら、それはそれで修正しないといけ
>> >  ないような気がします。
>> >  
> はい、修正が必要だと思います(のでなおしておきます)。
> ただ、ObjectSpace.each_objectの中でヒープが拡張していくようなコードは無限ループになる可能性があるので、そもそもあまり推奨されるコードじゃないですね…。

each_object の実行が止まらない可能性、ですよね。それは同意できますが、そ
の辺を回避するのは無理なんじゃないかなぁ。

で、この修正を入れないと、現状では (1) の「簡単に止められるんじゃない
の」というのは、「実はこういう制約が入る」、ということですかね。

-- 
// SASADA Koichi at atdot dot net

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [ruby-dev:47199] [ruby-trunk - Feature #8024] Lazy sweep を on/off するための機能
  2013-03-06  1:50 [ruby-dev:47135] [ruby-trunk - Feature #8024][Assigned] Lazy sweep を on/off するための機能 mrkn (Kenta Murata)
                   ` (11 preceding siblings ...)
  2013-03-24  3:35 ` [ruby-dev:47194] [ruby-trunk - Feature #8024] " authorNari (Narihiro Nakamura)
@ 2013-03-24 17:32 ` authorNari (Narihiro Nakamura)
  12 siblings, 0 replies; 16+ messages in thread
From: authorNari (Narihiro Nakamura) @ 2013-03-24 17:32 UTC (permalink / raw
  To: ruby developers list


Issue #8024 has been updated by authorNari (Narihiro Nakamura).


ko1 (Koichi Sasada) wrote:
> (2013/03/24 12:35), authorNari (Narihiro Nakamura) wrote:
>  >> > すみません、ちょっとわかってないんですが、
>  >> >  ObjectSpace.each_object 中って lazy GC 起きないようになってますよね。
>  >> >  
>  >> >  (1) lazy sweep を止めるときは、別スレッドで適当に
>  >> >  ObjectSpace.each_object を実行しておく
>  >> >  (で、その中で sleep させておく)、というので行けると思ったんですが、
>  >> >  あってますか?
>  >> >  
>  > すみませんが、修正内容がよく理解できませんでした。
>  > 別スレッドで実行すると何が解決するのでしょうか?
>  
>  修正内容云々、という話ではなく、
>  
>  (1-1) lazy sweep を切るには、ObjectSpace.each_object
>        を実行中は lazy sweep は無効になる
>  
>  (1-2) 例えば、
>      Thread.new{ObjectSpace.each_object{sleep} # sleep で止まる
>      ... 他の処理 ...
>   とすると、「他の処理」実行中は lazy sweep 止まっている
>  
>  (1-3) 新しいメソッドなどを定義しなくても、Lazy sweep を無効にする
>        ことができる
>  
>  という話を確認したかったのです。もしかしたら、私が何かしら勘違いしている
>  かもしれないので。つまり、この ticket は簡単に実現できるんじゃないの、
>  と。もちろん、実装依存の bad know-how ですが、そもそも今回の用途は実装依
>  存の挙動に対する調査なので、まぁいいかなと。
>  

おおお、なるほど。おっしゃる通りだとおもいます。

>  >> >  (2) で、ヒープの拡張がうまくいかない問題は、ObjectSpace.each_object 中に
>  >> >  も同様に発生するでしょうか? もしそうなら、それはそれで修正しないといけ
>  >> >  ないような気がします。
>  >> >  
>  > はい、修正が必要だと思います(のでなおしておきます)。
>  > ただ、ObjectSpace.each_objectの中でヒープが拡張していくようなコードは無限ループになる可能性があるので、そもそもあまり推奨されるコードじゃないですね…。
>  
>  each_object の実行が止まらない可能性、ですよね。それは同意できますが、そ
>  の辺を回避するのは無理なんじゃないかなぁ。
>  
>  で、この修正を入れないと、現状では (1) の「簡単に止められるんじゃない
>  の」というのは、「実はこういう制約が入る」、ということですかね。
>  

(1)の方法で簡単に止められるけど、ヒープ拡張がうまくいかない制約が入る、という意味でしょうか?
だとしたらおっしゃるとおりだと思います(もうtrunkでは修正しちゃいましたけど :P)
----------------------------------------
Feature #8024: Lazy sweep を on/off するための機能
https://bugs.ruby-lang.org/issues/8024#change-37899

Author: mrkn (Kenta Murata)
Status: Closed
Priority: Normal
Assignee: authorNari (Narihiro Nakamura)
Category: core
Target version: 


Lazy sweep を on/off する機能を追加するパッチを作りました。
このパッチは環境変数1つと GC のモジュール関数2つを追加します。

環境変数は RUBY_GC_DISABLE_LAZY_SWEEP です。
これに 0 以外の整数を設定して ruby を実行すると、
lazy sweep が off の状態で実行されます。

GC に追加されるモジュール関数は disable_lazy_sweep と enable_lazy_sweep です。
文字通り、lazy_sweep の on/off を切り替えるために使います。

このパッチを作るに至った経緯は、Lazy sweep が on の時だけ再現する SEGV が
弊社のテストコードで発生していたからです。
SEGV の発生条件がまだ絞れていないため、残念ながらバグ報告はまだできません。

運用上 Lazy sweep を止めておく必要があっために作ったパッチですが、
他の人の役にも立つかもしれませんので、こちらで提案させて頂きます。

trunk/2.0.0 用 → https://gist.github.com/mrkn/5096076

1.9.3 用 → https://gist.github.com/mrkn/5096071


-- 
http://bugs.ruby-lang.org/

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2013-03-24 17:54 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-06  1:50 [ruby-dev:47135] [ruby-trunk - Feature #8024][Assigned] Lazy sweep を on/off するための機能 mrkn (Kenta Murata)
2013-03-06  2:09 ` [ruby-dev:47136] [ruby-trunk - Feature #8024] " kosaki (Motohiro KOSAKI)
2013-03-06 11:24 ` [ruby-dev:47137] " mrkn (Kenta Murata)
2013-03-06 15:54 ` [ruby-dev:47139] " kosaki (Motohiro KOSAKI)
2013-03-06 19:52 ` [ruby-dev:47140] " sorah (Shota Fukumori)
2013-03-07  1:42 ` [ruby-dev:47145] " mrkn (Kenta Murata)
2013-03-07  2:14 ` [ruby-dev:47146] " authorNari (Narihiro Nakamura)
2013-03-07  3:28 ` [ruby-dev:47147] " mrkn (Kenta Murata)
2013-03-19  2:27 ` [ruby-dev:47179] [ruby-trunk - Feature #8024][Rejected] " authorNari (Narihiro Nakamura)
2013-03-23 15:01 ` [ruby-dev:47190] [ruby-trunk - Feature #8024] " authorNari (Narihiro Nakamura)
2013-03-23 15:29   ` [ruby-dev:47193] " SASADA Koichi
2013-03-23 15:12 ` [ruby-dev:47191] " naruse (Yui NARUSE)
2013-03-23 15:16 ` [ruby-dev:47192] [ruby-trunk - Feature #8024][Open] " authorNari (Narihiro Nakamura)
2013-03-24  3:35 ` [ruby-dev:47194] [ruby-trunk - Feature #8024] " authorNari (Narihiro Nakamura)
2013-03-24 15:20   ` [ruby-dev:47197] " SASADA Koichi
2013-03-24 17:32 ` [ruby-dev:47199] " authorNari (Narihiro Nakamura)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).