Module: JemallocCtl
- Defined in:
- lib/jemalloc_ctl.rb,
ext/jemalloc_ctl/jemalloc_ctl.c
Class Method Summary collapse
- .disable_background_thread ⇒ Object
- .enable_background_thread ⇒ Object
- .enabled? ⇒ Boolean
- .flush_current_thread_tcache ⇒ Object
- .print_stats(filename) ⇒ Object
- .purge_arenas ⇒ Object
- .version ⇒ Object
Class Method Details
.disable_background_thread ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'ext/jemalloc_ctl/jemalloc_ctl.c', line 71
static VALUE rb_jemalloc_ctl_disable_background_thread(VALUE self)
{
if (my_mallctl == NULL)
rb_raise(rb_eRuntimeError, "jemalloc is not available");
bool val = false;
int err = my_mallctl("background_thread", NULL, NULL, &val, sizeof(bool));
if (err != 0)
rb_raise(rb_eRuntimeError, "mallctl(\"background_thread\") failed with error %d", err);
return Qfalse;
}
|
.enable_background_thread ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'ext/jemalloc_ctl/jemalloc_ctl.c', line 57
static VALUE rb_jemalloc_ctl_enable_background_thread(VALUE self)
{
if (my_mallctl == NULL)
rb_raise(rb_eRuntimeError, "jemalloc is not available");
bool val = true;
int err = my_mallctl("background_thread", NULL, NULL, &val, sizeof(bool));
if (err != 0)
rb_raise(rb_eRuntimeError, "mallctl(\"background_thread\") failed with error %d", err);
return Qtrue;
}
|
.enabled? ⇒ Boolean
37 38 39 40 |
# File 'ext/jemalloc_ctl/jemalloc_ctl.c', line 37
static VALUE rb_jemalloc_ctl_enabled_p(VALUE self)
{
return my_mallctl != NULL ? Qtrue : Qfalse;
}
|
.flush_current_thread_tcache ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'ext/jemalloc_ctl/jemalloc_ctl.c', line 85
static VALUE rb_jemalloc_ctl_flush_current_thread_tcache(VALUE self)
{
if (my_mallctl == NULL)
rb_raise(rb_eRuntimeError, "jemalloc is not available");
int err = my_mallctl("thread.tcache.flush", NULL, NULL, NULL, 0);
if (err != 0)
rb_raise(rb_eRuntimeError, "mallctl(\"thread.tcache.flush\") failed with error %d", err);
return Qtrue;
}
|
.print_stats(filename) ⇒ Object
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'ext/jemalloc_ctl/jemalloc_ctl.c', line 119
static VALUE rb_jemalloc_ctl_print_stats(VALUE self, VALUE filename)
{
if (my_mallctl == NULL)
rb_raise(rb_eRuntimeError, "jemalloc is not available");
if (my_malloc_stats_print == NULL)
rb_raise(rb_eRuntimeError, "malloc_stats_print is not available");
const char *path = StringValueCStr(filename);
FILE *f = fopen(path, "w");
if (f == NULL)
rb_sys_fail(path);
my_malloc_stats_print(write_stats_cb, f, NULL);
fclose(f);
return Qtrue;
}
|
.purge_arenas ⇒ Object
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'ext/jemalloc_ctl/jemalloc_ctl.c', line 98
static VALUE rb_jemalloc_ctl_purge_arenas(VALUE self)
{
if (my_mallctl == NULL)
rb_raise(rb_eRuntimeError, "jemalloc is not available");
char ctl[32];
snprintf(ctl, sizeof(ctl), "arena.%d.purge", MALLCTL_ARENAS_ALL);
int err = my_mallctl(ctl, NULL, NULL, NULL, 0);
if (err != 0)
rb_raise(rb_eRuntimeError, "mallctl(\"%s\") failed with error %d", ctl, err);
return Qtrue;
}
|
.version ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'ext/jemalloc_ctl/jemalloc_ctl.c', line 42
static VALUE rb_jemalloc_ctl_version(VALUE self)
{
if (my_mallctl == NULL)
rb_raise(rb_eRuntimeError, "jemalloc is not available");
const char *version;
size_t sz = sizeof(version);
int err = my_mallctl("version", &version, &sz, NULL, 0);
if (err != 0)
rb_raise(rb_eRuntimeError, "mallctl(\"version\") failed with error %d", err);
return rb_str_new_cstr(version);
}
|