From d9a83bd7becdf082cfc4688e37df8b64e83a33d5 Mon Sep 17 00:00:00 2001 From: Junjie Mao Date: Tue, 24 Mar 2015 10:52:27 +0800 Subject: [PATCH] Adjust the time slice to 50ms The original time slice (200ms) is too large for the priority test to generate a satisfactory result in 20s. If we only schedule 5 times a second, there are only 100 pick_next calls to the scheduler. I believe making scheduling more frequently does little harm to the system. Actually more scheduling opportunities may also reveal bugs which are not triggered previously. Adopting smaller time slices also allows us to reduce the time spent on the priority test, which can benefit the autotesting system. Signed-off-by: Junjie Mao --- labcodes/lab6/kern/schedule/sched.h | 2 +- labcodes/lab6/user/priority.c | 2 +- labcodes/lab7/kern/schedule/sched.c | 2 +- labcodes/lab7/kern/schedule/sched.h | 2 +- labcodes/lab7/user/priority.c | 4 ++-- labcodes/lab8/kern/schedule/sched.h | 2 +- labcodes/lab8/user/priority.c | 4 ++-- labcodes_answer/lab6_result/kern/schedule/sched.h | 2 +- labcodes_answer/lab6_result/user/priority.c | 2 +- labcodes_answer/lab7_result/kern/schedule/sched.c | 2 +- labcodes_answer/lab7_result/user/priority.c | 4 ++-- labcodes_answer/lab8_result/kern/schedule/sched.c | 2 +- labcodes_answer/lab8_result/user/priority.c | 4 ++-- 13 files changed, 17 insertions(+), 17 deletions(-) diff --git a/labcodes/lab6/kern/schedule/sched.h b/labcodes/lab6/kern/schedule/sched.h index ca33799..766ac03 100644 --- a/labcodes/lab6/kern/schedule/sched.h +++ b/labcodes/lab6/kern/schedule/sched.h @@ -5,7 +5,7 @@ #include #include -#define MAX_TIME_SLICE 20 +#define MAX_TIME_SLICE 5 struct proc_struct; diff --git a/labcodes/lab6/user/priority.c b/labcodes/lab6/user/priority.c index bcbc29d..6a1cae4 100644 --- a/labcodes/lab6/user/priority.c +++ b/labcodes/lab6/user/priority.c @@ -5,7 +5,7 @@ #define TOTAL 5 /* to get enough accuracy, MAX_TIME (the running time of each process) should >1000 mseconds. */ -#define MAX_TIME 2000 +#define MAX_TIME 1000 unsigned int acc[TOTAL]; int status[TOTAL]; int pids[TOTAL]; diff --git a/labcodes/lab7/kern/schedule/sched.c b/labcodes/lab7/kern/schedule/sched.c index 8c3ff99..53c2e3c 100644 --- a/labcodes/lab7/kern/schedule/sched.c +++ b/labcodes/lab7/kern/schedule/sched.c @@ -49,7 +49,7 @@ sched_init(void) { sched_class = &default_sched_class; rq = &__rq; - rq->max_time_slice = 20; + rq->max_time_slice = 5; sched_class->init(rq); cprintf("sched class: %s\n", sched_class->name); diff --git a/labcodes/lab7/kern/schedule/sched.h b/labcodes/lab7/kern/schedule/sched.h index ca33799..766ac03 100644 --- a/labcodes/lab7/kern/schedule/sched.h +++ b/labcodes/lab7/kern/schedule/sched.h @@ -5,7 +5,7 @@ #include #include -#define MAX_TIME_SLICE 20 +#define MAX_TIME_SLICE 5 struct proc_struct; diff --git a/labcodes/lab7/user/priority.c b/labcodes/lab7/user/priority.c index d71147e..d097270 100644 --- a/labcodes/lab7/user/priority.c +++ b/labcodes/lab7/user/priority.c @@ -5,7 +5,7 @@ #define TOTAL 5 /* to get enough accuracy, MAX_TIME (the running time of each process) should >1000 mseconds. */ -#define MAX_TIME 2000 +#define MAX_TIME 1000 #define SLEEP_TIME 400 unsigned int acc[TOTAL]; int status[TOTAL]; @@ -39,7 +39,7 @@ main(void) { spin_delay(); ++ acc[i]; if(acc[i]%4000==0) { - if((time=gettime_msec())>MAX_TIME) { + if((time=gettime_msec())>MAX_TIME+SLEEP_TIME) { cprintf("child pid %d, acc %d, time %d\n",getpid(),acc[i],time); exit(acc[i]); } diff --git a/labcodes/lab8/kern/schedule/sched.h b/labcodes/lab8/kern/schedule/sched.h index ca33799..766ac03 100644 --- a/labcodes/lab8/kern/schedule/sched.h +++ b/labcodes/lab8/kern/schedule/sched.h @@ -5,7 +5,7 @@ #include #include -#define MAX_TIME_SLICE 20 +#define MAX_TIME_SLICE 5 struct proc_struct; diff --git a/labcodes/lab8/user/priority.c b/labcodes/lab8/user/priority.c index d71147e..5624ec6 100644 --- a/labcodes/lab8/user/priority.c +++ b/labcodes/lab8/user/priority.c @@ -5,7 +5,7 @@ #define TOTAL 5 /* to get enough accuracy, MAX_TIME (the running time of each process) should >1000 mseconds. */ -#define MAX_TIME 2000 +#define MAX_TIME 1000 #define SLEEP_TIME 400 unsigned int acc[TOTAL]; int status[TOTAL]; @@ -39,7 +39,7 @@ main(void) { spin_delay(); ++ acc[i]; if(acc[i]%4000==0) { - if((time=gettime_msec())>MAX_TIME) { + if((time=gettime_msec())>SLEEP_TIME+MAX_TIME) { cprintf("child pid %d, acc %d, time %d\n",getpid(),acc[i],time); exit(acc[i]); } diff --git a/labcodes_answer/lab6_result/kern/schedule/sched.h b/labcodes_answer/lab6_result/kern/schedule/sched.h index ca33799..766ac03 100644 --- a/labcodes_answer/lab6_result/kern/schedule/sched.h +++ b/labcodes_answer/lab6_result/kern/schedule/sched.h @@ -5,7 +5,7 @@ #include #include -#define MAX_TIME_SLICE 20 +#define MAX_TIME_SLICE 5 struct proc_struct; diff --git a/labcodes_answer/lab6_result/user/priority.c b/labcodes_answer/lab6_result/user/priority.c index bcbc29d..6a1cae4 100644 --- a/labcodes_answer/lab6_result/user/priority.c +++ b/labcodes_answer/lab6_result/user/priority.c @@ -5,7 +5,7 @@ #define TOTAL 5 /* to get enough accuracy, MAX_TIME (the running time of each process) should >1000 mseconds. */ -#define MAX_TIME 2000 +#define MAX_TIME 1000 unsigned int acc[TOTAL]; int status[TOTAL]; int pids[TOTAL]; diff --git a/labcodes_answer/lab7_result/kern/schedule/sched.c b/labcodes_answer/lab7_result/kern/schedule/sched.c index e272635..c0dab33 100644 --- a/labcodes_answer/lab7_result/kern/schedule/sched.c +++ b/labcodes_answer/lab7_result/kern/schedule/sched.c @@ -48,7 +48,7 @@ sched_init(void) { sched_class = &default_sched_class; rq = &__rq; - rq->max_time_slice = 20; + rq->max_time_slice = 5; sched_class->init(rq); cprintf("sched class: %s\n", sched_class->name); diff --git a/labcodes_answer/lab7_result/user/priority.c b/labcodes_answer/lab7_result/user/priority.c index d71147e..d097270 100644 --- a/labcodes_answer/lab7_result/user/priority.c +++ b/labcodes_answer/lab7_result/user/priority.c @@ -5,7 +5,7 @@ #define TOTAL 5 /* to get enough accuracy, MAX_TIME (the running time of each process) should >1000 mseconds. */ -#define MAX_TIME 2000 +#define MAX_TIME 1000 #define SLEEP_TIME 400 unsigned int acc[TOTAL]; int status[TOTAL]; @@ -39,7 +39,7 @@ main(void) { spin_delay(); ++ acc[i]; if(acc[i]%4000==0) { - if((time=gettime_msec())>MAX_TIME) { + if((time=gettime_msec())>MAX_TIME+SLEEP_TIME) { cprintf("child pid %d, acc %d, time %d\n",getpid(),acc[i],time); exit(acc[i]); } diff --git a/labcodes_answer/lab8_result/kern/schedule/sched.c b/labcodes_answer/lab8_result/kern/schedule/sched.c index e272635..c0dab33 100644 --- a/labcodes_answer/lab8_result/kern/schedule/sched.c +++ b/labcodes_answer/lab8_result/kern/schedule/sched.c @@ -48,7 +48,7 @@ sched_init(void) { sched_class = &default_sched_class; rq = &__rq; - rq->max_time_slice = 20; + rq->max_time_slice = 5; sched_class->init(rq); cprintf("sched class: %s\n", sched_class->name); diff --git a/labcodes_answer/lab8_result/user/priority.c b/labcodes_answer/lab8_result/user/priority.c index d71147e..5624ec6 100644 --- a/labcodes_answer/lab8_result/user/priority.c +++ b/labcodes_answer/lab8_result/user/priority.c @@ -5,7 +5,7 @@ #define TOTAL 5 /* to get enough accuracy, MAX_TIME (the running time of each process) should >1000 mseconds. */ -#define MAX_TIME 2000 +#define MAX_TIME 1000 #define SLEEP_TIME 400 unsigned int acc[TOTAL]; int status[TOTAL]; @@ -39,7 +39,7 @@ main(void) { spin_delay(); ++ acc[i]; if(acc[i]%4000==0) { - if((time=gettime_msec())>MAX_TIME) { + if((time=gettime_msec())>SLEEP_TIME+MAX_TIME) { cprintf("child pid %d, acc %d, time %d\n",getpid(),acc[i],time); exit(acc[i]); }