Skip to contentSkip to conversation

2.6.0-test4 scheduler policy

PATCH New Nick Piggin 1 participant 1 message Aug 23, 2003

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 2.6.0-test4 scheduler policy

Hi Linux kernel,
Please find attached my CPU scheduler changes against test4. A few bugs have been fixed up. The known problems are test-starve.c, bad for compute intensive loads, bad priority distribution (eg. may cause xmms to skip. must be a bug somewhere).

This is mainly a sync with Linus' tree.

include/linux/sched.h renamed from include/linux/sched.h.orig +7 -2
@@ -281,7 +281,9 @@ struct signal_struct {
 #define MAX_RT_PRIO		MAX_USER_RT_PRIO
 
 #define MAX_PRIO		(MAX_RT_PRIO + 40)
- 
+
+#define rt_task(p)		((p)->prio < MAX_RT_PRIO)
+
 /*
  * Some day this will be a full-fledged user tracking system..
  */
@@ -339,12 +341,15 @@ struct task_struct {
 	struct list_head run_list;
 	prio_array_t *array;
 
+	unsigned long array_sequence;
+	unsigned long timestamp;
+
 	unsigned long sleep_avg;
-	unsigned long last_run;
 
 	unsigned long policy;
 	cpumask_t cpus_allowed;
 	unsigned int time_slice, first_time_slice;
+	unsigned int used_slice;
 
 	struct list_head tasks;
 	struct list_head ptrace_children;
kernel/fork.c renamed from kernel/fork.c.orig +3 -3
@@ -917,14 +917,14 @@ struct task_struct *copy_process(unsigne
 	 * resulting in more scheduling fairness.
 	 */
 	local_irq_disable();
-        p->time_slice = (current->time_slice + 1) >> 1;
+	p->timestamp = jiffies; 
+        p->time_slice = (current->time_slice + 2) / 3;
 	/*
 	 * The remainder of the first timeslice might be recovered by
 	 * the parent if the child exits early enough.
 	 */
 	p->first_time_slice = 1;
-	current->time_slice >>= 1;
-	p->last_run = jiffies;
+	current->time_slice = 2 * current->time_slice / 3;
 	if (!current->time_slice) {
 		/*
 	 	 * This case is rare, it happens when the parent has only
kernel/sched.c renamed from kernel/sched.c.orig +165 -202

575 lines not on this page · raw message