OpenEuler切换内核的方法-bcc学习后续

openeuler,切换,内核,方法,bcc,学习,后续 · 浏览次数 : 418

小编点评

**OpenEuler 切换内核方法总结** **1. 探索 Preempt_RT 补丁** * Preempt_RT 是一个维护者 Thomas Gleixner 开发的实时内核补丁。 * 它遵循 POSIX 标准,与非实时内核相比更容易移植。 * Preempt_RT 在 Linux 内核中的抢占延迟从无限制的毫秒数降低到数十微秒的有界值。 **2. 安装 Preempt_RT 补丁** * 从源代码编译: `sudo apt install kernel-devel-5.10.0-60.18.0.50.oe2203.x86_64 -y` * 从 RPM 包中安装: `sudo yum install bcc kernel-devel-5.10.0-60.18.0.50.oe2203.x86_64 -y` **3. 验证 Preempt_RT 补丁** * 使用 `grub2-editenv list` 命令查看内核信息。 * 使用 `uname -r` 命令验证内核版本。 **4. 其他方法** * 通过编辑 `/etc/default/grub` 文件设置内核默认选项。 * 使用 `sudo grub2-mkconfig -o /boot/grub2/grub.cfg` 创建内核配置文件。 * 使用 `sudo grub2-editenv list` 命令验证内核默认选项。

正文

OpenEuler切换内核的方法


摘要

昨天使用OpenEuler 22.03 LTS学习bcc但是一直不行. 
没办法切换到CentOS8 还有 Anolis 8 很容易就可以直接还是用了
yum install -y bcc kernel-devel
然后直接进入
cd /usr/share/bcc/tools 下面就可以使用命令了
但是OpenEuler死活不行.
研究了很久都没结果. 
晚上突然发现OpenEuler里面的内核带一个RT的字样, 所以进行了一些新的学习和总结

OpenEuler的新特性

注意 rt内核的一些测试结论:
Preempt_RT 补丁可以有效提高系统实时性,
且在多种负载场景下,实时性表现较为稳定。

Preempt_RT 补丁对本地通讯吞吐率有一定影响,
主要提现为管道读写、文件拷贝,对系统调用延迟影响大多在 2 微秒以内。

一个测试结果的地址为:
https://www.modb.pro/db/392580

更换回非rt内核

grep menuentry /boot/grub2/grub.cfg
看到会有多个内核:
menuentry 'openEuler (5.10.0-60.18.0.50.oe2203.x86_64) 22.03 LTS'
menuentry 'openEuler (5.10.0-60.18.0.rt62.52.oe2203.x86_64) 22.03 LTS'

修改内核:
grub2-set-default "openEuler (5.10.0-60.18.0.50.oe2203.x86_64) 22.03 LTS"
查看确认修改效果:
grub2-editenv list
重启服务器:
reboot

重启后再次验证内核信息:
看到内核的提示信息:
Welcome to 5.10.0-60.18.0.rt62.52.oe2203.x86_64
变成了:
Welcome to 5.10.0-60.18.0.50.oe2203.x86_64

另外一种修改方式:

sudo vi /etc/default/grub
修改为 0 或者是 1 
GRUB_DEFAULT=saved
然后执行命令:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
重启就会修改内核

bcc 验证

注意 需要根据 uname -r 查询出来的内核进行安装才可以
uname -r 然后修该devel- 后面的版本信息
yum install kernel-devel-5.10.0-60.18.0.50.oe2203.x86_64 -y
注意如果之前因为 使用rt内核已经安装了其他版本的devel 需要先清理掉
yum remove kernel-devel -y
在执行安装. 

其实 openEuler22.03默认带了bcc工具链,不用这么复杂的来处理. 

部分实时内核学习资料

什么是实时系统
实时系统的典型定义如下:“所谓实时系统,就是系统中计算结果的正确性不仅取决于计算逻辑的正确性,还取决于产生结果的时间。
如果完成时间不符合要求,则可以认为系统发生了问题。”也就是说,不管实时应用程序执行的是何种任务,
它不仅需要正确执行该任务而且必须及时完成。当前,Preempt_RT 维护者 Thomas Gleixner 给出的“实时”含义是:它和指定的一样快。

Linux 作为一种通用操作系统,随着时间的推移,在功能和时序行为方面一直在发展,
以便适合许多其他更具挑战性的场景;尤其是实时系统对 Linux 的实时性改造一直从未停止过。

对 Linux 进行实时性改造,通常可从两个大的方向来着手。一个方向是从 Linux 内核内部开始,直接修改其内核源代码,
其典型代表是 Preempt_RT 实时补丁;另一个方向则是从 Linux 内核的外围开始,实现一个与 Linux 内核共存的实时内核,
即采用双内核方法,其典型实现为 RTAI/Linux,即现在的 Xenomai。

因为 Xenomai 实时内核与 Linux 内核共存,Xenomai 实时内核小而精巧,能够很好地控制其中的代码质量。
Xenomai 实时内核完成了基本的硬件抽象层、任务调度管理和进程间通信管理模块等,能够满足一些硬实时系统的需求。
然而,其上的实时应用通常分为实时和非实时两部分来完成 ,实时部分必须使用 Xenomai 提供的特有的 API;
非实时部分则可以使用 Linux 提供的系统调用。与 Preempt_RT 实时编程相比,Xenomai 编程实现更为困难,软件移植难度更大。

与双内核机制方案相比,Preempt_RT 实时补丁最大的优势在于它遵循 POSIX 标准,
使用该补丁的实时系统应用程序和驱动程序与非实时系统的应用和驱动程序差异很小。
因此,在使用该补丁的平台上做相应的开发比双内核机制的方案更容易。另外,该补丁与硬件平台相关性小,可移植性高。
由于 Linux 内核过于庞大,有着较多关中断、关抢占代码,加上复杂的内存管理、调度器代码逻辑等众多不确定性因素,
使得 Preempt_RT 虽然具有较好的软实时性,但在硬实时性方面有所欠缺。

什么是 Preempt_RT
Preempt_RT 补丁开发始于 2005 年。之后由德国 OSADL 组织赞助,Ingo Molnar、Thomas Gleixner 和 Steven Rostedt 三人共同发起,
旨在将 Linux 内核的最大线程切换延迟从无限制的毫秒数降低到数十微秒的有界值。
2016 年以后成为 Linux 基金会下属合作项目。目前 Preempt_RT 的赞助者来自:
 ARM、BMW、CIP、ELISA、Intel、National Instruments、OSADL、RedHat 和 Texas Instruments 等。
 经过 Preempt_RT 和 Linux 内核工程师在抢占、实时性方面的努力,Linux 内核的抢占延迟降低了几个数量级,
 使其能够与商业实时操作系统竞争。业界知名的 MontaVista Linux、WindRiver Linux、TimeSys Linux 都有 RT 补丁的身影。
 像 RTJVM、RTKVM、RTDocker、RTAndroid 等曾经出现过的 Preempt_RT 衍生用例,响应速度都有着不同程度的提升。

多年来,该补丁的许多部分已被纳入主线 Linux,包括高分辨率计时器(2.6.16)、优先级继承(2.6.18)、可抢占的 RCU(2.6.25)、
内核互斥量和线程中断处理程序(2.6.30)、完全 Tickless 机制(3.10)、DL 调度器(EDF 调度算法)(3.14)、实时抢占锁(5.15)。
然而,该补丁的核心部分仍然在主线之外。从近几年的 Preempt_RT 补丁来看,当前的主要工作不是开发新功能,而是专注于增量式引入主线和特定架构的支持。

当前 openEuler 22.03 LTS 主线内核版本为 Linux Kernel 5.10,有 180 把锁无法抢占,其中 8 把锁在 RT 补丁中强制修改成无法抢占。
在最新的 5.17 内核中,Preempt_RT 补丁大小为 265KB,有 189 把锁仍然无法抢占,RT 补丁不再强制修改锁为无法抢占。

与OpenEuler切换内核的方法-bcc学习后续相似的内容:

OpenEuler切换内核的方法-bcc学习后续

OpenEuler切换内核的方法 摘要 昨天使用OpenEuler 22.03 LTS学习bcc但是一直不行. 没办法切换到CentOS8 还有 Anolis 8 很容易就可以直接还是用了 yum install -y bcc kernel-devel 然后直接进入 cd /usr/share/bc

openEuler 20.04 TLS3 上的 Python3.11.9 源码一键构建安装

#! /bin/bash # filename: python-instaler.sh SOURCE_PATH=/usr/local/source # 下载源码包 mkdir -p $SOURCE_PATH curl -o $SOURCE_PATH/Python-3.11.9.tgz https:/

openEuler technical-certification

https://gitee.com/meitingli/technical-certification/ 介绍 存放openEuler技术测评相关的文档,包括技术测评标准、流程、指导性文档等 技术测评概述 欧拉技术测评:基于欧拉操作系统,含开源版本和商业版本,对软件伙伴产品及解决方案,完成的多样性算

[转帖]openEuler 操作系统 介绍

2022-10-14 12:411210原创Linux 本文链接:https://www.cndba.cn/dave/article/108700 openEuler社区前身是华为服务器操作系统EulerOS,于2019年开源后命名为 openEuler,采用木兰协议。openEuler与SuSE、

[转帖]OpenEuler的简单使用.

RPM安装 本章节主要介绍在openEuler 22.03 LTS操作系统上,通过yum命令一键安装openGauss数据库。 支持的架构和操作系统版本 x86-64 openEuler 22.03 LTS ARM64 openEuler 22.03 LTS 仅在openEuler 22.03 LT

[转帖]OpenEuler随安装盘带的openGauss的简单使用

OpenEuler随安装盘带的openGauss的简单使用 背景 OpenGauss数据库分为多种. 随着OpenGauss操作系统也带了一个单机版的OpenGauss数据库 虽然不是集群版本的. 但是本着学习的态度还是想研究一下. 注意这里仅简单描述一下使用, 非常不全面 安装 OpenEuler

[转帖]openEuler 开源操作系统荣获 2022 世界互联网领先科技成果奖

https://linux.cn/article-15237-1.html 其实挺好的.. 被誉为“全球科技成果发展风向标”的年度领先科技成果大奖于世界互联网大会首日揭晓。openEuler 开源操作系统凭借在开源操作系统领域的创新成果获得大会评委会一致认可,并最终摘得“全球领先科技成果大奖”。此次

[转帖]openEuler 22.09 正式版发布:实现欧拉与鸿蒙的互联互通

https://www.ithome.com/0/644/648.htm IT之家 10 月 2 日消息,据 openEuler 发布,openEuler 是数字基础设施的开源操作系统,openEuler 22.09 是社区构建的最新创新版本,释放多样性算力,深化全场景创新,实现欧拉与鸿蒙的互联互通

[转帖]openEuler官方容器镜像仓

https://gitee.com/openeuler/openeuler-docker-images 介绍 这里存放着由openEuler官方提供的容器镜像,包含openEuler基础镜像、应用镜像。 openEuler基础镜像 openEuler的基础镜像由社区官方发布,目前发布在openEul

[转帖]openEuler 22.03 LTS 版本发布,已有 8 家伙伴计划推出商业发行版

https://zhuanlan.zhihu.com/p/500525072 4 月 13 日-15 日,欧拉开发者大会(openEuler Developer Day 2022)在线上和线下同步举行。大会以“一起创未来,欧拉更精彩”为主题,旨在推动 openEuler 在服务器、云计算、边缘计算和