我读过一些ruby fork COW 友好的地方 好的link
但是当我碰巧google了解更多信息时,我发现Ruby不支持 COW (写入时复制)
现在我实际上有点混淆ruby是否支持 COW 功能
我也知道 REE 和 Rubinius 有 COW友好GC 所以 那是我REE和Rubinius支持 COW 功能
我是的,我很想测试它,任何人都可以建议我,如果ruby支持 COW 功能,那么如何编写示例代码来测试 COW Ruby中的概念
由于
答案 0 :(得分: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
中文件的文档,请参阅proc.txt。
当然,Ruby可能会有某些东西导致COW页面被复制(例如,它的垃圾收集器可能会写入每个页面),但是你可以通过共享计数来看到它。/ p>