首页 > 其他分享 >【原创】PREEMPT-RT 系统cpu使用率周期飙高问题

【原创】PREEMPT-RT 系统cpu使用率周期飙高问题

时间:2024-11-17 18:20:40浏览次数:1  
标签:RT 周期 系统 飙高 PREEMPT CPU

PREEMPT-RT系统某些应用场景sys cpu使用率周期CPU飙高问题

目录

背景

在22年进行PREEMPT-RT系统问题的调试时,之前文章在CPU性能优化小记-使用火焰图定位性能问题只是定位解决了其中一个问题,还有一个潜在的问题当时没有续写。然而,最近几乎所有PREEMPT-RT产品上都出现了该问题,影响了非实时任务的CPU吞吐量,引起了大家的广泛关注。因此,有必要对这个问题进行简单记录,希望对大家有所帮助。

本文只说明原因和结论,省略了问题定位流程。

现象

在PREEMPT-RT系统的某些应用场景下,即使没有运行特定的应用程序,整个系统的CPU负载在间隔一段时间后会突然飙升几百毫秒甚至几秒钟。不同机器上的持续时间和间隔时间会有所不同。

无论使用top还是pidstat进行观察,只能确定system CPU使用率飙升,且相关线程不定,与具体线程无关。

复现条件

找到一台具有良好实时性的机器,可以是PREEMPT-RT系统或是xenomai+rtnet系统,创建一个高实时任务。该任务使用raw socket周期性地向目标机器发送广播帧,周期可以是500us、1ms或2ms,但发帧周期必须非常准确。

原因

该问题为PREEMPT-RT通病(至少我当前接触到的内核从3.2到5.10均有该问题),整个系统中存在一个以上外部周期事件时就会出现,比如接收PLC发送的周期以太网帧、外部FPGA触发的周期IO中断事件、EtherCAT主站同步到从站参考时钟后中断收发以太网帧等等。

由于外部周期事件(中断)基于的时钟源与PREEMPT-RT系统调度时钟源不同,这两个时钟存在时钟漂移,周期事件会和PREEMPT RT本身的系统调度事件发生周期交越,当两个事件逐渐接近的时候,两个事件都要处理,频繁的上下文导致cpu飙高,系统实时任务的抖动会微微增大。这是PREEMPT-RT系统为了保证外部事件实时性而牺牲CPU吞吐量的机制所导致的。

解决措施

尽管没有彻底解决的方法,但可以尝试以下缓解措施:

  • 对于单CPU核系统,系统tick无法关闭,该问题无解;
  • 对于SMP多核系统,使能CONFIG_NO_HZ_FULL,降低系统周期Tick,同时设置周期事件中断的亲和性到使能CONFIG_NO_HZ_FULL且没有周期任务运行的CPU上来缓解。

关于Linux时钟子系统,详见本博客之前的文章 linux时间子系统简介

下一篇文章,我们将探讨由PREEMPT-RT实时机制导致的网络风暴下系统死机问题。

标签:RT,周期,系统,飙高,PREEMPT,CPU
From: https://www.cnblogs.com/wsg1100/p/18550854

相关文章

  • request to https://registry.npm.taobao.org/ant-design-vue failed, reason: ce
     一、原因分析其实早在2021年,淘宝就发文称,npm淘宝镜像已经从http://registry.npm.taobao.org切换到了http://registry.npmmirror.com。旧域名也将于2022年5月31日停止服务(直到HTTPS证书到期才真正不能用了)2024年1月22日,淘宝原镜像域名(http:/......
  • LOJ3561 The short shank (妙题)
    传送门记\(L_i=\max_{1\lej<i,t_j+(i-j)\leT}j\),即使得\(i\)会越狱的最靠近\(i\)的人。则有\(i\)不越狱当且仅当\([L_i,i)\)放了床垫。问题转变为放\(D\)个床垫,使得最多的\([L_i,i)\)内有床垫。观察这些区间的性质。注意到这些区间只可能包含或相离。因为如果两......
  • Uncertainty of Thoughts: Uncertainty-Aware Planning Enhances Information Seeking
    目录概UoT代码HuZ.,LiuC.,FengX.,ZhaoY.,NgS.,LuuA.T.,HeJ.,KohP.W.andHooiB.Uncertaintyofthoughts:Uncertainty-awareplanningenhancesinformationseekinginlargelanguagemodels.NeurIPS,2024.概通过判断问题所导致的不确定性降低程度来......
  • BERT的中文问答系统31
    为了实现需求,我们对现有的30代码进行一些扩展,增加网络搜索功能,并在大模型无法提供满意答案时调用网络搜索。以下是详细的代码和文件结构说明:文件结构project_root/│├──data/│├──train_data.jsonl│└──test_data.jsonl│├──logs/│──......
  • ECharts饼图-饼图33,附视频讲解与代码下载
    引言: 在数据可视化的世界里,ECharts凭借其丰富的图表类型和强大的配置能力,成为了众多开发者的首选。今天,我将带大家一起实现一个饼图图表,通过该图表我们可以直观地展示和分析数据。此外,我还将提供详细的视频讲解和代码下载链接,帮助大家快速上手。一、图表效果预览二、视频......
  • SAP GR(Group Reporting)合并报表内容及功能简介(五)-合并和抵消
    合并和抵消审核公司间匹配和对账公司间匹配和对账概览随着合并和收购数量的显著增加,企业在全球经济中面临着诸多挑战。其中最常见的是法律实体与子公司之间缺乏透明度,导致无法以经济高效的方式对账法律实体与子公司之间的公司间交易,从而造成结算出现重大延迟。公司间匹配......
  • pa4 多道程序和nemu运行RT-thread
    首先看一下讲义里提到的yieldos,这个os里面只有两道程序切换的模拟内容,只要做过pa3就很容易理解:#defineSTACK_SIZE(4096*8)typedefunion{uint8_tstack[STACK_SIZE];struct{Context*cp;};}PCB;staticPCBpcb[2],pcb_boot,*current=&pcb_boot;static......
  • Let'sGoFurther - Chapter 8: Advanced CRUD Operations
         var(ErrRecordNotFound=errors.New("recordnotfound")ErrEditConflict=errors.New("editconflict")) func(mMovieModel)Update(movie*Movie)error{query:=`UPDATEmovieSET......
  • C# The file is too long. This operation is currently limited to supporting file
    namespaceConsoleApp4{internalclassProgram{staticvoidMain(string[]args){stringbigFile=@"C:\Users\fred\Downloads\ebook-master.zip";ReadBigFile(bigFile);}......
  • Ubuntu24.04 安装 VirtualBox
    Ubuntu24.04安装VirtualBox下载DownloadVirtualBoxforLinuxHostshttps://www.virtualbox.org/wiki/Linux_Downloadswgethttps://download.virtualbox.org/virtualbox/7.1.4/virtualbox-7.1_7.1.4-165100~Ubuntu~noble_amd64.deb安装sudodpkg-ivirtualbox-7.1_7.1......