зеркало из https://github.com/github/ruby.git
eval.c (ruby_setup): disable THP on Linux
Transparent Huge Pages (THP) decrease the effectiveness of CoW-friendly GC because it decreases page granularity. That is, a forked process dirtying one bit of CoW-shared memory can trigger a copy of a huge page (2MB on x86-64) instead of a smaller, standard page (4K). * eval.c (ruby_setup): disable THP on Linux [ruby-core:86651] [Feature #14705] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63253 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
2c8f16e6c0
Коммит
acbbf8b0ca
11
eval.c
11
eval.c
|
@ -20,6 +20,9 @@
|
|||
#include "mjit.h"
|
||||
#include "probes.h"
|
||||
#include "probes_helper.h"
|
||||
#ifdef HAVE_SYS_PRCTL_H
|
||||
#include <sys/prctl.h>
|
||||
#endif
|
||||
|
||||
NORETURN(void rb_raise_jump(VALUE, VALUE));
|
||||
|
||||
|
@ -52,6 +55,14 @@ ruby_setup(void)
|
|||
return 0;
|
||||
|
||||
ruby_init_stack((void *)&state);
|
||||
|
||||
/*
|
||||
* Disable THP early before mallocs happen because we want this to
|
||||
* affect as many future pages as possible for CoW-friendliness
|
||||
*/
|
||||
#if defined(__linux__) && defined(PR_SET_THP_DISABLE)
|
||||
prctl(PR_SET_THP_DISABLE, 1, 0, 0, 0);
|
||||
#endif
|
||||
Init_BareVM();
|
||||
Init_heap();
|
||||
Init_vm_objects();
|
||||
|
|
Загрузка…
Ссылка в новой задаче