Skip to contentSkip to conversation

cpusets: add the configuration facility

PATCH In review Michael Wang 1 participant 1 message Jul 17, 2012

lore
Share & tools
lore
#0 lore raw

PATCH 5/5 cpusets: add the configuration facility

From: Michael Wang <[email protected]>

Add the facility for user to configure the dynamical domain flags and enable/disable it.

---
 kernel/cpuset.c |   85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 85 insertions(+), 0 deletions(-)
kernel/cpuset.c +85 -0
index 066c61c..5ff649d 100644
@@ -1506,6 +1506,17 @@ typedef enum {
 	FILE_MEM_HARDWALL,
 	FILE_SCHED_LOAD_BALANCE,
 	FILE_SCHED_RELAX_DOMAIN_LEVEL,
+#ifdef CONFIG_SCHED_SMT
+	FILE_SCHED_SMT_DDF,
+#endif
+#ifdef CONFIG_SCHED_MC
+	FILE_SCHED_MC_DDF,
+#endif
+#ifdef CONFIG_SCHED_BOOK
+	FILE_SCHED_BOOK_DDF,
+#endif
+	FILE_SCHED_CPU_DDF,
+	FILE_SCHED_ENABLE_DDF,
 	FILE_MEMORY_PRESSURE_ENABLED,
 	FILE_MEMORY_PRESSURE,
 	FILE_SPREAD_PAGE,
@@ -1549,6 +1560,27 @@ static int cpuset_write_u64(struct cgroup *cgrp, struct cftype *cft, u64 val)
 	case FILE_SPREAD_SLAB:
 		retval = update_flag(CS_SPREAD_SLAB, cs, val);
 		break;
+#ifdef CONFIG_SCHED_SMT
+	case FILE_SCHED_SMT_DDF:
+		retval = update_ddf(SMT_DDF, cs, val);
+		break;
+#endif
+#ifdef CONFIG_SCHED_MC
+	case FILE_SCHED_MC_DDF:
+		retval = update_ddf(MC_DDF, cs, val);
+		break;
+#endif
+#ifdef CONFIG_SCHED_BOOK
+	case FILE_SCHED_BOOK_DDF:
+		retval = update_ddf(BOOK_DDF, cs, val);
+		break;
+#endif
+	case FILE_SCHED_CPU_DDF:
+		retval = update_ddf(CPU_DDF, cs, val);
+		break;
+	case FILE_SCHED_ENABLE_DDF:
+		retval = enable_ddf(cs, val);
+		break;
 	default:
 		retval = -EINVAL;
 		break;
@@ -1708,6 +1740,22 @@ static u64 cpuset_read_u64(struct cgroup *cont, struct cftype *cft)
 		return is_spread_page(cs);
 	case FILE_SPREAD_SLAB:
 		return is_spread_slab(cs);
+#ifdef CONFIG_SCHED_SMT
+	case FILE_SCHED_SMT_DDF:
+		return cs->ddf[SMT_DDF];
+#endif
+#ifdef CONFIG_SCHED_MC
+	case FILE_SCHED_MC_DDF:
+		return cs->ddf[MC_DDF];
+#endif
+#ifdef CONFIG_SCHED_BOOK
+	case FILE_SCHED_BOOK_DDF:
+		return cs->ddf[BOOK_DDF];
+#endif
+	case FILE_SCHED_CPU_DDF:
+		return cs->ddf[CPU_DDF];
+	case FILE_SCHED_ENABLE_DDF:
+		return cs->enable_ddf;
 	default:
 		BUG();
 	}
@@ -1788,6 +1836,43 @@ static struct cftype files[] = {
 		.private = FILE_SCHED_RELAX_DOMAIN_LEVEL,
 	},
 
+#ifdef CONFIG_SCHED_SMT
+	{
+		.name = "sched_smt_domain_flag",
+		.read_u64 = cpuset_read_u64,
+		.write_u64 = cpuset_write_u64,
+		.private = FILE_SCHED_SMT_DDF,
+	},
+#endif
+#ifdef CONFIG_SCHED_MC
+	{
+		.name = "sched_mc_domain_flag",
+		.read_u64 = cpuset_read_u64,
+		.write_u64 = cpuset_write_u64,
+		.private = FILE_SCHED_MC_DDF,
+	},
+#endif
+#ifdef CONFIG_SCHED_BOOK
+	{
+		.name = "sched_book_domain_flag",
+		.read_u64 = cpuset_read_u64,
+		.write_u64 = cpuset_write_u64,
+		.private = FILE_SCHED_BOOK_DDF,
+	},
+#endif
+	{
+		.name = "sched_cpu_domain_flag",
+		.read_u64 = cpuset_read_u64,
+		.write_u64 = cpuset_write_u64,
+		.private = FILE_SCHED_CPU_DDF,
+	},
+	{
+		.name = "sched_enable_domain_flag",
+		.read_u64 = cpuset_read_u64,
+		.write_u64 = cpuset_write_u64,
+		.private = FILE_SCHED_ENABLE_DDF,
+	},
+
 	{
 		.name = "memory_migrate",
 		.read_u64 = cpuset_read_u64,
Signature · 1 line
1.7.4.1