#
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 ...
|