diff -Naur linux-4.2/include/linux/sched/sysctl.h linux-4.2_/include/linux/sched/sysctl.h
--- linux-4.2/include/linux/sched/sysctl.h	2015-08-30 11:34:09.000000000 -0700
+++ linux-4.2_/include/linux/sched/sysctl.h	2016-02-22 12:33:07.000000000 -0800
@@ -39,6 +39,7 @@
 extern unsigned int sysctl_sched_min_granularity;
 extern unsigned int sysctl_sched_wakeup_granularity;
 extern unsigned int sysctl_sched_child_runs_first;
+extern unsigned int sysctl_sched_weighted_cpuload_uses_rla;
 
 enum sched_tunable_scaling {
 	SCHED_TUNABLESCALING_NONE,
diff -Naur linux-4.2/kernel/sched/fair.c linux-4.2_/kernel/sched/fair.c
--- linux-4.2/kernel/sched/fair.c	2015-08-30 11:34:09.000000000 -0700
+++ linux-4.2_/kernel/sched/fair.c	2016-02-22 16:03:25.443801709 -0800
@@ -35,6 +35,10 @@
 
 #include "sched.h"
 
+#ifdef CONFIG_SMP
+unsigned int sysctl_sched_weighted_cpuload_uses_rla = 1;
+#endif
+
 /*
  * Targeted preemption latency for CPU-bound tasks:
  * (default: 6ms * (1 + ilog(ncpus)), units: nanoseconds)
@@ -4517,7 +4521,9 @@
 /* Used instead of source_load when we know the type == 0 */
 static unsigned long weighted_cpuload(const int cpu)
 {
-	return cfs_rq_runnable_load_avg(&cpu_rq(cpu)->cfs);
+	if (sysctl_sched_weighted_cpuload_uses_rla)
+		return cfs_rq_runnable_load_avg(&cpu_rq(cpu)->cfs);
+	return cpu_rq(cpu)->load.weight;
 }
 
 #ifdef CONFIG_NO_HZ_COMMON
diff -Naur linux-4.2/kernel/sysctl.c linux-4.2_/kernel/sysctl.c
--- linux-4.2/kernel/sysctl.c	2015-08-30 11:34:09.000000000 -0700
+++ linux-4.2_/kernel/sysctl.c	2016-02-22 12:33:17.000000000 -0800
@@ -349,6 +349,13 @@
 		.mode		= 0644,
 		.proc_handler	= proc_dointvec,
 	},
+	{
+		.procname	= "sched_weighted_cpuload_uses_rla",
+		.data		= &sysctl_sched_weighted_cpuload_uses_rla,
+		.maxlen		= sizeof(unsigned int),
+		.mode		= 0644,
+		.proc_handler	= proc_dointvec,
+	},
 #endif /* CONFIG_SMP */
 #ifdef CONFIG_NUMA_BALANCING
 	{