From f7f49141a5dbe9c99d78196b58c44307fb2e6be3 Mon Sep 17 00:00:00 2001 From: Tk-Glitch Date: Wed, 4 Jul 2018 04:30:08 +0200 Subject: glitched - PDS diff --git a/kernel/Kconfig.hz b/kernel/Kconfig.hz index 2a202a846757..1d9c7ed79b11 100644 --- a/kernel/Kconfig.hz +++ b/kernel/Kconfig.hz @@ -4,7 +4,7 @@ choice prompt "Timer frequency" - default HZ_250 + default HZ_500 help Allows the configuration of the timer frequency. It is customary to have the timer interrupt run at 1000 Hz but 100 Hz may be more @@ -39,6 +39,13 @@ choice on SMP and NUMA systems and exactly dividing by both PAL and NTSC frame rates for video and multimedia work. + config HZ_500 + bool "500 HZ" + help + 500 Hz is a balanced timer frequency. Provides fast interactivity + on desktops with great smoothness without increasing CPU power + consumption and sacrificing the battery life on laptops. + config HZ_1000 bool "1000 HZ" help @@ -52,6 +59,7 @@ config HZ default 100 if HZ_100 default 250 if HZ_250 default 300 if HZ_300 + default 500 if HZ_500 default 1000 if HZ_1000 config SCHED_HRTICK diff --git a/kernel/Kconfig.hz b/kernel/Kconfig.hz index 2a202a846757..1d9c7ed79b11 100644 --- a/kernel/Kconfig.hz +++ b/kernel/Kconfig.hz @@ -4,7 +4,7 @@ choice prompt "Timer frequency" - default HZ_500 + default HZ_750 help Allows the configuration of the timer frequency. It is customary to have the timer interrupt run at 1000 Hz but 100 Hz may be more @@ -46,6 +46,13 @@ choice on desktops with great smoothness without increasing CPU power consumption and sacrificing the battery life on laptops. + config HZ_750 + bool "750 HZ" + help + 750 Hz is a good timer frequency for desktops. Provides fast + interactivity with great smoothness without sacrificing too + much throughput. + config HZ_1000 bool "1000 HZ" help @@ -60,6 +67,7 @@ config HZ default 250 if HZ_250 default 300 if HZ_300 default 500 if HZ_500 + default 750 if HZ_750 default 1000 if HZ_1000 config SCHED_HRTICK diff --git a/mm/vmscan.c b/mm/vmscan.c index 9270a4370d54..30d01e647417 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -169,7 +169,7 @@ /* * From 0 .. 200. Higher means more swappy. */ -int vm_swappiness = 60; +int vm_swappiness = 20; static void set_task_reclaim_state(struct task_struct *task, struct reclaim_state *rs) diff --git a/init/Kconfig b/init/Kconfig index 11fd9b502d06..e9bc34d3019b 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -715,6 +715,7 @@ menu "Scheduler features" config UCLAMP_TASK bool "Enable utilization clamping for RT/FAIR tasks" depends on CPU_FREQ_GOV_SCHEDUTIL + depends on !SCHED_PDS help This feature enables the scheduler to track the clamped utilization of each CPU based on RUNNABLE tasks scheduled on that CPU. @@ -948,7 +948,6 @@ config CGROUP_DEVICE config CGROUP_CPUACCT bool "Simple CPU accounting controller" - depends on !SCHED_PDS help Provides a simple controller for monitoring the total CPU consumed by the tasks in a cgroup. diff --git a/kernel/sched/Makefile b/kernel/sched/Makefile index b23231bae996..cab4e5c5b38e 100644 --- a/kernel/sched/Makefile +++ b/kernel/sched/Makefile @@ -24,13 +24,13 @@ obj-y += fair.o rt.o deadline.o obj-$(CONFIG_SMP) += cpudeadline.o topology.o stop_task.o obj-$(CONFIG_SCHED_AUTOGROUP) += autogroup.o obj-$(CONFIG_SCHED_DEBUG) += debug.o -obj-$(CONFIG_CGROUP_CPUACCT) += cpuacct.o endif obj-y += loadavg.o clock.o cputime.o obj-y += idle.o obj-y += wait.o wait_bit.o swait.o completion.o obj-$(CONFIG_SMP) += cpupri.o pelt.o obj-$(CONFIG_SCHEDSTATS) += stats.o +obj-$(CONFIG_CGROUP_CPUACCT) += cpuacct.o obj-$(CONFIG_CPU_FREQ) += cpufreq.o obj-$(CONFIG_CPU_FREQ_GOV_SCHEDUTIL) += cpufreq_schedutil.o obj-$(CONFIG_MEMBARRIER) += membarrier.o diff --git a/kernel/sched/pds.c b/kernel/sched/pds.c index 9281ad164..f09a609cf 100644 --- a/kernel/sched/pds.c +++ b/kernel/sched/pds.c @@ -81,6 +81,18 @@ enum { NR_CPU_AFFINITY_CHK_LEVEL }; +/* + * This allows printing both to /proc/sched_debug and + * to the console + */ +#define SEQ_printf(m, x...) \ + do { \ + if (m) \ + seq_printf(m, x); \ + else \ + pr_cont(x); \ + } while (0) + static inline void print_scheduler_version(void) { printk(KERN_INFO "pds: PDS-mq CPU Scheduler 0.99o by Alfred Chen.\n"); @@ -6353,7 +6365,10 @@ void ia64_set_curr_task(int cpu, struct task_struct *p) #ifdef CONFIG_SCHED_DEBUG void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns, struct seq_file *m) -{} +{ + SEQ_printf(m, "%s (%d, #threads: %d)\n", p->comm, task_pid_nr_ns(p, ns), + get_nr_threads(p)); +} void proc_sched_set_task(struct task_struct *p) {}