Add kernel argument to turn on/off time sharing

Add "-T 0" to mcreboot.sh if you want to turn off time sharing.  When
it's turned off, McKernel doesn't activate interval timer when the
length of per-CPU run-queue is larger than one.

Change-Id: I2cedc1b30a9cd9a0f4608a32ecec0a0d58c6225e
This commit is contained in:
Masamichi Takagi
2018-10-31 20:57:12 +09:00
committed by Dominique Martinet
parent 7a3f4d7501
commit 38e68f358a
4 changed files with 23 additions and 2 deletions

View File

@@ -280,6 +280,7 @@ extern struct list_head resource_set_list;
extern mcs_rwlock_lock_t resource_set_lock;
extern int idle_halt;
extern int allow_oversubscribe;
extern int time_sharing;
extern ihk_spinlock_t runq_reservation_lock; /* mutex for cpuid reservation (clv->runq_reserved) */
struct process_hash {

View File

@@ -168,6 +168,12 @@ static void parse_kargs(void)
if (ptr) {
allow_oversubscribe = 1;
}
/* time_sharing option */
ptr = find_command_line("time_sharing");
if (ptr) {
time_sharing = 1;
}
}
extern void ihk_mc_get_boot_time(unsigned long *tv_sec, unsigned long *tv_nsec);

View File

@@ -91,6 +91,7 @@ ihk_spinlock_t runq_reservation_lock;
int idle_halt = 0;
int allow_oversubscribe = 0;
int time_sharing = 0;
void
init_process(struct process *proc, struct process *parent)
@@ -3100,6 +3101,10 @@ void set_timer(int runq_locked)
int num_running = 0;
unsigned long irqstate;
if (!time_sharing) {
return;
}
if (!runq_locked) {
irqstate = ihk_mc_spinlock_lock(&(v->runq_lock));
}