CN112579150B - 支持多cpu架构的增强系统实时性的方法 - Google Patents
支持多cpu架构的增强系统实时性的方法 Download PDFInfo
- Publication number
- CN112579150B CN112579150B CN202011599558.8A CN202011599558A CN112579150B CN 112579150 B CN112579150 B CN 112579150B CN 202011599558 A CN202011599558 A CN 202011599558A CN 112579150 B CN112579150 B CN 112579150B
- Authority
- CN
- China
- Prior art keywords
- real
- time
- kernel
- patch
- version
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种支持多CPU架构的增强系统实时性的方法,包括如下步骤:获取所欲升级到的内核版本的实时性内核源码仓库;定位实时内核大版本号;定位实时内核的非实时补丁;根据非实时补丁产生实时补丁;手动合入实时补丁;若手动合入实时补丁后系统出现崩溃现象,则升级实时补丁,若手动合入实时补丁后系统未出现崩溃现象,则升级实时补丁。本发明可以让内核开发人员能准确的找到当前任意内核版本应该打入哪个实时补丁,尽可能的降低4万行实时补丁合入内核的难度。
Description
技术领域
本发明涉及系统性能优化技术领域,具体涉及一种支持多CPU架构的增强系统实时性的方法。
背景技术
电力、铁路、汽车车机控制、工业控制等行业都有着较高的实时性响应要求。在上述行业中,公司大概率会选择如VxWorks、QNX等系统,这些系统的兼容性较差,只能针对特定系统进行软件定制。为了增强软件的兼容性、可移植性,通用linux成为了较好的选择,但难以胜任上述行业的实时性要求,所以需要对linux进行实时性增强。
目前国际上常用的增加linux实时性的方案有RTLinux、L4linux、Xenomai,这些都属于多内核的实现方案,而且实时性软件依然运行在特定的域中,依然无法实现软件的兼容性、可移植性。
还有一种linux内核社区普遍使用的Preempt-rt方案,Preempt-rt补丁。目前CentOS7、RedHat7的X86架构下基于3.10内核已完成Preempt-rt方案的集成,但是如果想要升级内核或更换成ARM架构或者升级的CentOS8或者RedHat8,则工作量巨大。
发明内容
为解决已有技术存在的不足,本发明提供了一种支持多CPU架构的增强系统实时性的方法,包括如下步骤:
步骤S1:获取所欲升级到的内核版本的实时性内核源码仓库;
步骤S2:定位实时内核大版本号;
步骤S3:定位实时内核的非实时补丁;
步骤S4:根据非实时补丁产生实时补丁;
步骤S5:手动合入实时补丁;
步骤S6:若手动合入实时补丁后系统出现崩溃现象,则升级实时补丁,若手动合入实时补丁后系统未出现崩溃现象,则结束。
其中,所述步骤S1包括:
步骤S11:获取系统的镜像文件;
步骤S12:获取所欲升级到的内核版本的源码包;
步骤S13:克隆具有实时内核的git仓库。
其中,所述步骤S3中,根据changelog搜索社区内核版本包含相同描述的commit项,找到尽量接近的小版本号,从而定位到实时内核的非实时补丁。
其中,所述步骤S4中,根据非实时补丁,定位到实时系统的内核版本号,再产生此内核版本号对应的实时补丁。
其中,所述步骤S4中,通过从实时性内核源码仓库中定位大版本号,再查找commit,定位出提交日期晚于commit提交日期的tag,再针对此tag产生RT补丁,即实时补丁。
其中,所述步骤S6中,若手动合入实时补丁后系统出现崩溃现象,则根据产生的RT补丁升级实时补丁。
本发明可以让内核开发人员能准确的找到当前任意内核版本应该打入哪个实时补丁,尽可能的降低4万行实时补丁合入内核的难度。
附图说明
图1:本发明的支持多CPU架构的增强系统实时性的方法的实现流程图。
具体实施方式
为了对本发明的技术方案及有益效果有更进一步的了解,下面结合附图详细说明本发明的技术方案及其产生的有益效果。
本发明基于CentOS系统,可以让内核开发人员完成基于X86和ARM架构的任意内核版本增加实时性的方法。
内核版本差异越大,内部函数变化的可能性就越大,合入实时补丁的难度就越大。因此,本发明的增加实时性的方法的基本原理是尽最大可能缩小实时版本内核与非实时版本内核的版本差异。本发明基于CentOS系统,在linux-stable-rt.git仓库中使用大版本号比对结合最后编写的log内容和时间的方式精确定位到社区实时版内核的版本,由此产生实时性补丁,再手动合入到CentOS系统内核中,图1为本发明的支持多CPU架构的增强系统实时性的方法的实现流程图,其大致的发明构思如下:下载实时性内核源码仓库,linux-stable-rt.git。根据给定内核版本,定位大版本号,再根据changelog搜索社区内核版本包含相同描述的commit项,找到尽量接近的小版本号,此版本就是较为精确的非实时内核的版本。再从linux-stable-rt.git中查找对应版本的RT补丁,手动打入给定内核版本中,这时的实时补丁合入原有内核的难度就会较低,产生冲突的概率较小。
以X86架构的CentOS7.4系统内核kernel-3.10.0-693升级到kernel-alt-4.14.0-49为例。具体步骤如下:
1、安装系统
从https://vault.centos.org/7.4.1708/isos/x86_64/网址获取CentOS-7-x86_64-Everything-1708.iso镜像文件。
使用virtualBox,在虚拟机上安装centos7.4系统。
2、下载内核源码
从https://vault.centos.org/7.5.1804/os/Source/SPackages/网址中下载需要升级版本的kernel-alt-4.14.0-49.el7a.src.rpm源码包
3、克隆实时内核git仓库
使用git clonehttps://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git命令下载具有实时内核的git仓库
4、定位实时内核大版本号
根据步骤2下载内核版本kernel-alt-4.14.0-49,可以定位到实时内核的大版本号为4.14左右。
5、定位实时内核的非实时补丁
在步骤2下载的内核源码中的spec文件内changelog部分的最后一个log项包含描述:“[powerpc]KVM:PPC:Book3S HV:Fix guest timeaccounting with VIRT_CPU_ACCOUNTING_GEN(Laurent Vivier)[1541614]”。使用git log--grep"VIRT_CPU_ACCOUNTING_GEN"命令在c步骤中下载的git仓库中可以查到commit值为f768d0f981e614a6e2bd5da9c7613cb2908b875d的补丁存在描述文字为:“KVM:PPC:Book3S HV:Fix guesttime accounting with VIRT_CPU_ACCOUNTING_GEN”。
该commit项的提交日期是2018年3月2日,而b步骤下载内核源码中的spec文件log描述编写日期是2018年3月14日。
根据log编写时间和commit提交时间相近,同时log描述与commit描述相同,可以推断出commit值为f768d0f981e614a6e2bd5da9c7613cb2908b875d的补丁满足本次查找的要求。
6、根据补丁定位版本号
使用git for-each-ref--format="%(refname:short)%(taggerdate)%(subject)%(body)"refs/tags|grep v4.14命令在c步骤中下载的git仓库中得到所有v4.14 tag产生的日期。经人为查找2018年3月2日之后产生的带rt字样的tag,发现4.14.40-rt30符合要求。
7、产生实时补丁
使用git diff v4.14.40v4.14.40-rt30>rt30.patch命令产生实时补丁rt30.patch。
8、手动合入实时补丁
过程7产生的补丁大约有4万行,把它合入过程2下载的kernel-alt-4.14.0-49内核中。编译并测试,如果没有出现崩溃现象,则本次加入实时性的工作结束。如果出现崩溃现象,可以考虑升级实时补丁。
9、升级实时补丁
以步骤6得到的4.14.40-rt30 tag为基础,升级RT补丁,升级到RT31,当出现rebase字样时则顺延,即顺延到RT32。此时的版本为v4.14.45-rt32。再次进入到步骤7,直到不会崩溃为止。
通常实时补丁大约有4万行代码,使用本发明可以让内核开发人员能准确的找到当前任意内核版本应该打入哪个实时补丁,尽可能的降低4万行实时补丁合入内核的难度。
虽然本发明已利用上述较佳实施例进行说明,然其并非用以限定本发明的保护范围,任何本领域技术人员在不脱离本发明的精神和范围之内,相对上述实施例进行各种变动与修改仍属本发明所保护的范围,因此本发明的保护范围以权利要求书所界定的为准。
Claims (4)
1.一种支持多CPU架构的增强系统实时性的方法,其特征在于,包括如下步骤:
步骤S1:获取所欲升级到的内核版本的实时性内核源码仓库;
步骤S2:定位实时内核大版本号;
步骤S3:根据changelog搜索社区内核版本包含与该实时内核大版本号相同描述的commit项,找到接近的小版本号,定位到实时内核的非实时补丁;
步骤S4:根据非实时补丁,定位到实时系统的内核版本号,再产生此内核版本号对应的实时补丁;
步骤S5:手动合入实时补丁;
步骤S6:若手动合入实时补丁后系统出现崩溃现象,则升级实时补丁,若手动合入实时补丁后系统未出现崩溃现象,则结束。
2.如权利要求1所述的支持多CPU架构的增强系统实时性的方法,其特征在于,所述步骤S1包括:
步骤S11:获取系统的镜像文件;
步骤S12:获取所欲升级到的内核版本的源码包;
步骤S13:克隆具有实时内核的git仓库。
3.如权利要求1所述的支持多CPU架构的增强系统实时性的方法,其特征在于,所述步骤S4中,通过从实时性内核源码仓库中定位大版本号,再查找commit,定位出提交日期晚于commit提交日期的tag,再针对此tag产生RT补丁,即实时补丁。
4.如权利要求3所述的支持多CPU架构的增强系统实时性的方法,其特征在于,所述步骤S6中,若手动合入实时补丁后系统出现崩溃现象,则根据产生的RT补丁升级实时补丁。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011599558.8A CN112579150B (zh) | 2020-12-29 | 2020-12-29 | 支持多cpu架构的增强系统实时性的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011599558.8A CN112579150B (zh) | 2020-12-29 | 2020-12-29 | 支持多cpu架构的增强系统实时性的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112579150A CN112579150A (zh) | 2021-03-30 |
CN112579150B true CN112579150B (zh) | 2023-10-20 |
Family
ID=75144182
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011599558.8A Active CN112579150B (zh) | 2020-12-29 | 2020-12-29 | 支持多cpu架构的增强系统实时性的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112579150B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117348915B (zh) * | 2023-12-06 | 2024-04-05 | 麒麟软件有限公司 | 一种内核代码自动同步方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104090747A (zh) * | 2014-05-22 | 2014-10-08 | 清华大学 | 利用实时调度优化器对Linux智能终端进行优化的方法 |
CN105652813A (zh) * | 2014-11-13 | 2016-06-08 | 沈阳高精数控智能技术股份有限公司 | 一种基于AM335X处理器构建嵌入式实时EtherCAT主站的方法 |
CN106293756A (zh) * | 2016-08-16 | 2017-01-04 | 汉柏科技有限公司 | 一种用于快速更换的自定义Linux内核系统 |
CN107391408A (zh) * | 2017-08-03 | 2017-11-24 | 上海新时达机器人有限公司 | EtherCAT主站的创建方法及设备 |
CN111722868A (zh) * | 2020-05-20 | 2020-09-29 | 上海中科网威信息技术有限公司 | 一种申威防火墙快速移植高版本linux内核的方法 |
US10795659B1 (en) * | 2017-11-02 | 2020-10-06 | Virtuozzo International Gmbh | System and method for live patching processes in user space |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10572246B2 (en) * | 2018-04-27 | 2020-02-25 | Ati Technologies Ulc | Live update of a kernel device module |
-
2020
- 2020-12-29 CN CN202011599558.8A patent/CN112579150B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104090747A (zh) * | 2014-05-22 | 2014-10-08 | 清华大学 | 利用实时调度优化器对Linux智能终端进行优化的方法 |
CN105652813A (zh) * | 2014-11-13 | 2016-06-08 | 沈阳高精数控智能技术股份有限公司 | 一种基于AM335X处理器构建嵌入式实时EtherCAT主站的方法 |
CN106293756A (zh) * | 2016-08-16 | 2017-01-04 | 汉柏科技有限公司 | 一种用于快速更换的自定义Linux内核系统 |
CN107391408A (zh) * | 2017-08-03 | 2017-11-24 | 上海新时达机器人有限公司 | EtherCAT主站的创建方法及设备 |
US10795659B1 (en) * | 2017-11-02 | 2020-10-06 | Virtuozzo International Gmbh | System and method for live patching processes in user space |
CN111722868A (zh) * | 2020-05-20 | 2020-09-29 | 上海中科网威信息技术有限公司 | 一种申威防火墙快速移植高版本linux内核的方法 |
Non-Patent Citations (2)
Title |
---|
基于ARM的Linux实时抢占补丁的研究与实现;王帅华;杨东升;王允森;袁晓慧;;组合机床与自动化加工技术(第09期);全文 * |
基于多核ARM的数控系统实时性研究;王颖慧等;《计算机系统应用》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112579150A (zh) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110321254B (zh) | 软件版本回滚方法、装置、服务器及存储介质 | |
US8607208B1 (en) | System and methods for object code hot updates | |
US7363586B1 (en) | Component localization | |
US6237144B1 (en) | Use of relational databases for software installation | |
US7983896B2 (en) | In-context exact (ICE) matching | |
US8185872B2 (en) | Cross-platform software package generation | |
US9910684B2 (en) | Extensible firmware abstraction | |
US10248409B1 (en) | Limiting the effects of source code patches on corresponding native-code patches | |
CN112579150B (zh) | 支持多cpu架构的增强系统实时性的方法 | |
US20070234328A1 (en) | File handling for test environments | |
CN111831920A (zh) | 用户需求分析方法、装置、计算机设备及存储介质 | |
CN111104151A (zh) | 一种基于Shell脚本的Git代码简化的管理方法 | |
Haryono et al. | Androevolve: Automated update for android deprecated-api usages | |
CN117591170B (zh) | 一种龙芯PMON平台支持基于OSTree系统的方法及装置、存储介质 | |
CN116755713A (zh) | 应用程序的生成方法、装置、设备及存储介质 | |
US11379207B2 (en) | Rapid bug identification in container images | |
CN109977317B (zh) | 数据查询方法及装置 | |
US7818756B2 (en) | SKU determination mechanism and API | |
CN113821228B (zh) | 一种基于分层容器镜像构建ros或类ros项目的方法 | |
CN116150527A (zh) | 组件样式隔离方法、装置、设备、存储介质及产品 | |
CN116955393A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN115934753A (zh) | 作业调度配置信息生成方法及其装置 | |
CN113127006B (zh) | 服务部署方法、装置、设备及存储介质 | |
CN113986385A (zh) | 项目字体库加载方法、装置、电子设备及存储介质 | |
CN112817931A (zh) | 一种增量版本文件的生成方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |