From 8b102fbb3757aff472f971521e5321d1bbfff01b Mon Sep 17 00:00:00 2001 From: co63oc Date: Fri, 1 Jul 2022 07:43:09 +0800 Subject: [PATCH 1/2] tools: add install_test_tool.sh --- tools/install_test_tool.sh | 89 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 tools/install_test_tool.sh diff --git a/tools/install_test_tool.sh b/tools/install_test_tool.sh new file mode 100644 index 0000000..470e83f --- /dev/null +++ b/tools/install_test_tool.sh @@ -0,0 +1,89 @@ +# 按README提取的Anolis 测试安装plugsched工具,运行命令都在这个脚本 + +echo "=====安装 debuginfo=====" +VERSION=`cat /etc/os-release | grep "VERSION=" | awk -F '"' '{print $2}'` +yum install anolis-repos -y +yum install yum-utils podman -y +yum install kernel-debuginfo-$(uname -r) kernel-devel-$(uname -r) --enablerepo=Plus-debuginfo --enablerepo=Plus -y + +# yum install 如果没有安装debuginfo包,这里下载后安装 +if [ -z "`rpm -qa | grep kernel-debuginfo`" ]; then + wget -c https://mirrors.openanolis.cn/anolis/${VERSION}/Plus/x86_64/debug/Packages/kernel-debuginfo-common-x86_64-$(uname -r).rpm + rpm -ivh kernel-debuginfo-common-x86_64-$(uname -r).rpm + wget -c https://mirrors.openanolis.cn/anolis/${VERSION}/Plus/x86_64/debug/Packages/kernel-debuginfo-$(uname -r).rpm + rpm -ivh kernel-debuginfo-$(uname -r).rpm + rm -vf kernel-debuginfo-common-x86_64-$(uname -r).rpm kernel-debuginfo-$(uname -r).rpm +fi +mkdir -p /tmp/work && cd /tmp/work +yumdownloader --source kernel-$(uname -r) --enablerepo=Plus --enablerepo=Plus-debuginfo +uname_version=`uname -r | sed 's/.x86_64//'` +if [ -f "kernel-${uname_version}.src.rpm" ]; then + wget -c https://mirrors.openanolis.cn/anolis/${VERSION}/Plus/source/Packages/kernel-${uname_version}.src.rpm +fi + +# 拉取镜像,可能比较慢 +(podman images | grep docker.io/plugsched/plugsched-sdk) || podman pull docker.io/plugsched/plugsched-sdk +# 启动容器 +podman run -itd --name=plugsched -v /tmp/work:/tmp/work -v /usr/src/kernels:/usr/src/kernels -v /usr/lib/debug/lib/modules:/usr/lib/debug/lib/modules docker.io/plugsched/plugsched-sdk + +echo "=====创建 rpm=====" +cat >/tmp/work/test.diff <curr; +diff --git a/scheduler/kernel/sched/mod/features.h b/scheduler/kernel/sched/mod/features.h +index 4c40fac..8d1eafd 100644 +--- a/scheduler/kernel/sched/mod/features.h ++++ b/scheduler/kernel/sched/mod/features.h +@@ -1,4 +1,6 @@ + /* SPDX-License-Identifier: GPL-2.0 */ ++SCHED_FEAT(PLUGSCHED_TEST, false) ++ + /* + * Only give sleepers 50% of their service deficit. This allows + * them to run sooner, but does not allow tons of sleepers to +EOF + +cat >/tmp/work/create_rpm.sh < /sys/kernel/debug/sched_features +dmesg | tail -n 5 + +echo "=====移除 scheduler=====" +rpm -e scheduler-xxx +dmesg | tail -n 8 +cat /sys/kernel/debug/sched_features -- Gitee From 8a2dd14ad226d5dd73fd15bb8ec420cc2d26030d Mon Sep 17 00:00:00 2001 From: co63oc Date: Fri, 1 Jul 2022 08:23:51 +0800 Subject: [PATCH 2/2] tools: patch indent modify, check if container exists --- tools/install_test_tool.sh | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tools/install_test_tool.sh b/tools/install_test_tool.sh index 470e83f..f4fcb1a 100644 --- a/tools/install_test_tool.sh +++ b/tools/install_test_tool.sh @@ -24,6 +24,7 @@ fi # 拉取镜像,可能比较慢 (podman images | grep docker.io/plugsched/plugsched-sdk) || podman pull docker.io/plugsched/plugsched-sdk # 启动容器 +(podman ps | grep plugsched) && podman stop plugsched && podman rm plugsched podman run -itd --name=plugsched -v /tmp/work:/tmp/work -v /usr/src/kernels:/usr/src/kernels -v /usr/lib/debug/lib/modules:/usr/lib/debug/lib/modules docker.io/plugsched/plugsched-sdk echo "=====创建 rpm=====" @@ -33,15 +34,15 @@ index 9f16b72..21262fd 100644 --- a/scheduler/kernel/sched/mod/core.c +++ b/scheduler/kernel/sched/mod/core.c @@ -3234,6 +3234,9 @@ static void __sched notrace __schedule(bool preempt) - struct rq *rq; - int cpu; + struct rq *rq; + int cpu; + if (sched_feat(PLUGSCHED_TEST)) + printk_once("I am the new scheduler: __schedule\n"); + - cpu = smp_processor_id(); - rq = cpu_rq(cpu); - prev = rq->curr; + cpu = smp_processor_id(); + rq = cpu_rq(cpu); + prev = rq->curr; diff --git a/scheduler/kernel/sched/mod/features.h b/scheduler/kernel/sched/mod/features.h index 4c40fac..8d1eafd 100644 --- a/scheduler/kernel/sched/mod/features.h -- Gitee