Pawel Dziepak
a04b7d9f96
power: Remove old cpufreq interface
2013-11-22 05:30:14 +01:00
Pawel Dziepak
208f76e578
preferences: Remove CPUFrequency
...
We can't reliably set contemporary processors to an arbitrary frequency.
There are dependencies between cores and thechnologies like Turbo Boost
which may make actual frequency significantly different than the requested.
Moreover, it is the scheduler job to decide how much CPU performance is
needed and user shouldn't interfere with that.
2013-11-22 05:24:44 +01:00
Pawel Dziepak
99a2e56579
drivers: Remove Intel Enhanced SpeedStep driver
...
In current state this driver is useless anyway. It's not MP safe.
The P-state values stored in hardcoded tables are only for processors
on which we can't use SpeedStep, because of lack of invariant TSC.
Proper driver should get P-states from ACPI, ensure that the CPU offers
invariant TSC and obviouslt be MP safe.
2013-11-22 05:11:03 +01:00
Pawel Dziepak
7c7b9b795b
scheduler: Return time stolen by irq and ipi handlers
2013-11-22 04:25:37 +01:00
Pawel Dziepak
1a7eb50254
scheduler: Calculate correct load on SMT processors
2013-11-22 03:20:19 +01:00
Pawel Dziepak
65741c8b56
scheduler: Improve locking
2013-11-22 03:00:08 +01:00
Pawel Dziepak
4ec76fd89d
libroot: {g,s}et_scheduler_mode(): Avoid name clash
...
Thanks Ingo for pointing this out.
2013-11-21 21:51:46 +01:00
Pawel Dziepak
14e36af649
kernel[/util]: Fix debug builds
2013-11-21 03:24:54 +01:00
Pawel Dziepak
024541a4c8
kernel: Improve rw_spinlock implementation
...
* Add more debug checks
* Reduce the number of executed instructions that lock the bus.
2013-11-21 02:25:03 +01:00
Pawel Dziepak
6fb61d001a
scheduler: Preallocate temporary heaps for debug commands
2013-11-21 00:59:40 +01:00
Pawel Dziepak
308f594e2a
kernel, libroot: Make scheduler modes interface public
2013-11-20 23:32:40 +01:00
Pawel Dziepak
cd1e7814a9
scheduler: Reduce scheduler mode lock cache bouncing
2013-11-20 21:49:31 +01:00
Pawel Dziepak
683b9bbf07
scheduler: Improve power saving mode, part 2
...
Consequences of committing & pushing too quickly...
2013-11-20 21:21:31 +01:00
Pawel Dziepak
ecfd444935
scheduler: Improve power saving mode
...
* Remove possibility to temporarily disable small task packing.
* When small task packing target gets overloaded continue packing
threads on another core, but avoid migrating the already packed
ones.
Scheduler still tends to needlessly migrate threads to another cores
when under heavier load, but it is now much better than before.
2013-11-20 20:52:11 +01:00
Pawel Dziepak
3eb4224bf6
kernel: Make sure mutex::holder is set to a valid value
2013-11-20 17:53:39 +01:00
Pawel Dziepak
57d5d678f2
x86_64: Fix atomic functions
2013-11-20 17:02:51 +01:00
Pawel Dziepak
c4ac37a35e
scheduler: Try to pack IRQs in power saving mode
2013-11-20 12:52:05 +01:00
Pawel Dziepak
9c2e74da04
scheduler: Move mode specific logic to separate files
2013-11-20 09:46:59 +01:00
Pawel Dziepak
e2ff9a2865
scheduler: Rebalance IRQs on overloaded cores
2013-11-18 07:05:35 +01:00
Pawel Dziepak
f14e4567e8
kernel: Use CPU topology to distribute IRQs
2013-11-18 05:37:45 +01:00
Pawel Dziepak
d897a478d7
kernel: Allow reassigning IRQs to logical processors
2013-11-18 04:55:25 +01:00
Pawel Dziepak
955c7edec2
kernel: Measure time spent in interrupt handlers
2013-11-18 01:50:37 +01:00
Pawel Dziepak
6a164daad4
kernel: Track load produced by interrupt handlers
2013-11-18 01:17:44 +01:00
Pawel Dziepak
288a2664a2
scheduler: Remove sSchedulerInternalLock
...
* pin idle threads to their specific CPUs
* allow scheduler to implement SMP_MSG_RESCHEDULE handler
* scheduler_set_thread_priority() reworked
* at reschedule: enqueue old thread after dequeueing the new one
2013-11-13 05:31:58 +01:00
Pawel Dziepak
72e1b394a4
scheduler: Fix gcc2 build
2013-11-13 00:36:48 +01:00
Pawel Dziepak
5f3a65e578
scheduler: Remove sCorePriorityHeap
...
sCorePriorityHeap was meant to be a temporary solution anyway. Thread
migration and assignment is now entirely based on core load.
2013-11-13 00:01:02 +01:00
Pawel Dziepak
829f836324
scheduler: Minor cleanup
2013-11-12 04:42:12 +01:00
Pawel Dziepak
8818c942dd
scheduler: Add {CPU,Core,Package}Entry constructors
2013-11-12 04:26:32 +01:00
Pawel Dziepak
e1c40769d3
scheduler: Atomically access time and load measurements
2013-11-12 04:23:42 +01:00
Pawel Dziepak
d17b71d6b0
scheduler: Reduce false sharing of per-CPU and per-core data
2013-11-11 21:46:18 +01:00
Pawel Dziepak
a1feba678d
kernel/undertaker: Make sure the thread isn't running anymore
2013-11-11 21:04:38 +01:00
Pawel Dziepak
7e1c4534df
libroot: Add adaptive mutex implementation
2013-11-08 03:37:30 +01:00
Pawel Dziepak
03fb2d8868
kernel: Remove gSchedulerLock
...
* Thread::scheduler_lock protects thread state, priority, etc.
* sThreadCreationLock protects thread creation and removal and list of
threads in team.
* Team::signal_lock and Team::time_lock protect list of threads in team
as well.
* Scheduler uses its own internal locking.
2013-11-08 02:41:26 +01:00
Pawel Dziepak
72addc62e0
kernel: Introduce Thread::time_lock and Team::time_lock
2013-11-07 22:16:36 +01:00
Pawel Dziepak
3519eb334a
kernel: Change Thread::team_lock to rw_spinlock
2013-11-07 04:20:59 +01:00
Pawel Dziepak
defee266db
kernel: Add read write spinlock implementation
2013-11-07 04:20:32 +01:00
Pawel Dziepak
20ded5c2eb
kernel/posix: Do not use thread_block_locked()
2013-11-07 02:06:42 +01:00
Pawel Dziepak
d3e5752b11
scheduler: Performance mode is actually low latency mode
2013-11-07 01:50:20 +01:00
Pawel Dziepak
83983eaf38
kernel: Remove Thread::alarm
2013-11-07 01:40:02 +01:00
Pawel Dziepak
aa4aca0264
kernel: Protect signal data with Team::signal_lock
2013-11-07 01:32:48 +01:00
Pawel Dziepak
73ad2473e7
Remove remaining unnecessary 'volatile' qualifiers
2013-11-06 00:03:07 +01:00
Pawel Dziepak
d929eb20ba
docs: Update atomic_*() functions documentation
2013-11-05 22:54:25 +01:00
Pawel Dziepak
273f2f38cd
kernel: Improve spinlock implementation
...
atomic_or() and atomic_and() are not supported by x86 are need to be
emulated using CAS. Use atomic_get_and_set() and atomic_set() instead.
2013-11-05 22:47:18 +01:00
Pawel Dziepak
077c84eb27
kernel: atomic_*() functions rework
...
* No need for the atomically changed variables to be declared as
volatile.
* Drop support for atomically getting and setting unaligned data.
* Introduce atomic_get_and_set[64]() which works the same as
atomic_set[64]() used to. atomic_set[64]() does not return the
previous value anymore.
2013-11-05 22:32:59 +01:00
Pawel Dziepak
e7dba861fd
kernel: User{Event, Timer}: Use atomic access where necessary
2013-11-05 20:28:25 +01:00
Pawel Dziepak
f4b088a992
kernel: Protect UserTimers with sUserTimerLock
2013-11-05 05:36:05 +01:00
Pawel Dziepak
4824f7630b
kernel: Add sequential lock implementation
2013-11-05 04:16:13 +01:00
Pawel Dziepak
958f6d00aa
kernel: Make UserEvent::Fire() work without gSchedulerLock held
2013-11-04 23:53:20 +01:00
Pawel Dziepak
3c819aaa72
kernel: DPC: remove schedulerLocked argument
2013-11-04 23:51:18 +01:00
Pawel Dziepak
11cacd0c13
kernel: Remove thread_block_with_timeout_locked()
2013-11-04 23:45:14 +01:00