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学习后续的更多相关文章

  1. Linux内核调试方法总结【转】

    转自:http://my.oschina.net/fgq611/blog/113249 内核开发比用户空间开发更难的一个因素就是内核调试艰难.内核错误往往会导致系统宕机,很难保留出错时的现场.调试内核 ...

  2. 【转】Linux内核调试方法总结

    目录[-] 一  调试前的准备 二  内核中的bug 三  内核调试配置选项 1  内核配置 2  调试原子操作 四  引发bug并打印信息 1  BUG()和BUG_ON() 2  dump_sta ...

  3. Linux内核调试方法总结

    Linux内核调试方法总结 一  调试前的准备 二  内核中的bug 三  内核调试配置选项 1  内核配置 2  调试原子操作 四  引发bug并打印信息 1  BUG()和BUG_ON() 2   ...

  4. LINUX内核分析第二周学习总结——操作系统是如何工作的

    LINUX内核分析第二周学习总结——操作系统是如何工作的 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course ...

  5. LINUX内核分析第四周学习总结——扒开系统调用的“三层皮”

    LINUX内核分析第四周学习总结--扒开系统调用的"三层皮" 标签(空格分隔): 20135321余佳源 余佳源 原创作品转载请注明出处 <Linux内核分析>MOOC ...

  6. Linux内核分析第四周学习总结——系统调用的工作机制

    Linux内核分析第四周学习总结--系统调用的工作机制 内核态 执行级别高,可以执行特权指令,访问任意物理地址,在intel X86 CPU的权限分级为0级. 用户态 执行级别低,只能访问0x0000 ...

  7. Linux内核分析第二周学习博客——完成一个简单的时间片轮转多道程序内核代码

    Linux内核分析第二周学习博客 本周,通过实现一个简单的操作系统内核,我大致了解了操作系统运行的过程. 实验主要步骤如下: 代码分析: void my_process(void) { int i = ...

  8. Unity3D教程:无缝地形场景切换的解决方法

    http://www.unitymanual.com/6718.html 当我们开发一个大型项目的时候-会遇到这样的问题(地形场景的切换)这个只是字面意思-并不是重场景1的100  100 100坐标 ...

  9. Winform下实现图片切换特效的方法

    本文实例讲述了Winform下实现图片切换特效的方法,是应用程序开发中非常实用的一个功能.分享给大家供大家参考之用.具体方法如下: 本实例源自网络,功能较为齐全.丰富!主要功能代码如下: using ...

  10. 同ListView该接口无法通过手势滑动左右切换界面问题解决方法

    同ListView该接口无法通过手势滑动左右切换界面问题解决方法 问题描写叙述: 在做OnGestureListener滑动切换窗体的时候,会遇到这种问题.就是当界面中含有ListView的时候.On ...

随机推荐

  1. 云数据库 GaussDB(for Influx) 解密第十一期:让智能电网中时序数据处理更高效

    摘要:GaussDB(for Influx)是一款基于计算存储分离架构,完全兼容 InfluxDB 生态的云原生时序数据库. 本文分享自华为云社区<云数据库 GaussDB(for Influx ...

  2. 原来的 service 命令与 systemctl 命令对比

    service [服务] start       systemctl start [unit type] 启动服务 #启动网络服务  systemctl start network.servicese ...

  3. FTP安全组设置

    放行FTP服务器 TCP 21端口及FTP服务器被动1024/65535端口

  4. 语音顶会 ICASSP 2022 成果分享:基于时频感知域模型的单通道语音增强算法

    近日,阿里云视频云音频技术团队与新加坡国立大学李海洲教授团队合作论文 <基于时频感知域模型的单通道语音增强算法 >(Time-Frequency Attention for Monaura ...

  5. CommonJS 和 ES6 Module 究竟有什么区别?

    https://juejin.im/post/5e5f10176fb9a07cd443c1e2

  6. C#通过泛型实现对子窗体的不同操作

    private void button1_Click(object sender, EventArgs e) { FormOperate<object>();//调用FormOperate ...

  7. Could not get a resource from the pool 异常定位和解决

    最近在服务中经常看到以下错误,进行下定位和问题解决分析: 2023-12-08 00:10:58.248 WARN [terra-sr-server,a9006fd27ccb81d0,a9006fd2 ...

  8. Rocketmq学习3——消息发送原理源码浅析

    一丶概述 RocketMQ 消息发送的原理流程可以分为以下几个步骤: 1. 创建生产者 在发送消息前,客户端首先需要创建一个消息生产者(Producer)实例,并设置必要的配置参数,如NameServ ...

  9. 如果诸葛亮会编程,用Java写出师表...

    继上一篇 "如果诸葛亮用C#写出师表..."后,站长想自己的第一语言是Java,虽然平时工作上用的不多,也用Java实现一遍吧,改改就是了,无非就是: C#的Console.Wri ...

  10. 电机控制和Linux驱动开发哪个方向更好呢?

    电机控制和Linux驱动开发哪个方向更好呢? 先说结论:任何一个领域,就像世间的五行,阴阳结合,虚实结合,利弊结合.对于哪个更好,不能一概而论,最重要的是要搞清楚,你更适合哪个? 1.共鸣 当我看到这 ...