Anolis龙蜥操作系统安装测试plugsched

简介: Anolis龙蜥操作系统安装测试plugsched

Anolis开源plugsched 是 Linux 内核调度器子系统热升级的 SDK,它可以实现在不重启系统、应用的情况下动态替换调度器子系统。

龙蜥实验室中2核的机器1小时的时间不能完成内核的编译,需要阿里云ECS创建一台16核以上的按量计费机器,安装 Anolis OS 7.9 ANCK镜像,下载的kernel源码包是匹配这个版本的系统
因为需要编译内核,所以占用cpu较多,其他模块占用cpu较少
plugsched sdk在容器中可以找到
运行的脚本内容为以下内容,按 https://gitee.com/anolis/plugsched 说明整理,包括debuginfo包安装,容器启动,编译rpm包,安装rpm包,测试等过程,都在脚本中完成

#  Anolis OS 7.9 ANCK 使用
echo "=====安装 debuginfo====="
yum install anolis-repos -y
yum install yum-utils podman kernel-debuginfo-$(uname -r) kernel-devel-$(uname -r) --enablerepo=Plus-debuginfo --enablerepo=Plus -y
# yum install 如果没有安装debuginfo包,这里下载后安装
wget -c https://mirrors.openanolis.cn/anolis/7.9/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/7.9/Plus/x86_64/debug/Packages/kernel-debuginfo-$(uname -r).rpm
rpm -ivh kernel-debuginfo-$(uname -r).rpm
mkdir /tmp/work && cd /tmp/work
yumdownloader --source kernel-$(uname -r) --enablerepo=Plus --enablerepo=Plus-debuginfo
wget -c https://mirrors.openanolis.cn/anolis/7.9/Plus/source/Packages/kernel-4.19.91-25.7.an7.src.rpm
# 启动容器
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/core.diff <<EOF
diff --git a/scheduler/kernel/sched/mod/core.c b/scheduler/kernel/sched/mod/core.c
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;
 
+       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;
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 <<EOF
set -x
cd /tmp/work
uname_r=\$(uname -r)
plugsched-cli extract_src kernel-\${uname_r%.*}.src.rpm ./kernel
plugsched-cli init $(uname -r) ./kernel ./scheduler
patch -p1 <core.diff
plugsched-cli build /tmp/work/scheduler
cp /usr/local/lib/plugsched/rpmbuild/RPMS/x86_64/scheduler-xxx-\${uname_r%.*}.yyy.x86_64.rpm /tmp/work/scheduler-xxx.rpm
EOF

# 执行容器中命令
podman exec plugsched bash /tmp/work/create_rpm.sh

echo "=====安装 scheduler====="
cat /sys/kernel/debug/sched_features
rpm -ivh /tmp/work/scheduler-xxx.rpm
lsmod | grep scheduler
dmesg | tail -n 10
cat /sys/kernel/debug/sched_features
echo PLUGSCHED_TEST > /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
相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
目录
相关文章
|
13天前
|
运维 Prometheus 监控
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
|
23天前
|
存储 人工智能 运维
|
23天前
|
人工智能 测试技术 Anolis
英特尔携手龙蜥,共筑未来操作系统
英特尔与龙蜥社区的合作成果、未来计划。
|
1月前
|
自然语言处理 机器人 Python
ChatGPT使用学习:ChatPaper安装到测试详细教程(一文包会)
ChatPaper是一个基于文本生成技术的智能研究论文工具,能够根据用户输入进行智能回复和互动。它支持快速下载、阅读论文,并通过分析论文的关键信息帮助用户判断是否需要深入了解。用户可以通过命令行或网页界面操作,进行论文搜索、下载、总结等。
51 1
ChatGPT使用学习:ChatPaper安装到测试详细教程(一文包会)
|
15天前
|
人工智能 供应链 安全
|
1月前
|
应用服务中间件 Linux nginx
Mac os 安装 nginx 教程(success)
这篇文章是关于如何在Mac OS系统上使用Homebrew安装nginx及其依赖,并解决安装过程中可能出现的权限问题。
114 0
Mac os 安装 nginx 教程(success)
|
23天前
|
人工智能 Anolis 开发者
下一篇
无影云桌面