Revision tags: v6.2.1, v6.2.0, v6.3.0, v6.0.1, v6.0.0, v6.0.0rc1, v6.1.0, v5.8.3, v5.8.2 |
|
#
8fbc264d |
| 09-Jun-2020 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - Refactor sysclock_t from 32 to 64 bits
* Refactor the core cpu timer API, changing sysclock_t from 32 to 64 bits. Provide a full 64-bit count from all sources.
* Implement muldivu64() u
kernel - Refactor sysclock_t from 32 to 64 bits
* Refactor the core cpu timer API, changing sysclock_t from 32 to 64 bits. Provide a full 64-bit count from all sources.
* Implement muldivu64() using gcc's 128-bit integer type. This functions takes three 64-bit valus, performs (a * b) / d using a 128-bit intermediate calculation, and returns a 64-bit result.
Change all timer scaling functions to use this function which effectively gives systimers the capability of handling any timeout that fits 64 bits for the timer's resolution.
* Remove TSC frequency scaling, it is no longer needed. The TSC timer is now used at its full resolution.
* Use atomic_fcmpset_long() instead of a clock spinlock when updating the msb bits for hardware timer sources less than 64 bits wide.
* Properly recalculate existing systimers when the clock source is changed. Existing systimers were not being recalculated, leading to the system failing to boot when time sources had radically different clock frequencies.
show more ...
|
Revision tags: v5.8.1, v5.8.0, v5.9.0, v5.8.0rc1, v5.6.3, v5.6.2, v5.6.1, v5.6.0, v5.6.0rc1, v5.7.0, v5.4.3, v5.4.2, v5.4.1, v5.4.0, v5.5.0, v5.4.0rc1, v5.2.2, v5.2.1, v5.2.0, v5.3.0, v5.2.0rc, v5.0.2, v5.0.1, v5.0.0, v5.0.0rc2, v5.1.0, v5.0.0rc1, v4.8.1, v4.8.0, v4.6.2, v4.9.0, v4.8.0rc |
|
#
480ed3de |
| 11-Jan-2017 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - kernel - Incidental MPLOCK removal (usched, affinity)
* Affinity code needs to be protected via p->p_token and lwp->lwp_token. Remove use of the mplock.
* If tid is -1 getaffinity() will
kernel - kernel - Incidental MPLOCK removal (usched, affinity)
* Affinity code needs to be protected via p->p_token and lwp->lwp_token. Remove use of the mplock.
* If tid is -1 getaffinity() will lookup the lowest-numbered thread, and setaffinity will adjust ALL threads associated with the process.
* usched doesn't need mplock2.h
show more ...
|
#
77df3a01 |
| 11-Jan-2017 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
usched: Implement LWP lazy migration support.
Non-self migration can be achieved by just setting LWP's cpumask, which is almost costless. The migration will happen upon next time the target LWP is
usched: Implement LWP lazy migration support.
Non-self migration can be achieved by just setting LWP's cpumask, which is almost costless. The migration will happen upon next time the target LWP is scheduled.
Reviewed-by: dillon@
show more ...
|
Revision tags: v4.6.1, v4.6.0, v4.6.0rc2, v4.6.0rc, v4.7.0 |
|
#
df0cd41c |
| 23-Apr-2016 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - Reduce BSS size (2)
* Fix a bunch of other places in the kernel where large BSS arrays are declared. Reduces the kernel image by another ~2MB or so on top of the ~6MB saved in the last
kernel - Reduce BSS size (2)
* Fix a bunch of other places in the kernel where large BSS arrays are declared. Reduces the kernel image by another ~2MB or so on top of the ~6MB saved in the last commit.
* Primarily these are places where a 'struct thread' is being embedded in a structure which is being declared [MAXCPU]. With MAXCPU at 256 the result is pretty bloated. Changing the embedded thread to a thread pointer removes most of the bloat.
show more ...
|
Revision tags: v4.4.3, v4.4.2, v4.4.1, v4.4.0, v4.5.0, v4.4.0rc, v4.2.4, v4.3.1, v4.2.3, v4.2.1, v4.2.0, v4.0.6, v4.3.0, v4.2.0rc |
|
#
b2883fcf |
| 27-Apr-2015 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
usched/bsd4: Avoid ktr confliction on chooseproc
|
Revision tags: v4.0.5 |
|
#
f3f3eadb |
| 12-Mar-2015 |
Sascha Wildner <saw@online.de> |
kernel: Move semicolon from the definition of SYSINIT() to its invocations.
This affected around 70 of our (more or less) 270 SYSINIT() calls.
style(9) advocates the terminating semicolon to be sup
kernel: Move semicolon from the definition of SYSINIT() to its invocations.
This affected around 70 of our (more or less) 270 SYSINIT() calls.
style(9) advocates the terminating semicolon to be supplied by the invocation too, because it can make life easier for editors and other source code parsing programs.
show more ...
|
Revision tags: v4.0.4, v4.0.3, v4.0.2, v4.0.1, v4.0.0, v4.0.0rc3, v4.0.0rc2, v4.0.0rc, v4.1.0 |
|
#
ba87a4ab |
| 24-Aug-2014 |
Sascha Wildner <saw@online.de> |
kernel/spinlock: Add a description to struct spinlock.
And add it to spin_init() and SPINLOCK_INITIALIZER().
Submitted-by: dclink (see <http://bugs.dragonflybsd.org/issues/2714>) OK'd-by: dill
kernel/spinlock: Add a description to struct spinlock.
And add it to spin_init() and SPINLOCK_INITIALIZER().
Submitted-by: dclink (see <http://bugs.dragonflybsd.org/issues/2714>) OK'd-by: dillon
show more ...
|
Revision tags: v3.8.2 |
|
#
1d136c46 |
| 02-Aug-2014 |
Sascha Wildner <saw@online.de> |
kernel/usched: Make the bootverbose messages a bit more informative.
Talk about which scheduler this is about.
While here, change Sibs -> siblings.
|
#
399efd7f |
| 13-Jul-2014 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - Reduce console spam in verbose mode when printing cpu sets
* Add helper function kprint_cpuset().
* Print cpu ranges when printing out cpu sets.
* Print cpu ranges when generating topolog
kernel - Reduce console spam in verbose mode when printing cpu sets
* Add helper function kprint_cpuset().
* Print cpu ranges when printing out cpu sets.
* Print cpu ranges when generating topology output for sysctl
show more ...
|
#
f5cffc6d |
| 05-Jul-2014 |
Sascha Wildner <saw@online.de> |
kernel: Fix KTR compilation.
|
#
c07315c4 |
| 04-Jul-2014 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - Refactor cpumask_t to extend cpus past 64, part 1/2
* 64-bit systems only. 32-bit builds use the macros but cannot be expanded past 32 cpus.
* Change cpumask_t from __uint64_t to a stru
kernel - Refactor cpumask_t to extend cpus past 64, part 1/2
* 64-bit systems only. 32-bit builds use the macros but cannot be expanded past 32 cpus.
* Change cpumask_t from __uint64_t to a structure. This commit implements one 64-bit sub-element (the next one will implement four for 256 cpus).
* Create a CPUMASK_*() macro API for non-atomic and atomic cpumask manipulation. These macros generally take lvalues as arguments, allowing for a fairly optimal implementation.
* Change all C code operating on cpumask's to use the newly created CPUMASK_*() macro API.
* Compile-test 32 and 64-bit. Run-test 64-bit.
* Adjust sbin/usched, usr.sbin/powerd. usched currently needs more work.
show more ...
|
Revision tags: v3.8.1, v3.6.3, v3.8.0, v3.8.0rc2, v3.9.0, v3.8.0rc, v3.6.2, v3.6.1, v3.6.0, v3.7.1, v3.6.0rc, v3.7.0, v3.4.3 |
|
#
d87af38c |
| 02-Aug-2013 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - Fix panic when usched is used to force a cpu w/the dfly scheduler
* Fix a panic for 'usched dfly:0x1 sh', or other similar cpu forcing mechanic.
* The scheduler was not being notified of
kernel - Fix panic when usched is used to force a cpu w/the dfly scheduler
* Fix a panic for 'usched dfly:0x1 sh', or other similar cpu forcing mechanic.
* The scheduler was not being notified of the forced migration which caused it to assert on a sanity check later on. Add the needed infrastructure.
Reported-by: vsrinivas
show more ...
|
Revision tags: v3.4.2, v3.4.0, v3.4.1, v3.4.0rc, v3.5.0, v3.2.2 |
|
#
1918fc5c |
| 24-Oct-2012 |
Sascha Wildner <saw@online.de> |
kernel: Make SMP support default (and non-optional).
The 'SMP' kernel option gets removed with this commit, so it has to be removed from everybody's configs.
Reviewed-by: sjg Approved-by: many
|
Revision tags: v3.2.1 |
|
#
68a23bee |
| 13-Oct-2012 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - Fix sysclock_t comparison in usched code
* Fix a sysclock_t comparison that was attempting to detect an overflow by checking if an unsigned field was negative. The field has to be cast
kernel - Fix sysclock_t comparison in usched code
* Fix a sysclock_t comparison that was attempting to detect an overflow by checking if an unsigned field was negative. The field has to be cast to signed for the test to work as expected.
Reported-by: enjolras
show more ...
|
Revision tags: v3.2.0, v3.3.0 |
|
#
e3e6be1f |
| 25-Sep-2012 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - usched_dfly revamp (7), bring back td_release, sysv_sem, weights
* Bring back the td_release kernel priority adjustment.
* sysv_sem now attempts to delay wakeups until after releasing its
kernel - usched_dfly revamp (7), bring back td_release, sysv_sem, weights
* Bring back the td_release kernel priority adjustment.
* sysv_sem now attempts to delay wakeups until after releasing its token.
* Tune default weights.
* Do not depress priority until we've become the uschedcp.
* Fix priority sort for LWKT and usched_dfly to avoid context-switching across all runable threads twice.
show more ...
|
#
0846e4ce |
| 25-Sep-2012 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - usched_dfly revamp (6), reimplement shared spinlocks & misc others
* Rename gd_spinlocks_wr to just gd_spinlocks.
* Reimplement shared spinlocks and optimize the shared spinlock path. Co
kernel - usched_dfly revamp (6), reimplement shared spinlocks & misc others
* Rename gd_spinlocks_wr to just gd_spinlocks.
* Reimplement shared spinlocks and optimize the shared spinlock path. Contended exclusive spinlocks are less optimal with this change.
* Use shared spinlocks for all file descriptor accesses. This includes not only most IO calls like read() and write(), but also callbacks from kqueue to double-check the validity of a file descriptor.
* Use getnanouptime() instead of nanouptime() in kqueue_sleep() and kern_kevent(), removing a hardware I/O serialization (to read the HPET) from the critical path.
* These changes significantly reduce kernel spinlock contention when running postgres/pgbench benchmarks.
show more ...
|
#
d992c377 |
| 24-Sep-2012 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - usched_dfly revamp (4), improve tail
* Improve tail performance (many more cpu-bound processes than available cpus).
* Experiment with removing the LWKT priority adjustments for kernel v
kernel - usched_dfly revamp (4), improve tail
* Improve tail performance (many more cpu-bound processes than available cpus).
* Experiment with removing the LWKT priority adjustments for kernel vs user. Instead give LWKT a hint about the user scheduler when scheduling a thread. LWKT's round-robin is left unhinted to hopefully round-robin starved LWKTs running in kernel mode.
* Implement a better calculation for the per-thread uload than the priority. Instead, use estcpu.
* Adjust default weigntings for new uload calculation scale.
show more ...
|
#
de4d4cb0 |
| 21-Sep-2012 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - usched_dfly revamp
* NOTE: This introduces a few regressions at high loads. They've been identified and will be fixed in another iteration.
We've identified an issue with weight2. Wh
kernel - usched_dfly revamp
* NOTE: This introduces a few regressions at high loads. They've been identified and will be fixed in another iteration.
We've identified an issue with weight2. When weight2 successfully schedules a process pair on the same cpu it can lead to inefficiencies elsewhere in the scheduler related to user-mode and kernel-mode priority switching. In this situation testing pgbench/postgres pairs (e.g. -j $ncpus -c $ncpus) we sometimes see some serious regressions on multi-socket machines, and other times see remarkably high performance.
* Fix a reported panic.
* Revamp the weights and algorithms signficantly. Fix algorithmic errors and improve the accuracy of weight3. Add weight4 which basically tells the scheduler to try harder to find a free cpu to schedule the lwp on when the current cpu is busy doing something else.
show more ...
|
#
c016171e |
| 18-Sep-2012 |
Sascha Wildner <saw@online.de> |
kernel/usched_bsd4: Declare the KTR_INFO_MASTER(usched) as extern.
It is shared with usched_dfly.
|
#
696ae4d4 |
| 18-Sep-2012 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - add usched_dfly algorith, set as default for now (3)
* UP compile fixes.
Reported-by: swildner
|
#
e28d8b15 |
| 18-Sep-2012 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - add usched_dfly algorith, set as default for now
* Fork usched_bsd4 for continued development.
* Rewrite the bsd4 scheduler to use per-cpu spinlocks and queues.
* Reformulate the cpu sele
kernel - add usched_dfly algorith, set as default for now
* Fork usched_bsd4 for continued development.
* Rewrite the bsd4 scheduler to use per-cpu spinlocks and queues.
* Reformulate the cpu selection algorithm using the topology info. We now do a top-down iteration instead of a bottom-up iteration to calculate the best cpu node to schedule something to.
Implements both thread push to remote queue and pull from remote queue.
* Track a load factor on a per-cpu basis.
show more ...
|
#
901ecceb |
| 17-Sep-2012 |
Matthew Dillon <dillon@apollo.backplane.com> |
kernel - usched_bsd4 algorith fixes & improvements
* Fix a bug in the checks loop where the loop counter would be reset whenever it moved to a new queue.
* Improve the min_level_lwp selec code by
kernel - usched_bsd4 algorith fixes & improvements
* Fix a bug in the checks loop where the loop counter would be reset whenever it moved to a new queue.
* Improve the min_level_lwp selec code by also testing lwp_priority.
* Add code to kick the helper threads for the processes that weren't selected.
* Clean up some code syntax.
show more ...
|
#
f3025b16 |
| 30-Aug-2012 |
Alex Hornung <alex@alexhornung.com> |
usched_bsd4 - topology sched: go for safe defaults
* When we don't know how to handle the level of the current CPU, go for safe defaults disabling both cache-coherent and SMT scheduling.
* Thi
usched_bsd4 - topology sched: go for safe defaults
* When we don't know how to handle the level of the current CPU, go for safe defaults disabling both cache-coherent and SMT scheduling.
* This seems to be the case on single-core machines where the level is the PACKAGE_LEVEL.
Reported-by: Max Herrgard, Ferruccio Zamuner, David Shao Dragonfly-bug: http://bugs.dragonflybsd.org/issue2408 Dragonfly-bug: http://bugs.dragonflybsd.org/issue2413
show more ...
|
#
55b580ae |
| 24-Aug-2012 |
Alex Hornung <alex@alexhornung.com> |
usched_bsd4 - use wakeup_mycpu as appropriate
* In the need_user_resched_remote we need to use wakeup_mycpu to avoid sending out IPIs triggering a deep IPI recursion panic.
* In the setrunqueu
usched_bsd4 - use wakeup_mycpu as appropriate
* In the need_user_resched_remote we need to use wakeup_mycpu to avoid sending out IPIs triggering a deep IPI recursion panic.
* In the setrunqueue case use wakeup_mycpu as an optimization, since we know that we are on the same CPU as the helper thread we want to wake up.
In-discussion-with: Matt Dillon Reported-by: ftigeot
show more ...
|
#
90f4cbeb |
| 24-Aug-2012 |
Alex Hornung <alex@alexhornung.com> |
usched_bsd4 - fix incorrect use of PINTERLOCKED tsleep
* The first tsleep in sched_thread has not been interlocked, so it is not valid to call tsleep(..., PINTERLOCKED, ...).
|