/[pkg-src]/trunk/kernel26-alx/patches-2.6.21-r13/0002-2.6.21-sched-sd-0.48-interactive_tunable.patch |
Annotation of /trunk/kernel26-alx/patches-2.6.21-r13/0002-2.6.21-sched-sd-0.48-interactive_tunable.patch
Parent Directory | Revision Log
Revision 445 -
(hide annotations)
(download)
Tue Jan 15 00:44:37 2008 UTC (16 years, 8 months ago) by niro
File size: 4860 byte(s)
Tue Jan 15 00:44:37 2008 UTC (16 years, 8 months ago) by niro
File size: 4860 byte(s)
-added patches for 2.6.21-alx-r13
1 | niro | 445 | Add "interactive" tunable and enable by default. |
2 | |||
3 | The staircase-deadline cpu scheduler can be set in either purely | ||
4 | forward-looking mode for absolutely rigid fairness and cpu distribution | ||
5 | according to nice level, or it can allow a small per-process history | ||
6 | to smooth out cpu usage perturbations common in interactive tasks by | ||
7 | enabling this sysctl. While small fairness issues can arise with this | ||
8 | enabled, overall fairness is usually still strongly maintained and | ||
9 | starvation is never possible. Enabling this can significantly smooth | ||
10 | out 3d graphics and games. | ||
11 | |||
12 | Signed-off-by: Con Kolivas <kernel@kolivas.org> | ||
13 | |||
14 | --- | ||
15 | Documentation/sysctl/kernel.txt | 16 ++++++++++++++++ | ||
16 | kernel/sched.c | 17 +++++++++++++++-- | ||
17 | kernel/sysctl.c | 9 +++++++++ | ||
18 | 3 files changed, 40 insertions(+), 2 deletions(-) | ||
19 | |||
20 | Index: linux-2.6.21-ck2/kernel/sched.c | ||
21 | =================================================================== | ||
22 | --- linux-2.6.21-ck2.orig/kernel/sched.c 2007-05-14 19:30:30.000000000 +1000 | ||
23 | +++ linux-2.6.21-ck2/kernel/sched.c 2007-05-14 19:30:30.000000000 +1000 | ||
24 | @@ -101,6 +101,7 @@ unsigned long long __attribute__((weak)) | ||
25 | * Tunable via /proc interface. | ||
26 | */ | ||
27 | int rr_interval __read_mostly = 8; | ||
28 | +int sched_interactive __read_mostly = 1; | ||
29 | |||
30 | /* | ||
31 | * This contains a bitmap for each dynamic priority level with empty slots | ||
32 | @@ -687,6 +688,18 @@ static int first_prio_slot(struct task_s | ||
33 | } | ||
34 | |||
35 | /* | ||
36 | + * In sched_interactive mode priority allocation occurs per process per rq | ||
37 | + * array swap. In !sched_interactive mode all waking tasks must obey the | ||
38 | + * current prio level of all other tasks running per array swap. | ||
39 | + */ | ||
40 | +static int minprio(struct rq *rq, int uprio) | ||
41 | +{ | ||
42 | + if (sched_interactive) | ||
43 | + return MAX_RT_PRIO; | ||
44 | + return rq->prio_level[uprio]; | ||
45 | +} | ||
46 | + | ||
47 | +/* | ||
48 | * Find the first unused slot by this task that is also in its prio_matrix | ||
49 | * level. SCHED_BATCH tasks do not use the priority matrix. They only take | ||
50 | * priority slots from their static_prio and above. | ||
51 | @@ -714,11 +727,11 @@ static int next_entitled_slot(struct tas | ||
52 | if (likely(p->policy != SCHED_BATCH)) | ||
53 | array->best_static_prio = p->static_prio; | ||
54 | } else if (p->static_prio == array->best_static_prio) { | ||
55 | - search_prio = rq->prio_level[uprio]; | ||
56 | + search_prio = minprio(rq, uprio); | ||
57 | } else { | ||
58 | int i; | ||
59 | |||
60 | - search_prio = rq->prio_level[uprio]; | ||
61 | + search_prio = minprio(rq, uprio); | ||
62 | /* A bound O(n) function, worst case n is 40 */ | ||
63 | for (i = array->best_static_prio; i <= p->static_prio ; i++) { | ||
64 | if (!rq->prio_level[USER_PRIO(i)]) | ||
65 | Index: linux-2.6.21-ck2/kernel/sysctl.c | ||
66 | =================================================================== | ||
67 | --- linux-2.6.21-ck2.orig/kernel/sysctl.c 2007-05-14 19:30:30.000000000 +1000 | ||
68 | +++ linux-2.6.21-ck2/kernel/sysctl.c 2007-05-14 19:30:30.000000000 +1000 | ||
69 | @@ -77,6 +77,7 @@ extern int sysctl_drop_caches; | ||
70 | extern int percpu_pagelist_fraction; | ||
71 | extern int compat_log; | ||
72 | extern int rr_interval; | ||
73 | +extern int sched_interactive; | ||
74 | |||
75 | /* this is needed for the proc_dointvec_minmax for [fs_]overflow UID and GID */ | ||
76 | static int maxolduid = 65535; | ||
77 | @@ -519,6 +520,14 @@ static ctl_table kern_table[] = { | ||
78 | .extra1 = &one, | ||
79 | .extra2 = &five_thousand, | ||
80 | }, | ||
81 | + { | ||
82 | + .ctl_name = CTL_UNNUMBERED, | ||
83 | + .procname = "interactive", | ||
84 | + .data = &sched_interactive, | ||
85 | + .maxlen = sizeof(int), | ||
86 | + .mode = 0644, | ||
87 | + .proc_handler = &proc_dointvec, | ||
88 | + }, | ||
89 | #if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_X86) | ||
90 | { | ||
91 | .ctl_name = KERN_UNKNOWN_NMI_PANIC, | ||
92 | Index: linux-2.6.21-ck2/Documentation/sysctl/kernel.txt | ||
93 | =================================================================== | ||
94 | --- linux-2.6.21-ck2.orig/Documentation/sysctl/kernel.txt 2007-05-14 19:30:30.000000000 +1000 | ||
95 | +++ linux-2.6.21-ck2/Documentation/sysctl/kernel.txt 2007-05-14 19:30:30.000000000 +1000 | ||
96 | @@ -25,6 +25,7 @@ show up in /proc/sys/kernel: | ||
97 | - domainname | ||
98 | - hostname | ||
99 | - hotplug | ||
100 | +- interactive | ||
101 | - java-appletviewer [ binfmt_java, obsolete ] | ||
102 | - java-interpreter [ binfmt_java, obsolete ] | ||
103 | - kstack_depth_to_print [ X86 only ] | ||
104 | @@ -165,6 +166,21 @@ Default value is "/sbin/hotplug". | ||
105 | |||
106 | ============================================================== | ||
107 | |||
108 | +interactive: | ||
109 | + | ||
110 | +The staircase-deadline cpu scheduler can be set in either purely | ||
111 | +forward-looking mode for absolutely rigid fairness and cpu distribution | ||
112 | +according to nice level, or it can allow a small per-process history | ||
113 | +to smooth out cpu usage perturbations common in interactive tasks by | ||
114 | +enabling this sysctl. While small fairness issues can arise with this | ||
115 | +enabled, overall fairness is usually still strongly maintained and | ||
116 | +starvation is never possible. Enabling this can significantly smooth | ||
117 | +out 3d graphics and games. | ||
118 | + | ||
119 | +Default value is 1 (enabled). | ||
120 | + | ||
121 | +============================================================== | ||
122 | + | ||
123 | l2cr: (PPC only) | ||
124 | |||
125 | This flag controls the L2 cache of G3 processor boards. If |