"+MN" in description
If `RUBY_MN_THREADS=1` is given, this patch shows `+MN` in `RUBY_DESCRIPTION` like: ``` $ RUBY_MN_THREADS=1 ./miniruby --yjit -v ruby 3.3.0dev (2023-10-17T04:10:14Z master 908f8fffa2) +YJIT +MN [x86_64-linux] ``` Before this patch, a warning is displayed if `$VERBOSE` is given. However it can make troubles with tests (with `$VERBOSE`), do not show any warning with a MN threads configuration.
This commit is contained in:
parent
aee1bfd88e
commit
c9990c8d0f
4
ruby.c
4
ruby.c
@ -2101,7 +2101,10 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt)
|
|||||||
opt->yjit = true; // set opt->yjit for Init_ruby_description() and calling rb_yjit_init()
|
opt->yjit = true; // set opt->yjit for Init_ruby_description() and calling rb_yjit_init()
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
ruby_mn_threads_params();
|
||||||
Init_ruby_description(opt);
|
Init_ruby_description(opt);
|
||||||
|
|
||||||
if (opt->dump & (DUMP_BIT(version) | DUMP_BIT(version_v))) {
|
if (opt->dump & (DUMP_BIT(version) | DUMP_BIT(version_v))) {
|
||||||
ruby_show_version();
|
ruby_show_version();
|
||||||
if (opt->dump & DUMP_BIT(version)) return Qtrue;
|
if (opt->dump & DUMP_BIT(version)) return Qtrue;
|
||||||
@ -2153,7 +2156,6 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
ruby_gc_set_params();
|
ruby_gc_set_params();
|
||||||
ruby_mn_threads_params();
|
|
||||||
ruby_init_loadpath();
|
ruby_init_loadpath();
|
||||||
|
|
||||||
Init_enc();
|
Init_enc();
|
||||||
|
@ -156,7 +156,7 @@ class TestRubyOptions < Test::Unit::TestCase
|
|||||||
VERSION_PATTERN_WITH_RJIT =
|
VERSION_PATTERN_WITH_RJIT =
|
||||||
case RUBY_ENGINE
|
case RUBY_ENGINE
|
||||||
when 'ruby'
|
when 'ruby'
|
||||||
/^ruby #{q[RUBY_VERSION]}(?:[p ]|dev|rc).*? \+RJIT \[#{q[RUBY_PLATFORM]}\]$/
|
/^ruby #{q[RUBY_VERSION]}(?:[p ]|dev|rc).*? \+RJIT (\+MN )?\[#{q[RUBY_PLATFORM]}\]$/
|
||||||
else
|
else
|
||||||
VERSION_PATTERN
|
VERSION_PATTERN
|
||||||
end
|
end
|
||||||
|
@ -1626,6 +1626,8 @@ Init_native_thread(rb_thread_t *main_th)
|
|||||||
vm->ractor.sched.dnt_cnt = 1;
|
vm->ractor.sched.dnt_cnt = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern int ruby_mn_threads_enabled;
|
||||||
|
|
||||||
void
|
void
|
||||||
ruby_mn_threads_params(void)
|
ruby_mn_threads_params(void)
|
||||||
{
|
{
|
||||||
@ -1633,38 +1635,19 @@ ruby_mn_threads_params(void)
|
|||||||
rb_ractor_t *main_ractor = GET_RACTOR();
|
rb_ractor_t *main_ractor = GET_RACTOR();
|
||||||
|
|
||||||
const char *mn_threads_cstr = getenv("RUBY_MN_THREADS");
|
const char *mn_threads_cstr = getenv("RUBY_MN_THREADS");
|
||||||
bool enable_mn_threads;
|
bool enable_mn_threads = false;
|
||||||
|
|
||||||
if (mn_threads_cstr && (enable_mn_threads = atoi(mn_threads_cstr) > 0)) {
|
if (USE_MN_THREADS && mn_threads_cstr && (enable_mn_threads = atoi(mn_threads_cstr) > 0)) {
|
||||||
#if USE_MN_THREADS
|
// enabled
|
||||||
if (RTEST(ruby_verbose)) {
|
ruby_mn_threads_enabled = 1;
|
||||||
fprintf(stderr, "RUBY_MN_THREADS = %s (default: 0)\n", mn_threads_cstr);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
enable_mn_threads = false;
|
|
||||||
if (RTEST(ruby_verbose)) {
|
|
||||||
fprintf(stderr, "RUBY_MN_THREADS = %s is specified, but MN threads are not implemented on this executable.", mn_threads_cstr);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
enable_mn_threads = false; // default: off on main Ractor
|
|
||||||
}
|
}
|
||||||
main_ractor->threads.sched.enable_mn_threads = enable_mn_threads;
|
main_ractor->threads.sched.enable_mn_threads = enable_mn_threads;
|
||||||
|
|
||||||
const char *max_cpu_cstr = getenv("RUBY_MAX_CPU");
|
const char *max_cpu_cstr = getenv("RUBY_MAX_CPU");
|
||||||
const int default_max_cpu = 8; // TODO: CPU num?
|
const int default_max_cpu = 8; // TODO: CPU num?
|
||||||
int max_cpu;
|
int max_cpu = default_max_cpu;
|
||||||
if (max_cpu_cstr && (max_cpu = atoi(max_cpu_cstr)) > 0) {
|
|
||||||
if (RTEST(ruby_verbose)) {
|
if (USE_MN_THREADS && max_cpu_cstr && (max_cpu = atoi(max_cpu_cstr)) > 0) {
|
||||||
#if USE_MN_THREADS
|
|
||||||
fprintf(stderr, "RUBY_MAX_CPU = %d (default: %d)\n", max_cpu, default_max_cpu);
|
|
||||||
#else
|
|
||||||
fprintf(stderr, "RUBY_MAX_CPU = %d is specified, but MN threads are not implemented on this executable.", max_cpu);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
max_cpu = default_max_cpu;
|
max_cpu = default_max_cpu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
12
version.c
12
version.c
@ -139,12 +139,15 @@ Init_version(void)
|
|||||||
#define YJIT_OPTS_ON 0
|
#define YJIT_OPTS_ON 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int ruby_mn_threads_enabled;
|
||||||
|
|
||||||
void
|
void
|
||||||
Init_ruby_description(ruby_cmdline_options_t *opt)
|
Init_ruby_description(ruby_cmdline_options_t *opt)
|
||||||
{
|
{
|
||||||
static char desc[
|
static char desc[
|
||||||
sizeof(ruby_description)
|
sizeof(ruby_description)
|
||||||
+ rb_strlen_lit(YJIT_DESCRIPTION)
|
+ rb_strlen_lit(YJIT_DESCRIPTION)
|
||||||
|
+ rb_strlen_lit(" +MN")
|
||||||
];
|
];
|
||||||
|
|
||||||
const char *const jit_opt =
|
const char *const jit_opt =
|
||||||
@ -152,9 +155,16 @@ Init_ruby_description(ruby_cmdline_options_t *opt)
|
|||||||
YJIT_OPTS_ON ? YJIT_DESCRIPTION :
|
YJIT_OPTS_ON ? YJIT_DESCRIPTION :
|
||||||
"";
|
"";
|
||||||
|
|
||||||
int n = snprintf(desc, sizeof(desc), "%.*s" /* jit_opt */"%s" "%s",
|
const char *const threads_opt = ruby_mn_threads_enabled ? " +MN" : "";
|
||||||
|
|
||||||
|
int n = snprintf(desc, sizeof(desc),
|
||||||
|
"%.*s"
|
||||||
|
"%s" // jit_opt
|
||||||
|
"%s" // threads_opts
|
||||||
|
"%s",
|
||||||
ruby_description_opt_point, ruby_description,
|
ruby_description_opt_point, ruby_description,
|
||||||
jit_opt,
|
jit_opt,
|
||||||
|
threads_opt,
|
||||||
ruby_description + ruby_description_opt_point);
|
ruby_description + ruby_description_opt_point);
|
||||||
|
|
||||||
VALUE description = rb_obj_freeze(rb_usascii_str_new_static(desc, n));
|
VALUE description = rb_obj_freeze(rb_usascii_str_new_static(desc, n));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user