«前の日記(2006-04-16) 最新 次の日記(2006-04-18)» 編集

Matzにっき


2006-04-17 [長年日記]

_ Rails講習会打ち合わせ

本当は今日も東京でRails講習会のための打ち合わせのはずだったのだが、 昨日ようやっと帰宅して、今日また東京出張では体が保たないので、 Skypeで会議に参加することにした。

講習内容もかなり具体化してきている。 まあ、参加者が後悔しない内容になっている(と、いいなあ)。

私も参加する。どうやら私もビジネスマンのコスプレをする必要があるようだ。 うーむ。

それはそうと、Skype会議には課題も多い。

  • 音声だけなので、だれがしゃべっているかわかりにくい
  • 今回はPCの内蔵マイクなのでよけいに音質が悪い
  • 映像がないので、情報が少ない
  • 結果として集中力が維持できない

今後、Skypeで会議するためには以下のような点に気をつける必要があるだろう。

  • 事前にアジェンダなど資料を用意し、全参加者に配布する
  • できるだけ良いマイクを使う
  • 電話会議のマナー(発言前に名乗るとか)を参加者に徹底させる
  • TV会議システムの導入を検討する

電話会議は空間の障害を克服できる有効な方法だと思うので、 今後も工夫していきたい。

_ [Ruby]インクリメンタルGC

今回の中国出張の間、Jones & Linsを持参して GCについていろいろ考えていた。

結局、スクリプト言語は性能を最重視していないので、 対応すべきは停止時間の短さであろうという結論に至った。 ユーザインタフェース系などでのポーズは結構問題になることも多いようだから。

となると、今後RubyのGCについて検討すべきはインクリメンタル化なのであろう。 IoもLuaもインクリメンタルGCを実装しているのだし。 とはいえ、トータルのスループットを考えると効率を無視するわけにもいかず、 効率の良いインクリメンタルGCの実装はどうしたものかと考えたりするわけである。

結論はまだない。

本日のツッコミ(全13件) [ツッコミを入れる]
_ すずきひろのぶ (2006-04-20 19:48)

むかし竹内さんたちがやっていた並列GCみたいのはできないものなの?

_ おごちゃん (2006-04-20 20:03)

今時だったら、GC用のthreadを用意するとかでもいいような気がします。同じthreadでinclementalにやるのは、どうやっても「言い訳を考えながら行動してる」みたいな、余分なコストが排除できないように思うな。

_ まつもと (2006-04-21 07:59)

お二人とも専用threadなどを使った並列GCについて考えておられるようですが、そのようなGCは<br><br> * Rubyが対象にしている広い範囲のプラットフォームでの移植性がない<br> * GCはthread間の同期が多く(移植性の高い形で)性能を上げるのが難しい<br><br>という理由があって、言うほど簡単ではありません。> ひろのぶさん、おごちゃん

_ ささだ (2006-04-21 08:54)

wktk.

_ よしき (2006-04-22 14:55)

SqueakのGCは完全ポータブルですが、通常のpause timeは0.5msくらいで、一秒に60回くらい実行するとかそんな感じです。<br><br> GCがexactなかわりに外部ライブラリとのやりとりがRubyほど自由ではないので、そのまま適用はできないかもしれませんが...

_ まつもと (2006-04-22 15:07)

Rubyも普段はそんな感じなんですが、中には数百万オブジェクトを作っておいてGUIをぶんまわしたいとかいう人もいるんでねえ。問題になるのはワーストケースだけですね。

_ よしき (2006-04-22 15:39)

失礼しました^^;<br><br>working setに数百万入っていると少々たいへんですね。僕もなぜかたくさんのオブジェクトを使うGUIものをやっているのですが、「non-pointerのデータしか入らないArray」を使うと、GCがそれをトレースしなくなるのでworking setにそれなりの量の「ポインタじゃない同質なデータを保持しているArray」が入っていても大丈夫、というような方法でやっています。

_ おごちゃん (2006-04-23 22:31)

「竹内さん達の並列GC」が要求するものって、単に「本流とは別に空間を共用する処理が存在できる」ということだけで、排他や同期はオブジェクトの2bitを使いますよね。となると、今のRubyのthread程度のことで済むのではないかしらん。

_ Matz.Jr (2006-04-24 11:29)

娘です。<br>なんか、いろいろ言ってたけど、スカイプでやったんだ。<br>集中力がもたないって・・・。<br>よくわかんないけど、頑張ってください!!

_ 通りすがり (2006-04-25 13:22)

Azul Sysmtesが作ったPauseless GCの解説があります。<br>ポーズ時間を重視するなら、参考になるかもしれません。<br>http://www.nminoru.jp/~nminoru/java/cms/pauseless_gc.html

_ まつもと (2006-04-25 13:59)

ハードウェアサポートがあるとムチャができますね。<br>うらやましい。

_ maeda (2006-04-26 00:03)

世代別GCは平均的な停止時間も短いし効率も良くなると思います。<br>major collectionの時にはしっかり止まりますが...<br><br>世代別GCのminor collectionごとに、少しずつmajor collection<br>を行う「粗粒度インクリメンタルGC」というのをやってたりします。<br>効率をなるべく落とさず、世代別GC程度の停止時間を狙うものです。<br>http://www.ialab.cs.tsukuba.ac.jp/~maeda/research/pro45-maeda-gc.pdf<br><br>世代別GCにしてもインクリメンタルGCにしても、保守的GCと<br>共存させるとなるとwrite barrierをどうするかが最大の問題だと<br>思うんですが...

_ まつもと (2006-04-26 13:47)

Rubyの場合はwrite barrierを入れるべき場所は木山くんの研究によってほぼ明らかになっているので、その点はなんとかできそうです。<br>が、なかなかうまくいかない(ワーストケースでも劇的には改善しないうえに、普段のGCが遅くなったりする)んですよねえ。

お名前:
E-mail:
コメント:
[]

«前の日記(2006-04-16) 最新 次の日記(2006-04-18)» 編集

track feed Matzにっき Creative Commons License This work is licensed under a Creative Commons License.