@@ -90,11 +90,6 @@ static const void *const condattr_monotonic = NULL;
9090 #endif
9191#endif
9292
93- #ifndef MINIMUM_SNT
94- // make at least MINIMUM_SNT snts for debug.
95- #define MINIMUM_SNT 0
96- #endif
97-
9893#ifdef HAVE_SCHED_YIELD
9994#define native_thread_yield () (void)sched_yield()
10095#else
@@ -559,20 +554,6 @@ ractor_sched_timeslice_threads_contain_p(rb_vm_t *vm, rb_thread_t *th)
559554
560555static void ractor_sched_barrier_join_signal_locked (rb_vm_t * vm );
561556
562- static bool
563- need_more_shared_native_threads_p (rb_vm_t * vm )
564- {
565- ASSERT_ractor_sched_locked (vm , NULL );
566-
567- unsigned int schedulable_ractor_cnt = vm -> ractor .cnt ;
568- unsigned int snt_cnt = vm -> ractor .sched .snt_cnt ;
569- RUBY_ASSERT (schedulable_ractor_cnt >= 1 );
570- if (!vm -> ractor .main_ractor -> threads .sched .enable_mn_threads ) {
571- schedulable_ractor_cnt -- ; // do not need snt for main ractor
572- }
573- return snt_cnt < MINIMUM_SNT || (snt_cnt < schedulable_ractor_cnt && snt_cnt < vm -> ractor .sched .max_cpu );
574- }
575-
576557// setup timeslice signals by the timer thread.
577558static void
578559thread_sched_setup_running_threads (struct rb_thread_sched * sched , rb_ractor_t * cr , rb_vm_t * vm ,
@@ -583,7 +564,6 @@ thread_sched_setup_running_threads(struct rb_thread_sched *sched, rb_ractor_t *c
583564#endif
584565
585566 rb_thread_t * del_timeslice_th ;
586- bool wakeup_timer_thread = false;
587567
588568 if (del_th && sched -> is_running_timeslice ) {
589569 del_timeslice_th = del_th ;
@@ -612,12 +592,6 @@ thread_sched_setup_running_threads(struct rb_thread_sched *sched, rb_ractor_t *c
612592 ractor_sched_barrier_join_signal_locked (vm );
613593 }
614594 sched -> is_running = false;
615-
616- // If we need more SNTs, the timer thread should be awake and monitoring the situation so it can correct it.
617- if (!del_th -> has_dedicated_nt && del_th -> nt -> dedicated > 0 && (sched -> running != NULL || vm -> ractor .sched .grq_cnt > 0 ) &&
618- need_more_shared_native_threads_p (vm )) {
619- wakeup_timer_thread = true;
620- }
621595 }
622596
623597 if (add_th ) {
@@ -642,7 +616,7 @@ thread_sched_setup_running_threads(struct rb_thread_sched *sched, rb_ractor_t *c
642616 ccan_list_add (& vm -> ractor .sched .timeslice_threads , & add_timeslice_th -> sched .node .timeslice_threads );
643617 sched -> is_running_timeslice = true;
644618 if (was_empty ) {
645- wakeup_timer_thread = true ;
619+ timer_thread_wakeup_locked ( vm ) ;
646620 }
647621 }
648622
@@ -651,10 +625,6 @@ thread_sched_setup_running_threads(struct rb_thread_sched *sched, rb_ractor_t *c
651625 ccan_list_del_init (& del_timeslice_th -> sched .node .timeslice_threads );
652626 }
653627
654- if (wakeup_timer_thread ) {
655- timer_thread_wakeup_locked (vm );
656- }
657-
658628 VM_ASSERT (ractor_sched_running_threads_size (vm ) == vm -> ractor .sched .running_cnt );
659629 VM_ASSERT (ractor_sched_timeslice_threads_size (vm ) <= vm -> ractor .sched .running_cnt );
660630 }
@@ -1294,6 +1264,11 @@ ractor_sched_enq(rb_vm_t *vm, rb_ractor_t *r)
12941264#define SNT_KEEP_SECONDS 0
12951265#endif
12961266
1267+ #ifndef MINIMUM_SNT
1268+ // make at least MINIMUM_SNT snts for debug.
1269+ #define MINIMUM_SNT 0
1270+ #endif
1271+
12971272static rb_ractor_t *
12981273ractor_sched_deq (rb_vm_t * vm , rb_ractor_t * cr )
12991274{
0 commit comments