2012-05-25 1 views
3

Я прочитал некоторые, где, что рубин вилок является КПСОМ дружественных ОК здесь linkрубин вилок КОРОВА дружеского если да, как проверить это

Но тогда, когда я бываю в Google вокруг для получения дополнительной информации на него я узнал, что Руби не поддерживает КОРОВА (копирование при записи)

Теперь я на самом деле немного путаете ли на самом деле рубин поддерживать или не КОРОВА функциональность

Я также знаю, что РЗЭ и Rubinius имеет COW дружественную GC так делает что меня РЗЭ и Rubinius поддержка КОРОВА функциональность

Я да Я умираю, чтобы проверить это, может кто-нибудь предложить мне, что если рубин поддержка КОРОВА функциональность, то, как написать выборка выполняется код для тестирования концепции COW в Рубине

Thanks

ответ

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.

+0

Да, GC - проблема. В некоторых версиях Ruby есть поведение GC, которое вызывает разветвленный Ruby для выполнения посторонних копий, некоторые (например, Ruby Enterprise Edition) этого не делают. –

+0

@derobert, я понимаю, что COW - это свойство ОС, но все, что я хотел от этого вопроса, наследует ли Ruby то, что на самом деле делает вилку (тогда да, как проверить ее с помощью рубиновой программы), и, как упоминалось в QI, не касается того, поддерживает ли моя ОС COW или нет, что я знаю. – Viren

+0

@dorebet, спасибо в любом случае, но – Viren