【性能优化】cpu时间抖动问题的解决修复

2023-05-16

问题描述:

边缘设备的cpu在低占有率时,进程运行时间抖动较大,在高占有率时,运行时间抖动更稳定
低占有率运行情况图:
在这里插入图片描述
相同处理逻辑循环中,两次处理的时间间隔:
在这里插入图片描述

原因排查:

考虑问题引起的原因,是由于进程在高频核上运行时,时间间隔较短,切换到低频核后,时间间隔会变大,导致进程运行时间抖动较大
CPU频率监控命令:watch -n 1 sudo cpupower monitor

低占有率时cpu频率监测:发现不同核的频率相差较大
在这里插入图片描述
高占有率时cpu频率监测:发现不同核的频率相差较小
在这里插入图片描述

问题解决:

1.设置cpu最低运行频率,使进程在切换核时,时间间隔保持稳定。
先把intel pstate驱动干掉:

vim /etc/default/grub

在quiets plash后添加intel_pstate=disable

在这里插入图片描述

更新grub

sudo update-grub

重启以后,可以看到driver已经从intel_pstate改为acpi_cpufreq了,现在可以愉快地改频率了。喜欢echo进sysfs的也可以,这里用工具cpufrequtils来做:

cpufreq-set -g userspace
cpufreq-set -f 3000000

在这里插入图片描述

此时CPU就被固定在2GHz的频率了,可调频率键入cat available_frequence应该有,不过能选的不多,有特殊需求就要修改这个静态数组然后重新编译内核了。

测试结果:
在这里插入图片描述
相同处理逻辑循环中,两次处理的时间间隔:
可以看到时间间隔明显变平稳,切延迟更低
在这里插入图片描述

2.进程绑核(待验证)
因为大概率是进程切核引起的问题,所以考虑该方案应该也可以解决问题。

arm平台也亲测有效,arm修改cpu频率方法请自行搜索
具体锁频的数值建议咨询供应商,避免烧cpu

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【性能优化】cpu时间抖动问题的解决修复 的相关文章

  • CPU和GPU的区别

    CPU的单个处理单元和GPU的单个处理单元有什么区别 我在互联网上看到的大多数地方都涵盖了两者之间的高级差异 我想知道每条指令可以执行哪些指令 它们的速度有多快 以及这些处理单元如何集成到完整的架构中 这似乎是一个答案很长的问题 所以很多链
  • 如何为Python 3子进程分配CPU亲和力?

    我在 Python 方面还是个新手 我在 Windows 7 和 Windows 10 上运行 Tkinter GUI 我有一个子进程以 1 KHz 运行数据记录器例程 我想为子进程设置 cpu 亲和力 我正在使用 Python 3 8 进
  • sched_getcpu() 相当于 OS X 吗?

    在 OS X 上 有没有办法找出线程正在哪个 CPU 上运行 Linux 的等效函数是调度获取CPU http man7 org linux man pages man3 sched getcpu 3 html 获取当前处理器编号 http
  • 用标签数据填充 x86_64 指针前十六位?

    由于当前的 x86 64 实现仅能够使用 48 位 虚拟 地址空间来降低 MMU 复杂性 因此前 16 位是否可用于实现安全标签数据 当前的实现是否限制这种使用 即使知道IP和其他段寄存器是完整的六十四位 并将指针的前十六位限制为仅包含虚拟
  • 编译器实际上会生成机器代码吗?

    我一直在读到 在大多数情况下 如 gcc 编译器以高级语言读取源代码并吐出相应的机器代码 现在 机器代码的定义是处理器可以直接理解的代码 因此 机器代码应该仅依赖于机器 处理器 且独立于操作系统 但这种情况并非如此 即使 2 个不同的操作系
  • 批处理文件获取 CPU 温度(°C)并设置为变量

    我如何获取批处理文件来计算 CPU 的温度并将其作为变量返回 我知道这是可以做到的 因为我已经看到它已经完成了 该解决方案可以使用任何外部工具 我在谷歌上搜索了至少两个小时 但一无所获 任何人都可以帮忙吗 谢谢 您可以使用wmic exe
  • 性能分析与调优: Linux 内存观测工具

    目录 一 实验 1 环境 2 vmstat 3 PSI 4 swapon 5 sar 6 slabtop 7 numstat 8 ps 9 top 10 pmap 11 perf 12 bpftrace 二 问题 1 接口读写报错 2 sl
  • Python CPU 计数在一台 Windows 服务器上工作但在另一台服务器上不起作用?

    我编写的代码可以在 Windows XP 和 Windows Server 2008 64 位上运行 但是 我刚刚启动了 Amazon Windows 64 位实例 代码失败 非常简单 看起来像这样 import multiprocessi
  • 使用javascript检测设备CPU/GPU性能?

    这个问题并不特定于 Three js 但我会用它作为例子 我最近一直在使用 Three js 开发 Web 应用程序界面 并在 WebGL 和 Canvas 渲染器 针对桌面浏览器 之间编写了一些不错的后备程序 但现在的问题变成了如何正确检
  • 您的CPU不支持VT-x

    我已经创建了 AVD 但是当我尝试运行 android 程序时 它显示 错误 您的CPU不支持VT x 我在 BIOS 中启用了虚拟化技术 但当我尝试运行 Android 程序时仍然出现此错误 有两种情况 使用VMware 进入 WM gt
  • 如何使用 bash 命令创建 CPU 峰值

    我想在 Linux 机器上创建接近 100 的负载 它是四核系统 我希望所有核心都全速运行 理想情况下 CPU 负载将持续指定的时间 然后停止 我希望 bash 有一些技巧 我在想某种无限循环 I use stress http linux
  • GCC对读/写指令的重新排序

    Linux 的同步原语 自旋锁 互斥锁 RCU 使用内存屏障指令来强制内存访问指令重新排序 这种重新排序可以由 CPU 本身完成 也可以由编译器完成 有人可以展示一些 GCC 生成的代码示例 其中完成了此类重新排序吗 我主要对 x86 感兴
  • 哪个更快:x<<1 或 x<<10?

    我不想优化任何东西 我发誓 我只是出于好奇而想问这个问题 我知道在大多数硬件上都有位移位的汇编命令 例如shl shr 这是一个单一命令 但移位多少位 从纳秒角度或从 CPU 角度角度 是否重要 换句话说 以下任一选项在任何 CPU 上都更
  • k8s hpa无法获取cpu信息[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我设置了 hpa 使用命令 sudo kubectl autoscale deployment e7 build 64 cpu perce
  • 当JVM执行Java应用程序时,操作系统的作用是什么?为什么我们需要操作系统?

    我在网上读过一些资料 有人说Java应用程序是由java虚拟机 JVM 执行的 执行 这个词让我有点困惑 据我所知 非Java应用程序 即 用C C 编写 可以由操作系统执行 在较低级别 这意味着操作系统将二进制程序加载到内存中 然后指示C
  • Xcode 9 - CPU 使用率高 - 风扇最大速度

    自从我升级到 Xcode 9 后 当我在 Xcode 上工作时 我的粉丝就变得疯狂了 当我使用 Storyboards 和 Interface Builder 时 尤其会发生这种情况 Xcode有时会占用100 的CPU 并且名为 Inte
  • C# 程序占用太多CPU?

    我有一个程序 它在启动时不断地在 3 个独立的计时器之间切换 我的应用程序的主线程有一个 while 循环 它不断检查全局变量是否已设置为 true 如果设置为 true 它将停止一个计时器并启动另外两个计时器 一个连续 另一个自动停止 如
  • 阿迪和苏比之间到底是什么“关系”?

    我应该回答这个问题 经过一番研究后发现 add 和 sub 具有相同的操作码 仅在功能领域有所不同 这是答案还是其他什么 Update Nios II CPU 手册中提供了它 subi subtract immediate Operatio
  • 哪种架构称为非均匀内存访问(NUMA)?

    根据wiki http en wikipedia org wiki Non uniform memory access 非均匀内存访问 NUMA 是一种用于多处理的计算机内存设计 其中内存访问时间取决于相对于处理器的内存位置 但尚不清楚它是
  • 测量进程消耗的 CPU 时钟

    我用 C 语言编写了一个程序 它是作为研究结果创建的程序 我想计算程序消耗的确切 CPU 周期 精确的循环次数 知道我怎样才能找到它吗 The valgrind tool cachegrind valgrind tool cachegrin

随机推荐

  • KVM虚拟机使用桥接方式时和宿主机无法通信的解决方案

    KVM虚拟机使用桥接方式时和宿主机无法通信的解决方案 应用场景 虚拟机客户机安装完成后 xff0c 需要为其设置网络接口 xff0c 以便和主机网络 xff0c 客户机之间的网络通信 事实上 xff0c 如果要在安装时使用网络通信 xff0
  • android 电池充电状态记录

    摘抄源码记录下 http androidxref com 9 0 0 r3 xref frameworks native include batteryservice BatteryServiceConstants h This file
  • python 输入三个变量,然后按小到大输出(解析)

    python 实例解析 xff08 1 xff09 vim 2 python py x 61 int input 39 please input x 39 y 61 int input 39 please input y 39 z 61 i
  • Linux系统调用Hook姿势总结

    http www cnblogs com LittleHann p 3854977 html 主题 Linux 相关学习资料 http xiaonieblog com post 61 121 http hbprotoss github io
  • 利用WireShark进行DNS协议分析

    一 准备工作 系统是Windows 8 1Pro 分析工具是WireShark1 10 8 Stable Version 使用系统Ping命令发送ICMP报文 二 开始工作 打开CMD exe键入 ping www oschina net
  • DNS协议详解及报文格式分析

    DNS协议详解及报文格式分析 Posted on 2017 06 18 by Jocent No Comments 目录 一 DNS协议理论知识 1 1 域名结构1 2 域名服务器1 3 域名解析过程 二 DNS协议报文格式 2 1 头部2
  • 解密微信数据库文件解析

    图解说明 xff1a 微信大量数据存储在本地比如 xff1a 联系人 xff08 包含好友地区 电话 通过那种方式添加 xff09 聊天内容 xff08 图片 文字 语音 视频 位置 名片 其他app分享链接 xff09 聊天室 收藏信息
  • qgroundcontrol二次开发环境搭建

    参考考qgroundcontrol官方文档 xff0c 做一些准备工作 xff1a https dev qgroundcontrol com master en getting started index html 1 按官方文档下载qgr
  • Android通过注解来初始化控件

    Android通过注解来初始化控件 对于Android大神的思想与能力我只能膜拜与学习了 xff0c 这里就从大神哪里学来的通过注解来初始化控件简单的概述一下 xff0c 省去了那么繁琐的findViewById步骤 xff08 找到了还要
  • KEIL MDK 工程中头文件包含的路径详解

    xff08 参考工程详见https download csdn net download tianzhijiaoxin 87464281 xff09 文章目录 前言一 include lt h gt 与include 34 h 34 的区别
  • 51-单片机---定时器0和定时器1---8位自动重装载(模式2)-16位定时计数(模式1)

    16位定时计数 xff08 工作方式1 xff09 初始化函数 void timer init TMOD 61 0x01 TH0 61 0x4C TL0 61 0x00 EA 61 1 ET0 61 1 TR0 61 1 初始化定时器运行
  • 算法基础21-图的最短路问题通解

    最短路问题通解 单源最短路所有边权都是正数朴素Dijkstra算法堆优化版Dijkstra算法 存在负权边bellman fordspfaspfa判断是否存在负权环路 单源最短路小结 多源汇最短路floyd 总结 想一想各种最短路算法模版和
  • Visual Studio 2008学习过程(之二)与MATLAB混合编程

    Visual Studio 2008学习过程 之二 MATLAB混合编程 上一篇我写的是我初识VisualStudio2008的过程 后来我又用它开发了几个小程序 至于怎么做的 过两天我再写 这篇文章我就写写VS和MATLAB联合开发程序的
  • HIVE迁移教程X86架构到ARM架构(CPU:鲲鹏920)

    centos8的hive迁移教程 1安装新的centos8环境 2 安装实验所需软件 2 1 安装OpenJDK yum span class token function install span java 1 8 0 openjdk 配
  • C++滑动窗口算法

    滑动窗口算法在一个特定大小的字符串或数组上进行操作 xff0c 而不在整个字符串和数组上操作 xff0c 这样就降低了问题的复杂度 xff0c 从而也达到降低了循环的嵌套深度 如下题 给你两个长度相同的字符串 xff0c s 和 t 将 s
  • C++和js交互方案对比

    c 43 43 和js交互方案对比 一 xff1a nodejs技术 nodejs技术是基于V8引擎的一套前后端交互技术 nan h为c 43 43 提供了与js交互的一系列V8 API 参考链接 缺点 xff1a 在Node js中 xf
  • C++实现HTTP服务

    一个多平台的系统基本架构 xff08 如下图 xff09 xff0c 数据库部分我们以后可以使用HDFS和MapReduce进行分布式存储 xff0c 之前大致介绍了js和c 43 43 交互的几种方式对比 xff0c 考虑到拓展性和访问效
  • gstreamer获取视频采集卡的数据

    gstreamer获取视频采集卡的视频数据 gstreamer可以用于采集硬件视频数据 xff0c 转码 xff0c 播放 xff0c 传输等 xff0c 但由于框架相对于FFmpeg较为小众 xff0c 所以资料较少 xff0c 整理一份
  • 使用c++来实现一个简单的数据库功能

    使用c 43 43 来实现一个简单的文件数据库功能 功能点1 xff1a 建表 1 创建和表同名的文件 2 在文件中存储表的信息 xff0c 包括attribute的name xff0c 数量 xff0c 类型 xff0c 是否唯一 3 添
  • 【性能优化】cpu时间抖动问题的解决修复

    问题描述 xff1a 边缘设备的cpu在低占有率时 xff0c 进程运行时间抖动较大 xff0c 在高占有率时 xff0c 运行时间抖动更稳定 低占有率运行情况图 xff1a 相同处理逻辑循环中 xff0c 两次处理的时间间隔 xff1a