Linux中IO阻塞对程序的影响以及优化方法

embedded/2024/10/18 20:21:09/

        在linux中经常会对程序进行测试,开发完的程序推送到板子上就可以运行测试,一般情况下都能正常运行,但是遇到异常情况就需要对程序的cpu占用率进行分析,其中一种隐蔽的异常情况是io阻塞问题。

        Io阻塞就是一段时间内,通常是几秒钟时间内有频繁的读写文件操作,或者有频繁的网络数据传输,导致正在运行的程序数据出现阻塞或中断,进而影响程序的正常逻辑运行导致出错的现象。如何判断io阻塞,判断io阻塞的方法可以用命令top查看io项百分比,或者idle项百分比是否降低以及当前cpu各项占用率,也可以将占用率依次写入日志以便按对应时间查找。正常情况下io占用率是0,如果出现io阻塞其占用率会升高到百分之几。一般小比率的阻塞不会对程序产生影响,只有频繁的大规模的日志或图像保存操作才可能影响程序运行。

        Io阻塞对程序的影响通常表现在传感器数据突然中断,对slam系统来说其轮式里程计的数据会突然为0,阻塞结束后会收到里程计突变数据,之后导致预测位姿错误,导致定位错误,甚至定位丢失。

        针对io阻塞的改进方法有,减少程序中频繁的读写io操作,以及保存图像和日志操作,或者切换效率高的日志库例如spdlog, 或者对需要保存的文件以及日志执行压缩操作压缩后再保存。同时程序中也要有关于阻塞的判断,防止跳变数据产生或者对跳变数据进行修复等,从一定程度上减小阻塞的影响,提高程序运行的稳定性。


http://www.ppmy.cn/embedded/38146.html

相关文章

QGraphicsView实现简易地图11『指定层级-定位坐标』

前文链接:QGraphicsView实现简易地图10『自适应窗口大小』 提供一个地图初始化函数,指定地图显示的中心点和地图缩放层级 能够让地图显示某一层级的瓦片,并将中心点坐标显示在视图中心。 1、动态演示效果 7级地图-大连-老虎滩 定位到 8级地图…

如果出现一个工具,可以让前端开发彻底不用再手写UI,这个工具意义大吗?干货!

求这样的一个工具,可以让后端开发、嵌入式开发、产品经理、UI设计师都能用,注意,不是在一个简单的静态页生成,也不是类似飞冰那种 generator ,而是真正让设计师和开发者在各自的那侧达成自治,可以做到吗&am…

MySQL 迁移到 Oracle 需要注意的问题

MySQL /Oracle 常见问题 1. VARCHAR/VARCHAR2/NVARCHAR 差异: MySQL 的 VARCHAR 是以字符为单位计算的,Oracle 的 VARCHAR 是 以字节为单位计算的,所以对中文的存储 Oracle 是 MySQL 的 2 倍 (GBK)和 3 倍(UTF8) 2. NULL 差异 A. MySQL…

Linux cmake 初窥【3】

1.开发背景 基于上一篇的基础上,已经实现了多个源文件路径调用,但是没有库的实现 2.开发需求 基于 cmake 的动态库和静态库的调用 3.开发环境 ubuntu 20.04 cmake-3.23.1 4.实现步骤 4.1 准备源码文件 基于上个试验的基础上,增加了动态库…

FreeRTOS学习笔记-基于stm32(6)时间片调度实验

1、什么是时间片调度 在任务优先级相同的时候,CPU会轮流使用相同的时间去执行它,即时间片调度。这个相同的时间就是时间片。而时间片的大小就是SysTick的中断周期(SysTick的中断周期可以修改)。 比如有三个相同优先级的任务在运行…

【C++】命名空间和IO流

一切都从这个代码开始&#xff01;&#xff01;&#xff01; #include<iostream>using namespace std;int main() {cout << "Hello world!" << endl;return 0; } 命名空间 当我们写了这么一段代码的时候... Ctrl F5运行&#xff0c;发现报错了..…

外企接受大龄程序员吗?

本人知乎账号同公众号&#xff1a;老胡聊Java&#xff0c;欢迎留言并咨询 亲身体会外企经历所见所闻&#xff0c;外企能接受大龄程序员。 1 大概是10年的时候&#xff0c;进一家知名外企&#xff0c;和我一起进的一位manager&#xff0c;后来听下来&#xff0c;年龄35&#xf…

使用 XTuner 完成llama3小助手认知微调

1.首先请报名课程&#xff1a; 2.环境配置 conda create -n llama3 python3.10 conda activate llama3 conda install pytorch2.1.2 torchvision0.16.2 torchaudio2.1.2 pytorch-cuda12.1 -c pytorch -c nvidia 2.1 下载模型 新建文件夹 mkdir -p ~/model cd ~/model 从Op…