Pawel Dziepak
f2243876df
scheduler: Remove some unnecessary checks against idle threads
2013-11-28 17:53:19 +01:00
Pawel Dziepak
f9ee217ad6
scheduler: Migrate threads less often in power saving mode
2013-11-28 16:33:50 +01:00
Pawel Dziepak
286b341a40
kernel: Merge two occurences of thread resume code
2013-11-28 14:03:57 +01:00
Pawel Dziepak
87115715b4
scheduler: Protect package data with rw_spinlock
2013-11-27 04:57:26 +01:00
Pawel Dziepak
9caf7f4fb9
scheduler: Update estimate_max_scheduling_latency()
2013-11-27 04:15:36 +01:00
Pawel Dziepak
7d7dc357bf
scheduler: Move simple inline functions to scheduler_common.h
2013-11-27 03:50:43 +01:00
Pawel Dziepak
28da7e985f
scheduler: Improve debug commands
2013-11-27 03:36:06 +01:00
Pawel Dziepak
22ae68fa69
scheduler: Simplify thread priority penalties
2013-11-27 03:19:44 +01:00
Pawel Dziepak
b41eaf299a
scheduler_set_thread_priority: Fix null dereference
2013-11-26 03:40:32 +01:00
Pawel Dziepak
35153d1c49
scheduler: Send reschedule ICI after enqueueing the thread
2013-11-26 03:03:41 +01:00
Pawel Dziepak
7db89e8dc3
kernel: Rework cpuidle module
...
* Create new interface for cpuidle modules (similar to the cpufreq
interface)
* Generic cpuidle module is no longer needed
* Fix and update Intel C-State module
2013-11-25 23:50:27 +01:00
Pawel Dziepak
0e94a12f8e
kernel: Make CACHE_LINE_ALIGN visible in the whole kernel
2013-11-25 00:35:15 +01:00
Pawel Dziepak
26970784cd
scheduler: Clean scheduler_common.h
...
scheduler_common.h is now meant for types, variables and functions used
by both core scheduler code and implementations of scheduler modes.
Functions like switch_thread() and update_thread_times() do not belong
there anymore.
2013-11-25 00:17:42 +01:00
Pawel Dziepak
1e8ed5558d
cpufreq: Rank modules and choose the best one
2013-11-25 00:08:13 +01:00
Pawel Dziepak
13a89839fc
scheduler: Fix power saving mode and other minor improvements
2013-11-24 23:51:30 +01:00
Pawel Dziepak
f95b6fdfc8
scheudler: Do not include irq load in thread load
2013-11-24 23:18:58 +01:00
Pawel Dziepak
cec16c2dcf
spinlock: Fix panic messages
...
Thanks Jérôme for pointing this out.
2013-11-24 22:54:14 +01:00
Pawel Dziepak
03f7d3d1db
kernel: Restore logical processor disabling
2013-11-24 22:51:07 +01:00
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