mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
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:
parent
2c8f16e6c0
commit
acbbf8b0ca
1 changed files with 11 additions and 0 deletions
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();
|
||||
|
|
Loading…
Reference in a new issue