OpenEuler切换内核的方法-bcc学习后续
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学习后续的更多相关文章
- Linux内核调试方法总结【转】
转自:http://my.oschina.net/fgq611/blog/113249 内核开发比用户空间开发更难的一个因素就是内核调试艰难.内核错误往往会导致系统宕机,很难保留出错时的现场.调试内核 ...
- 【转】Linux内核调试方法总结
目录[-] 一 调试前的准备 二 内核中的bug 三 内核调试配置选项 1 内核配置 2 调试原子操作 四 引发bug并打印信息 1 BUG()和BUG_ON() 2 dump_sta ...
- Linux内核调试方法总结
Linux内核调试方法总结 一 调试前的准备 二 内核中的bug 三 内核调试配置选项 1 内核配置 2 调试原子操作 四 引发bug并打印信息 1 BUG()和BUG_ON() 2 ...
- LINUX内核分析第二周学习总结——操作系统是如何工作的
LINUX内核分析第二周学习总结——操作系统是如何工作的 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course ...
- LINUX内核分析第四周学习总结——扒开系统调用的“三层皮”
LINUX内核分析第四周学习总结--扒开系统调用的"三层皮" 标签(空格分隔): 20135321余佳源 余佳源 原创作品转载请注明出处 <Linux内核分析>MOOC ...
- Linux内核分析第四周学习总结——系统调用的工作机制
Linux内核分析第四周学习总结--系统调用的工作机制 内核态 执行级别高,可以执行特权指令,访问任意物理地址,在intel X86 CPU的权限分级为0级. 用户态 执行级别低,只能访问0x0000 ...
- Linux内核分析第二周学习博客——完成一个简单的时间片轮转多道程序内核代码
Linux内核分析第二周学习博客 本周,通过实现一个简单的操作系统内核,我大致了解了操作系统运行的过程. 实验主要步骤如下: 代码分析: void my_process(void) { int i = ...
- Unity3D教程:无缝地形场景切换的解决方法
http://www.unitymanual.com/6718.html 当我们开发一个大型项目的时候-会遇到这样的问题(地形场景的切换)这个只是字面意思-并不是重场景1的100 100 100坐标 ...
- Winform下实现图片切换特效的方法
本文实例讲述了Winform下实现图片切换特效的方法,是应用程序开发中非常实用的一个功能.分享给大家供大家参考之用.具体方法如下: 本实例源自网络,功能较为齐全.丰富!主要功能代码如下: using ...
- 同ListView该接口无法通过手势滑动左右切换界面问题解决方法
同ListView该接口无法通过手势滑动左右切换界面问题解决方法 问题描写叙述: 在做OnGestureListener滑动切换窗体的时候,会遇到这种问题.就是当界面中含有ListView的时候.On ...
随机推荐
- 关于GO语言,这篇文章讲的很明白
摘要:本文从Go的语法,类型系统,编码风格,语言工具,编码工具和使用案例等几方面对Go语言进行了学习和探讨. Go语言发布之后,很多公司特别是云厂商也开始用Go语言重构产品的基础架构,而且很多企业都是 ...
- PreSTU:一个专门为场景文本理解而设计的简单预训练模型
摘要:在视觉与语言(V&L)模型中,阅读和推理图像中的文本的能力往往是缺乏的.我们如何才能学习出强大的场景文本理解(STU)的V&L模型呢? 本文分享自华为云社区<场景文本理解预 ...
- 华为云GaussDB两大数据库通过中国信通院多项评测
摘要:权威认可!华为云GaussDB两大数据库通过中国信通院多项评测. 本文分享自华为云社区<官宣!华为云GaussDB两大数据库通过中国信通院多项评测>,作者: GaussDB 数据库 ...
- 加快云原生技术转型, 智能调度登陆华为云DevOps: 增速,节源
摘要:本文将探讨智能资源调度在华为云DevOps上的应用与实践. 本文分享自华为云社区<加快云原生技术转型, 智能调度登陆华为云DevOps: 增速,节源>,作者: DevAI. 1. 背 ...
- PNG文件解读(1):PNG/APNG格式的前世今生
PNG格式的前世今生 png是一种无损压缩的位图片形格式,其设计目的是试图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性.PNG使用从LZ77派生的无损数据压缩算法--LZW专 ...
- HIVE报错 need to specify partition columns because the destination table is partitioned
解决 分区需要指定分区 insert into table XXX partition(分区='')
- 【scikit-learn基础】--『监督学习』之 层次聚类
层次聚类算法是机器学习中常用的一种无监督学习算法,它用于将数据分为多个类别或层次.该方法在计算机科学.生物学.社会学等多个领域都有广泛应用. 层次聚类算法的历史可以追溯到上世纪60年代,当时它主要被用 ...
- Java23种设计模式学习笔记
创建型模式:关注对象的创建过程 1.单例模式: 保证一个类只有一个实例,并且提供一个访问该实例的全局访问点 主要: 饿汉式(线程安全,调用效率高,但是不能延时加载) 懒汉式(线程安全,调用效率不高, ...
- 【内核】深入分析内核panic(一)--内核问题的原因
1 概述 linux内核包括进程管理.内存管理.中断管理.设备驱动.同步机制等各种模块,它们共同运行在一个共享的地址空间中,因此在运行中一旦出现问题,彼此之间可能具有千丝万缕的联系. 而且与用户态不同 ...
- secure boot (一)fit image
前言 secure boot 和FIT Image是前段时间接触到的,其实早就该总结下了,奈何懒癌犯了,拖了好久才写出来. 之前也有人问我,工作后最大的感受是什么?我的回答是:"快速学习&q ...