[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [Patch 2/2]xen/sched_credit2.c : Runqueue per core
This patch inserts runqueue_per_core code. And also makes generic selection for runqueue by using boot paarmeter. Signed-off-by: Uma Sharma <uma.sharma523@xxxxxxxxx> --- diff --git a/xen/common/sched_credit2.c b/xen/common/sched_credit2.c index ad0a5d4..2075e70 100644 --- a/xen/common/sched_credit2.c +++ b/xen/common/sched_credit2.c @@ -165,6 +165,8 @@ int opt_migrate_resist=500; integer_param("sched_credit2_migrate_resist", opt_migrate_resist); +static char __initdata opt_credit2_runqueue[10] = "socket"; +string_param("credit2_runqueue", opt_credit2_runqueue); /* * Useful macros @@ -1921,6 +1923,7 @@ static void deactivate_runqueue(struct csched2_private *prv, int rqi) static void init_pcpu(const struct scheduler *ops, int cpu) { int rqi; + char rq; unsigned long flags; struct csched2_private *prv = CSCHED2_PRIV(ops); struct csched2_runqueue_data *rqd; @@ -1935,15 +1938,36 @@ static void init_pcpu(const struct scheduler *ops, int cpu) return; } + /*Figure out which type of runqueue are to be created */ + if (!strcmp(opt_credit2_runquque, "socket")) { + rq = 's'; + } else if (!strcmp(opt_credit2_runquque, "core")) { + rq = 'c'; + } else { + rq = 's'; + } + /* Figure out which runqueue to put it in */ rqi = 0; - /* Figure out which runqueue to put it in */ - /* NB: cpu 0 doesn't get a STARTING callback, so we hard-code it to runqueue 0. */ - if ( cpu == 0 ) - rqi = 0; - else - rqi = cpu_to_socket(cpu); + /* cpu 0 doesn't get a STARTING callback, so use boot CPU data for it */ + if ( cpu == 0 ) { + switch (rq) { + case 's' : rqi = boot_cpu_to_socket(); + break; + case 'c' : rqi = boot_cpu_to_core(); + break; + default : rqi = boot_cpu_to_socket(); + } + } else { + switch (rq) { + case 's' : rqi = cpu_to_socket(cpu); + break; + case 'c' : rqi = cpu_to_core(cpu); + break; + default : rqi = cpu_to_socket(cpu); + } + } if ( rqi < 0 ) { @@ -1988,7 +2012,7 @@ csched2_alloc_pdata(const struct scheduler *ops, int cpu) { /* Check to see if the cpu is online yet */ /* Note: cpu 0 doesn't get a STARTING callback */ - if ( cpu == 0 || cpu_to_socket(cpu) >= 0 ) + if ( cpu == 0 || cpu_to_socket(cpu) >= 0 || cpu_to_core(cpu)) init_pcpu(ops, cpu); else printk("%s: cpu %d not online yet, deferring initializatgion\n", _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |