|
[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 |