diff --git a/sys-kernel/xanmod-sources/Manifest b/sys-kernel/xanmod-sources/Manifest index c229531..8ca6fcf 100644 --- a/sys-kernel/xanmod-sources/Manifest +++ b/sys-kernel/xanmod-sources/Manifest @@ -5,6 +5,8 @@ DIST genpatches-5.9-1.extras.tar.xz 1764 BLAKE2B 32d29f0448aef113ba9c9591c5d3b67 DIST linux-5.10.tar.xz 116606704 BLAKE2B b923d7b66309224f42f35f8a5fa219421b0a9362d2adacdadd8d96251f61f7230878ea297a269a7f3b3c56830f0b177e068691e1d7f88501a05653b0a13274d1 SHA512 95bc137d0cf9148da6a9d1f1a878698dc27b40f68e22c597544010a6c591ce1b256f083489d3ff45ff77753289b535135590194d88ef9f007d0ddab3d74de70e DIST linux-5.9.tar.xz 115507140 BLAKE2B e8d11472d63a9f8409ca12a2e8c97c6963a3d4516b5a398b627d6ece565584526f9b5a1377a2fa4bd184c09c7db94c987428bc5d52df0c788464a67e9e8d6dcb SHA512 d3d92ce4246bad74c9a784212f160d98449b1e8793970c2c308276568d852b8effe0528686bdb87d55d691f09a826abf7938d69bdd4759ce65ddd5c05ffe4eca DIST patch-5.10.1-xanmod1.xz 84852 BLAKE2B c3f41a05c92ca57d3e5117d8096d8180119a4d4bec7cb7adf9bad9afa4ed332128400ad17de7ed517fb2661f1356e954108aa786150748b99c5268f482541f6e SHA512 13b32629072c87eef98a42f10ef41040c48a8f01f33f4ce1042370672da107b3d11e73cc5ea437600622bea2116c856aade691ef95eef86181868c200161f8db +DIST patch-5.10.2-xanmod1-cacule.xz 95684 BLAKE2B 3bc336813ce24e4bb7bd93d4969f555c8d27ff99c77366edbffabc969d197a306e496af49d5db846daf35f50a4c895c1b6567f66a54c644c2c9cdc23fbc96176 SHA512 6d6d83ef6c7ad53df10f43a094a7fa418267b7cb4722d84049685f2d7611839143636fd034ac25adcec25920c54c8b1faea3f36189443d8f164e0a13eceed888 +DIST patch-5.10.2-xanmod1.xz 88392 BLAKE2B 5d19e9ea45f7dcd8c644c4055eacb1e46b64a7e1ca39ed5f5550e8c59546a93a54a918528b160549d5c534f7b461173a58826fa5d3b737a12455d39fbc31613a SHA512 3f39aa11747a74471e7aaca3a006092b3075a48c01133d2c01406150d16e598cd1f086e7699cb705f6d993b0f0e5bb6e9e1b977f52da254fb267e40fe082ea84 DIST patch-5.9.10-xanmod1.xz 583644 BLAKE2B 220f85a6a73e36d62cbca83f7b5ff2d769306e21446ef05413fe3d0f0ed2e2c1fdb60cf97d425b83e5ff09242de3e5d61e38418c8a9838b17afe927fdd859d39 SHA512 acae618df28403d2950c5910ecc8dfd78e1c58ed4e8ff3787c1776e00462289e929c3097b5027103c1bda6187495664dc2b082adad6c05c42c3922de530a49d9 DIST patch-5.9.11-xanmod1.xz 639524 BLAKE2B f58c2491000e2b5e2302cfe03bb84dca5c23c152fe4c6bf0e2970a64b3683f6583cb393f82d648a58c69fed51a993c877073c34eea58654775c511a3e2291c0b SHA512 b5a3ab6250d28f97a20d26b1384fff5cc7c2232c2a976ad44f2b97141c1a6da800642a25ebd5a306371a2932d10f2758c0cf36ae879c43b0d3ab4b10dad6117d DIST patch-5.9.12-xanmod1.xz 684744 BLAKE2B f716145dff09725018080a998ce9e9ace9c4a4d39599a7aaedf90a10fc94135deb1fdffd746119fd5546e6216581b91bc37ef62b81c3e31267e58a106c6e9927 SHA512 cb7f7a05ef0c9badc7acaca27e97287e1dcfe0e70180b88cea297c3994cba73714cec8bf7bdd7ceca786a2248dcdfa96121bfda9d201a56efd1d729d5d17de80 diff --git a/sys-kernel/xanmod-sources/files/cachy5.8.pick.patch b/sys-kernel/xanmod-sources/files/cachy5.8.pick.patch deleted file mode 100644 index b0e07bd..0000000 --- a/sys-kernel/xanmod-sources/files/cachy5.8.pick.patch +++ /dev/null @@ -1,89 +0,0 @@ -diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig -index ba439ad92f4c..883da0abf779 100644 ---- a/arch/x86/Kconfig -+++ b/arch/x86/Kconfig -@@ -1542,7 +1542,6 @@ config AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT - # Common NUMA Features - config NUMA - bool "NUMA Memory Allocation and Scheduler Support" -- depends on !CACHY_SCHED - depends on SMP - depends on X86_64 || (X86_32 && HIGHMEM64G && X86_BIGSMP) - default y if X86_BIGSMP -diff --git a/init/Kconfig b/init/Kconfig -index 053626d9ab94..ab23e72841f7 100644 ---- a/init/Kconfig -+++ b/init/Kconfig -@@ -922,7 +922,6 @@ config CGROUP_WRITEBACK - - menuconfig CGROUP_SCHED - bool "CPU controller" -- depends on !CACHY_SCHED - default n - help - This feature lets CPU scheduler recognize task groups and control CPU -@@ -1185,7 +1184,9 @@ config CHECKPOINT_RESTORE - - config SCHED_AUTOGROUP - bool "Automatic process group scheduling" -- depends on FAIR_GROUP_SCHED && !CACHY_SCHED -+ select CGROUPS -+ select CGROUP_SCHED -+ select FAIR_GROUP_SCHED - help - This option optimizes the scheduler for common desktop workloads by - automatically creating and populating task groups. This separation -diff --git a/kernel/sched/cachy.c b/kernel/sched/cachy.c -index 477aebe000f0..d1800bda879f 100644 ---- a/kernel/sched/cachy.c -+++ b/kernel/sched/cachy.c -@@ -4170,6 +4170,8 @@ dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags) - update_cfs_group(se); - } - -+static struct sched_entity *pick_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *curr); -+ - /* - * Preempt the current task with a newly woken task if needed: - */ -diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index bbf09ce73d6f..b41410694c72 100644 ---- a/kernel/sched/core.c -+++ b/kernel/sched/core.c -@@ -2923,7 +2923,12 @@ int sched_fork(unsigned long clone_flags, struct task_struct *p) - /* - * Make sure we do not leak PI boosting priority to the child. - */ -+#ifdef CONFIG_CACHY_SCHED -+ p->prio = current->original_prio; -+ p->original_prio = current->original_prio; -+#else - p->prio = current->normal_prio; -+#endif - - uclamp_fork(p); - -@@ -3020,6 +3025,14 @@ void wake_up_new_task(struct task_struct *p) - - raw_spin_lock_irqsave(&p->pi_lock, rf.flags); - p->state = TASK_RUNNING; -+ -+#ifdef CONFIG_CACHY_SCHED -+ if (p->pid > 1 && p->original_prio >= 120) { -+ p->prio = p->static_prio = p->normal_prio = 139; -+ set_load_weight(p, true); -+ } -+#endif -+ - #ifdef CONFIG_SMP - /* - * Fork balancing, do it here and not earlier because: -@@ -3695,7 +3708,7 @@ void scheduler_tick(void) - - perf_event_task_tick(); - --#if CONFIG_SMP -+#ifdef CONFIG_SMP - rq->idle_balance = idle_cpu(cpu); - trigger_load_balance(rq); - #endif diff --git a/sys-kernel/xanmod-sources/files/localversion.patch b/sys-kernel/xanmod-sources/files/localversion.patch new file mode 100644 index 0000000..583bfc4 --- /dev/null +++ b/sys-kernel/xanmod-sources/files/localversion.patch @@ -0,0 +1,5 @@ +--- a/localversion 2020-12-18 17:19:14.185240837 +0100 ++++ b/localversion 2020-12-18 17:21:26.537235004 +0100 +@@ -1 +1 @@ +--xanmod1-cacule ++-xanmod1 diff --git a/sys-kernel/xanmod-sources/files/smoother.patch b/sys-kernel/xanmod-sources/files/smoother.patch new file mode 100644 index 0000000..bc9ac21 --- /dev/null +++ b/sys-kernel/xanmod-sources/files/smoother.patch @@ -0,0 +1,47 @@ +diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c +index 957e418f05f..8f2b1a9d0f1 100644 +--- a/kernel/sched/fair.c ++++ b/kernel/sched/fair.c +@@ -44,6 +44,7 @@ static unsigned int normalized_sysctl_sched_latency = 6000000ULL; + + #ifdef CONFIG_CACULE_SCHED + int interactivity_factor = 32768; ++#define MAX_LIFE_TIME_SMOOTHER 10000000000ULL // 10 seconds + #endif + + /* +@@ -592,15 +593,15 @@ static inline unsigned int + calc_interactivity(u64 now, struct cacule_node *se) + { + u64 l_se, vr_se, sleep_se, u64_factor; +- unsigned int score_se; ++ unsigned int score_se, lifetime_smoother; + + /* + * in case of vruntime==0, logical OR with 1 would + * make sure that the least sig. bit is 1 + */ + l_se = (now + 1ULL) - se->cacule_start_time; +- vr_se = se->vruntime | 1; +- sleep_se = (l_se - vr_se) | 1; ++ vr_se = se->vruntime | 1; ++ sleep_se = (l_se - vr_se) | 1; + u64_factor = interactivity_factor; + + if (sleep_se > vr_se) +@@ -608,7 +609,14 @@ calc_interactivity(u64 now, struct cacule_node *se) + else + score_se = (u64_factor / (vr_se / sleep_se)) + u64_factor; + +- return score_se; ++ if (l_se > MAX_LIFE_TIME_SMOOTHER) ++ return score_se; ++ ++ u64_factor <<= 1; ++ lifetime_smoother = ++ u64_factor - (u64_factor / (MAX_LIFE_TIME_SMOOTHER / (l_se | 1))); ++ ++ return score_se + lifetime_smoother; + } + + /* diff --git a/sys-kernel/xanmod-sources/metadata.xml b/sys-kernel/xanmod-sources/metadata.xml index 701eeb8..9d4425b 100644 --- a/sys-kernel/xanmod-sources/metadata.xml +++ b/sys-kernel/xanmod-sources/metadata.xml @@ -9,6 +9,9 @@ hedmoo@yahoo.com Andreas Westman Dorcsak + + CacULE is a newer version of Cachy. The CacULE CPU scheduler is based on interactivity score mechanism. The interactivity score is inspired by the ULE scheduler (FreeBSD scheduler). + xanmod/linux diff --git a/sys-kernel/xanmod-sources/xanmod-sources-5.10.2.ebuild b/sys-kernel/xanmod-sources/xanmod-sources-5.10.2.ebuild new file mode 100644 index 0000000..9091168 --- /dev/null +++ b/sys-kernel/xanmod-sources/xanmod-sources-5.10.2.ebuild @@ -0,0 +1,52 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="6" +K_SECURITY_UNSUPPORTED="1" +K_NOSETEXTRAVERSION="1" +ETYPE="sources" +inherit kernel-2-src-prepare-overlay +detect_version + +DESCRIPTION="A general-purpose kernel with custom settings and new features" +HOMEPAGE="https://xanmod.org" +LICENSE+=" CDDL" +KEYWORDS="~amd64" +XANMOD_VERSION="1" +IUSE="cacule" +XANMOD_URI="https://github.com/xanmod/linux/releases/download/" +SRC_URI=" + ${KERNEL_BASE_URI}/linux-${KV_MAJOR}.${KV_MINOR}.tar.xz + cacule? ( ${XANMOD_URI}/${OKV}-xanmod${XANMOD_VERSION}-cacule/patch-${OKV}-xanmod${XANMOD_VERSION}-cacule.xz ) + !cacule? ( ${XANMOD_URI}/${OKV}-xanmod${XANMOD_VERSION}/patch-${OKV}-xanmod${XANMOD_VERSION}.xz ) + ${GENPATCHES_URI} +" + +src_unpack() { +UNIPATCH_LIST_DEFAULT="" + if use cacule; then + UNIPATCH_LIST="${DISTDIR}/patch-${OKV}-xanmod${XANMOD_VERSION}-cacule.xz " + else + UNIPATCH_LIST="${DISTDIR}/patch-${OKV}-xanmod${XANMOD_VERSION}.xz " + fi + kernel-2-src-prepare-overlay_src_unpack +} + +src_prepare() { + + if use cacule; then + eapply "${FILESDIR}/localversion.patch" + eapply "${FILESDIR}/smoother.patch" + fi + + kernel-2-src-prepare-overlay_src_prepare + + rm "${S}"/.config || die + +} + +pkg_postinst() { + elog "MICROCODES" + elog "Use xanmod-sources with microcodes" + elog "Read https://wiki.gentoo.org/wiki/Intel_microcode" +}