On Thu, 11 Mar 2004 14:19:39 -0500 Mike B <meb_at_cinci.rr.com> wrote: > Conrad Sabatier wrote: (snip) > seconds to redraw the screen. This sluggishness isn't exclusive to > firefox, opera and openoffice are noticeably laggy under ULE as well. I > WANT to like and use ULE but the performance just isn't there. I think all of those applications are using libpthread, which utilizes scheduler activation mechanism. Unfortunately, due to over-optimization in sched_switch(), SCHED_ULE doesn't give reasonable CPU time to the threads which are using scheduler activation. Detailed analisis is described in my previous message posted to current_at_: "SCHED_ULE sometimes puts P_SA processes into ksq_next unnecessarily" <20040213063139.71298ea9.taku_at_cent.saitama-u.ac.jp> or http://docs.freebsd.org/cgi/mid.cgi?20040213063139.71298ea9.taku , which didn't get broader audience :( Until the problem is fully addressed, I will propose following patch to be applied. (the least intrusive one attached in the former message) --- sched_ule.c.orig Fri Feb 13 05:24:48 2004 +++ sched_ule.c Fri Feb 13 05:37:53 2004 _at__at_ -186,7 +186,7 _at__at_ #define SCHED_INTERACTIVE(kg) \ (sched_interact_score(kg) < SCHED_INTERACT_THRESH) #define SCHED_CURR(kg, ke) \ - (ke->ke_thread->td_priority != kg->kg_user_pri || \ + (ke->ke_thread->td_priority < kg->kg_user_pri || \ SCHED_INTERACTIVE(kg)) /* _at__at_ -1166,11 +1166,8 _at__at_ */ if ((ke->ke_flags & KEF_ASSIGNED) == 0) { if (TD_IS_RUNNING(td)) { - if (td->td_proc->p_flag & P_SA) { - kseq_load_rem(KSEQ_CPU(ke->ke_cpu), ke); - setrunqueue(td); - } else - kseq_runq_add(KSEQ_SELF(), ke); + kseq_load_rem(KSEQ_CPU(ke->ke_cpu), ke); + setrunqueue(td); } else { if (ke->ke_runq) { kseq_load_rem(KSEQ_CPU(ke->ke_cpu), ke); -- -|-__ YAMAMOTO, Taku <taku_at_cent.saitama-u.ac.jp> | __ <Received on Thu Mar 11 2004 - 15:23:54 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:47 UTC