3

そのルビーフォークCOWフレンドリーである場所をいくつか読んだことがあります ここでリンク

しかし、たまたまグーグルで詳細を調べたところ、RubyはCOW(コピーオンライト)をサポートしていないことがわかりました

Rubyが実際にCOW機能をサポートしているかどうかについて、私は実際には少し混乱しています。

また、 REERubiniusにはCOW フレンドリーな GCがあることも認識しており、 REE と Rubinius がCOW機能をサポートしていることも認識しています。

はい、私はそれをテストしたくてたまらないです。RubyがCOW機能をサポートしている場合、RubyでCOWの概念をテストするためのサンプルコードを書く方法を誰かに教えてもらえますか

ありがとう

4

1 に答える 1

1

forkコピー オン ライトであることは、Ruby ではなく、オペレーティング システム カーネルのプロパティです。ほとんどの UNIX ライクなシステムでは、そうです。

たとえば、Linux では、/proc/pid/smapsヒープ マッピングが共有されている量を調べることができます。bashフォークを実行する例を次に示します。

02020000-023cd000 rw-p 00000000 00:00 0                                  [heap]
Size:               3764 kB
Rss:                3716 kB
Pss:                1282 kB
Shared_Clean:          0 kB
Shared_Dirty:       3652 kB
Private_Clean:         0 kB
Private_Dirty:        64 kB
Referenced:          144 kB
Anonymous:          3716 kB
AnonHugePages:         0 kB
Swap:                  0 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
Locked:                0 kB

したがって、3764k ヒープのうち、3652k が共有されます。のファイルに関するドキュメントについては、proc.txtを参照してください/proc

もちろん、Ruby には COW ページがコピーされる原因となるもの (たとえば、ガベージ コレクターが各ページに書き込むなど) があるかもしれませんが、共有カウントが 0 になることでそれを確認できます。

于 2012-05-25T17:56:45.630 に答える