Date: Thu, 3 Nov 2011 10:21:48 -1000 (HST) From: Jeff Roberson <jroberson@jroberson.net> To: Ivan Klymenko <fidaj@ukr.net> Cc: freebsd-current@freebsd.org Subject: Re: Increase the degree of interactivity ULE scheduler Message-ID: <alpine.BSF.2.00.1111031018030.1995@desktop> In-Reply-To: <4ea29f2c.a823440a.4aa0.3599SMTPIN_ADDED@mx.google.com> References: <4ea29f2c.a823440a.4aa0.3599SMTPIN_ADDED@mx.google.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 22 Oct 2011, Ivan Klymenko wrote: > Hello people! > > I have: > CPU: Intel(R) Core(TM)2 Duo CPU T7250 @ 2.00GHz (1994.48-MHz K8-class CPU) > FreeBSD 10.0-CURRENT r226607 amd64 > > For example during the building of the port lang/gcc46 in four streams (-j 4) with a heavy load on the processor - use the system was nearly impossible - responsiveness was terrible - the mouse cursor sometimes froze on the spot a few seconds... Am I right in understanding that you have only two cores? What else is running that achieves poor interactivity? What is the cpu utilization of your x server at this time? > > I managed to achieve a significant increase in the degree of interactivity ULE scheduler due to the following changes: This patch probably breaks nice, adaptive idling, and slows the interactivity computation. That being said I'm not sure why it helps you. It seems that there are increasing reports of bad interactivity creeping in to ULE over the last year. If people can help provide me with data I can look into this more. Thanks for your report. Jeff > ########################## > --- sched_ule.c.orig 2011-10-22 11:40:30.000000000 +0300 > +++ sched_ule.c 2011-10-22 12:25:05.000000000 +0300 > @@ -2119,6 +2119,14 @@ > > THREAD_LOCK_ASSERT(td, MA_OWNED); > tdq = TDQ_SELF(); > + if (td->td_pri_class & PRI_FIFO_BIT) > + return; > + ts = td->td_sched; > + /* > + * We used up one time slice. > + */ > + if (--ts->ts_slice > 0) > + return; > #ifdef SMP > /* > * We run the long term load balancer infrequently on the first cpu. > @@ -2144,9 +2152,6 @@ > if (TAILQ_EMPTY(&tdq->tdq_timeshare.rq_queues[tdq->tdq_ridx])) > tdq->tdq_ridx = tdq->tdq_idx; > } > - ts = td->td_sched; > - if (td->td_pri_class & PRI_FIFO_BIT) > - return; > if (PRI_BASE(td->td_pri_class) == PRI_TIMESHARE) { > /* > * We used a tick; charge it to the thread so > @@ -2157,11 +2162,6 @@ > sched_priority(td); > } > /* > - * We used up one time slice. > - */ > - if (--ts->ts_slice > 0) > - return; > - /* > * We're out of time, force a requeue at userret(). > */ > ts->ts_slice = sched_slice; > ########################## > > What do you think about this? > > Thanks!
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?alpine.BSF.2.00.1111031018030.1995>