History log of /freebsd/sys/kern/sched_ule.c (Results 751 – 775 of 810)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 4c9612c6 16-Oct-2003 Jeff Roberson <jeff@FreeBSD.org>

- The non iterative algorithm for interact_update was broken due to
rounding errors. This was the source of the majority of the
interactivity problems. Reintroduce the old algorithm and its X

- The non iterative algorithm for interact_update was broken due to
rounding errors. This was the source of the majority of the
interactivity problems. Reintroduce the old algorithm and its XXX.
- Up the interactivity threshold to 30. It really could stand to be even
a tiny bit higher.
- Let the sleep and run time accumulate up to 5 seconds of history rather
than two. This helps stop XFree86 from becoming non-interactive during
bursts of activity.

show more ...


# 08fd6713 15-Oct-2003 Jeff Roberson <jeff@FreeBSD.org>

- If our user_pri doesn't match our actual priority our priority has been
elevated either due to priority propagation or because we're in the
kernel in either case, put us on the current queue

- If our user_pri doesn't match our actual priority our priority has been
elevated either due to priority propagation or because we're in the
kernel in either case, put us on the current queue so that we dont
stop others from using important resources. At some point the priority
elevations from sleeping in the kernel should go away.
- Remove an optimization in sched_userret(). Before we would only set
NEEDRESCHED if there was something of a higher priority available. This
is a trivial optimization and it breaks priority propagation because it
doesn't take threads which we may be blocking into account. Notice that
the thread which is blocking others gets up to one tick of cpu time before
we honor this NEEDRESCHED in sched_clock().

show more ...


# 736c97c7 12-Oct-2003 Jeff Roberson <jeff@FreeBSD.org>

- In SCHED_CURR() add holding Giant to the list of criteria that will keep
you on the current queue. In the future, it would be nice if priority
propagation could deterministicly pluck a threa

- In SCHED_CURR() add holding Giant to the list of criteria that will keep
you on the current queue. In the future, it would be nice if priority
propagation could deterministicly pluck a thread off of the next queue
and put it on the current queue. Until then this hack stops us from
holding up our entire current queue, including interrupt handlers, while
a thread on the next queue is blocked while holding Giant.
- Inherit our pctcpu information from our parent.

show more ...


# 8ec82641 04-Oct-2003 Jeff Roberson <jeff@FreeBSD.org>

- Change a lame iterative algorithm to a constant time algorithm. Remove
the XXX that complains about it as well.

Submitted by: ThomasWuerfl@gmx.de


# 81de51bf 20-Sep-2003 Jeff Roberson <jeff@FreeBSD.org>

- Somewhere along the line I stupidly removed critical logic from
sched_ptcpu_update(). This caused erroneous cpu times in TOP for
processes that were asleep. Replace the code that was remove

- Somewhere along the line I stupidly removed critical logic from
sched_ptcpu_update(). This caused erroneous cpu times in TOP for
processes that were asleep. Replace the code that was removed.

show more ...


# ab2baa72 26-Aug-2003 David Xu <davidxu@FreeBSD.org>

Let SA process work under ULE scheduler, originally it would panic kernel.

Reviewed by: jeff


# c06eb4e2 19-Aug-2003 Sam Leffler <sam@FreeBSD.org>

Change instances of callout_init that specify MPSAFE behaviour to
use CALLOUT_MPSAFE instead of "1" for the second parameter. This
does not change the behaviour; it just makes the intent more clear.


# 0c0a98b2 08-Jul-2003 Jeff Roberson <jeff@FreeBSD.org>

- When stealing a kse in kseq_move() ignore the current kseq's min nice
value. We want to steal any thread, even one that is not given a slice
on its current queue.


# 0ec896fd 07-Jul-2003 Jeff Roberson <jeff@FreeBSD.org>

- Clean up an unused variable.

Submitted by: Steve Kargl <skg@routmask.apl.washington.edu>


# 749d01b0 04-Jul-2003 Jeff Roberson <jeff@FreeBSD.org>

- Parse the cpu topology map in sched_setup().
- Associate logical CPUs on the same physical core with the same kseq.
- Adjust code that assumed there would only be one running thread in any
kse

- Parse the cpu topology map in sched_setup().
- Associate logical CPUs on the same physical core with the same kseq.
- Adjust code that assumed there would only be one running thread in any
kseq.
- Wrap the HTT code with a ULE_HTT_EXPERIMENTAL ifdef. This is a start
towards HyperThreading support but it isn't quite there yet.

show more ...


# 7a20304f 28-Jun-2003 Jeff Roberson <jeff@FreeBSD.org>

- Don't migrate to stopped cpus.


# 86f8ae96 28-Jun-2003 Jeff Roberson <jeff@FreeBSD.org>

- If smp is not started yet don't try to load balance or we'll put threads
on cpus that aren't running yet.


# a91172ad 28-Jun-2003 Jeff Roberson <jeff@FreeBSD.org>

- Throttle the inherited sleep and run time in sched_fork_kseg(). This
allows us to learn the behavior of a thread much more quickly after it
starts up.


# e493a5d9 28-Jun-2003 Jeff Roberson <jeff@FreeBSD.org>

- Adjust the default maximum slice value to ~140ms. This has improved the
nice distribution without significantly impacting interactive response.
As a side effect it should also allow batch pr

- Adjust the default maximum slice value to ~140ms. This has improved the
nice distribution without significantly impacting interactive response.
As a side effect it should also allow batch processes to run for a
slightly longer period which will positively impact their performance.

show more ...


# 1a7a9d0e 21-Jun-2003 Jeff Roberson <jeff@FreeBSD.org>

- lticks was erroneously being updated in sched_pctcpu(). This was causing
us to skip the pctcpu_update() call which lead to inaccurate cpu usage
statistics for processes that didn't run often.


# 665cb285 21-Jun-2003 Jeff Roberson <jeff@FreeBSD.org>

- Don't allow nice to have such a large effect on priority. This was
causing poor interactive performance while unnice processes were running.
The new scheme still allows nice to have an effec

- Don't allow nice to have such a large effect on priority. This was
causing poor interactive performance while unnice processes were running.
The new scheme still allows nice to have an effect on priority but it is
not as dramatic as the effect of the interactivity score.

show more ...


# d07ac847 17-Jun-2003 Jeff Roberson <jeff@FreeBSD.org>

- Use a more robust mechanism for determining whether or not a kse is on a
kseq.


# 7cd0f833 17-Jun-2003 Jeff Roberson <jeff@FreeBSD.org>

- Temporarily patch a problem where the interact score could be negative
because the run time exceeds the largest value a signed int can hold.
The real solution involves calculating how far we

- Temporarily patch a problem where the interact score could be negative
because the run time exceeds the largest value a signed int can hold.
The real solution involves calculating how far we are over the limit.
To quickly solve this problem we loop removing 1/5th of the current value
until it falls below the limit. The common case requires no passes.

show more ...


# 4b60e324 17-Jun-2003 Jeff Roberson <jeff@FreeBSD.org>

- Add a new function "sched_interact_update()" that scales back the sleep
and run time.
- Scale the sleep and run time back via sched_interact_update() in more
places. This is to keep the sta

- Add a new function "sched_interact_update()" that scales back the sleep
and run time.
- Scale the sleep and run time back via sched_interact_update() in more
places. This is to keep the statistic more accurate.
- Charge a parent one tick for forking a child.
- Add only the run time and not the sleep time to the parents kg when a
thread exits. This allows us to give a penalty for having an expensive
thread exit but does not give a bonus for having an interactive thread
exit.
- Change the SLP_RUN_THROTTLE to limit us to 4/5th and not 1/2.
- Change the SLP_RUN_MAX to two seconds. This keeps bursty interactive
applications like mozilla and openoffice in the interactive range even
through expensive tasks.
- Recalculate the slice after every sleep. This ensures that once a task
has been marked interactive it only has a slice of 1 at the risk of
giving tasks that sleep for a very brief period a longer time slice.

show more ...


# 3c124732 15-Jun-2003 Jeff Roberson <jeff@FreeBSD.org>

- Increase the ksegrp's cpu time history buffer to 250ms.
- Decrease the history buffer divisor to 2 so that we remember more of the
old behavior.


# b41f3d22 15-Jun-2003 Jeff Roberson <jeff@FreeBSD.org>

- Cap the growth of sleep and run time in sched_exit_kse().


# 210491d3 15-Jun-2003 Jeff Roberson <jeff@FreeBSD.org>

- Fix the maximum slice value. I accidentally checked in a value of '2'
which meant no process would run for longer than 20ms.
- Slightly redo the interactivity scorer. It follows the same algo

- Fix the maximum slice value. I accidentally checked in a value of '2'
which meant no process would run for longer than 20ms.
- Slightly redo the interactivity scorer. It follows the same algorithm but
in a slightly more correct way. Previously values above half were
incorrect.
- Lower the interactivity threshold to 20. It seems that in testing non-
interactive tasks are hardly ever near there and expensive interactive
tasks can sometimes surpass it. This area needs more testing.
- Remove an unnecessary KTR.
- Fix a case where an idle thread that had an elevated priority due to
priority prop. would be placed back on the idle queue.
- Delay setting NEEDRESCHED until userret() for threads that haad their
priority elevated while in kernel. This gives us the same context switch
optimization as SCHED_4BSD.
- Limit the child's slice to 1 in sched_fork_kse() so we detect its behavior
more quickly.
- Inhert some of the run/slp time from the child in sched_exit_ksegrp().
- Redo some of the priority comparisons so they are more clear.
- Throttle the frequency of sched_pctcpu_update() so that rounding errors
do not make it invalid.

show more ...


# 0e2a4d3a 15-Jun-2003 David Xu <davidxu@FreeBSD.org>

Rename P_THREADED to P_SA. P_SA means a process is using scheduler
activations.


# 677b542e 11-Jun-2003 David E. O'Brien <obrien@FreeBSD.org>

Use __FBSDID().


# 356500a3 09-Jun-2003 Jeff Roberson <jeff@FreeBSD.org>

- Add a simple CPU load balancing algorithm. This works by executing once a
second and equalizing the load between the two most imbalanced CPU. This
is intended to clear up long term load imb

- Add a simple CPU load balancing algorithm. This works by executing once a
second and equalizing the load between the two most imbalanced CPU. This
is intended to clear up long term load imbalances that would not be handled
by the 'pull' method in sched_choose().
- Pull out some bits of sched_choose() into a kseq_move() function that moves
an arbitrary thread from one kseq to another.

show more ...


1...<<313233