Linux启动时间的极限优化(Z)

机器人关节运动极限问题:从理论分析到代码实践的排查与优化 关节运动极限是机器人运动控制中的基础概念,它定义了关节在物理结构或软件控制下允许转动的角度范围。其原理涉及机械设计、运动学模型与实时控制的耦合,直接决定了机器人的工作空间与运动性能。在工程实践中,合理处理关节极限对于保障机器人本体安全、避免奇异点及实现稳定轨迹至关重要。常见的应用场景包括多轴协作机器人的复合轨迹规划、高速高精度作业以及在线路径重规划。本文聚焦于机器人研发中频繁触发的软件限位报警,特别是腰部关节(J1轴)在轨迹执行中的极限问题,通过运动学分析、轨迹预处理与动态监控等策略,提供了一套可复用的工程 阅读详情
作者: Maco   
该文章转载自网络大本营:http://xrss.cn/Info/13420.Html

在上次完成嵌入式应用的Linux裁减后,Linux的启动时间仍需要 7s 左右,虽然勉强可以接受,但仍然没有达到我个人所追求的目标——2s 以内。况且,在实际的商用环境中,设备可靠性的要求可是“5个9”(99.999%,即OOS时间低于5分钟/年),这就意味着每减少一秒钟Linux启动(设备复位)时间,对可靠性都是一个明显的提升。
  言归正传,如何着手对Linux的启动时间进行优化呢?
  CELF(The Consumer Electronics Linux Forum)论坛为我们指引了一个方向。

(1)首先是对Linux启动过程的跟踪和分析,生成详细的启动时间报告。

  较为简单可行的方式是通过PrintkTime功能为启动过程的所有内核信息增加时间戳,便于汇总分析。PrintkTime最早为CELF所提供的一个内核补丁,在后来的Kernel 2.6.11版本中正式纳入标准内核。所以大家可能在新版本的内核中直接启用该功能。如果你的Linux内核因为某些原因不能更新为2.6.11之后的版本,那么可以参考CELF提供的方法修改或直接下载它们提供的补丁: http://tree.celinuxforum.org/CelfPubWiki/PrintkTimes

  开启PrintkTime功能的方法很简单,只需在内核启动参数中增加“time”即可。当然,你也可以选择在编译内核时直接指定“Kernel hacking”中的“Show timing information on printks”来强制每次启动均为内核信息增加时间戳。这一种方式还有另一个好处:你可以得到内核在解析启动参数前所有信息的时间。因此,我选择后一种方式。

  当完成上述配置后,重新启动Linux,然后通过以下命令将内核启动信息输出到文件:

dmesg -s 131072 > ktime

  然后利用一个脚本“show_delta”(位于Linux源码的scripts文件夹下)将上述输出的文件转换为时间增量显示格式:

/usr/src/linux-x.xx.xx/scripts/show_delta ktime > dtime

  这样,你就得到了一份关于Linux启动时间消耗的详细报告。

(2)然后,我们就来通过这份报告,找出启动中相对耗时的过程。

  必须明确一点:报告中的时间增量和内核信息之间没有必然的对应关系,真正的时间消耗必须从内核源码入手分析。

  这一点对于稍微熟悉编程的朋友来说都不难理解,因为时间增量只是两次调用printk之间的时间差值。通常来说,内核启动过程中在完成一些耗时的任务,如创建hash索引、probe硬件设备等操作后会通过printk将结果打印出来,这种情况下,时间增量往往反映的是信息对应过程的耗时;但有些时候,内核是在调用printk输出信息后才开始相应的过程,那么报告中内核信息相应过程的时间消耗对应的是其下一行的时间增量;还有一些时候,时间消耗在了两次内核信息输出之间的某个不确定的时段,这样时间增量可能就完全无法通过内核信息反应出来了。

  所以,为了准确判断真正的时间消耗,我们需要结合内核源码进行分析。必要的时候,例如上述第三种情形下,还得自己在源码中插入printk打印,以进一步确定实际的时间消耗过程。

  以下是我上次裁减后Linux内核的启动分析:

  内核启动总时间: 6.188s

  关键的耗时部分:
  1) 0.652s - Timer,IRQ,Cache,Mem Pages等核心部分的初始化
  2) 0.611s - 内核与RTC时钟同步
  3) 0.328s - 计算Calibrating Delay(4个CPU核心的总消耗)
  4) 0.144s - 校准APIC时钟
  5) 0.312s - 校准Migration Cost
  6) 3.520s - Intel E1000网卡初始化

  下面,将针对上述各部分进行逐一分析和化解。

(3)接下来,进行具体的分项优化。

  CELF已经提出了一整套针对消费类电子产品所使用的嵌入式Linux的启动优化方案,但是由于面向不同应用,所以我们只能部分借鉴他们的经验,针对自己面对的问题作出具体的分析和尝试。

  内核关键部分(Timer、IRQ、Cache、Mem Pages……)的初始化目前暂时没有比较可靠和可行的优化方案,所以暂不考虑。

  对于上面分析结果中的 2、3 两项,CELF已有专项的优化方案:“RTCNoSync”和“PresetLPJ”。

  前者通过屏蔽启动过程中所进行的RTC时钟同步或者将这一过程放到启动后进行(视具体应用对时钟精度的需求而定),实现起来比较容易,但需要为内核打补丁。似乎CELF目前的工作仅仅是去掉了该过程,而没有实现所提到的“延后”处理RTC时钟的同步。考虑到这个原因,我的方案中暂时没有引入这一优化(毕竟它所带来的时间漂移已经达到了“秒”级),继续关注中。

  后者是通过在启动参数中强制指定LPJ值而跳过实际的计算过程,这是基于LPJ值在硬件条件不变的情况下不会变化的考虑。所以在正常启动后记录下内核信息中的“Calibrating Delay”数值后就可以在启动参数中以下面的形式强制指定LPJ值了:

lpj=9600700

  上面分析结果中的 4、5 两项都是SMP初始化的一部分,因此不在CELF研究的范畴(或许将来会有采用多核的MP4出现?……),只能自力更生了。研究了一下SMP的初始化代码,发现“Migration Cost”其实也可以像“Calibrating Delay”采用预置的方式跳过校准时间。方法类似,最后在内核启动参数中增加:

migration_cost=4000,4000

  而Intel的网卡驱动初始化优化起来就比较麻烦了,虽然也是开源,但读硬件驱动完全不比读一般的C代码,况且建立在如此肤浅理解基础上的“优化”修改也实在难保万全。基于可靠性的考虑,我最终在两次尝试均告失败后放弃了这一条路。那么,换一个思维角度,可以借鉴CELF在“ParallelRCScripts”方案中的“并行初始化”思想,将网卡驱动独立编译为模块,放在初始化脚本中与其它模块和应用同步加载,从而消除Probe阻塞对启动时间的影响。考虑到应用初始化也可能使用到网络,而在我们的实际硬件环境中,只有eth0是供应用使用的,因此需要将第一个网口初始化的0.3s时间计算在内。

  除了在我的方案中所遇到的上述各优化点,CELF还提出了一些你可能会感兴趣的有特定针对性的专项优化,如:

  ShortIDEDelays - 缩短IDE探测时长(我的应用场景中不包含硬盘,所以用不上)
  KernelXIP - 直接在ROM或Flash中运行内核(考虑到兼容性因素,未采用)
  IDENoProbe - 跳过未连接设备的IDE口
  OptimizeRCScripts - 优化initrd中的linuxrc脚本(我采用了BusyBox更简洁的linuxrc)

  以及其它一些尚处于设想阶段的优化方案,感兴趣的朋友可以访问CELF Developer Wiki了解详情。

(4)优化结果

  经过上述专项优化,以及对inittab、rcS脚本的冗余裁减,整个Linux内核的启动时间从优化前的 6.188s 下降到了最终的 2.016s,如果不包含eth0的初始化,则仅需 1.708s(eth0初始化可以和系统中间件及部分应用加载并行),基本达到了既定目标。与Kexec配合,可以大大降低软件故障导致的复位时间,有效的提升了产品的可靠性。

  大家如果对内核启动时间的优化还有什么建议或疑惑,都欢迎与我探讨。:)
ComfyUI中Z-Image-Turbo+ControlNet+Krea2高清修复方案详解 图像超分辨率技术通过深度学习模型实现低分辨率图像的高清重建,其核心原理是利用卷积神经网络学习图像细节特征。在工程实践中,ControlNet提供了精确的结构控制能力,确保修复过程中的几何一致性。Z-Image-Turbo作为专精超分辨率的模型,在细节增强和纹理恢复方面表现突出,结合Krea2的风格优化能力,形成了完整的高质量图像修复管线。该技术方案特别适用于老照片数字化修复、低分辨率图像增强等场景,通过ComfyUI可视化工作流可实现灵活的本地部署与批量处理,为图像处理领域提供了可靠的工程化解决方案。 阅读详情

相关推荐

从瘦客户机到家庭服务器:Wyse 3040的极限改造与生态位革命

本文详细介绍了如何将戴尔Wyse 3040瘦客户机改造为高性能低功耗的家庭服务器。通过硬件解析、系统优化和功能部署实践,展示了这款x86设备在家庭自动化、媒体服务和网络应用中的潜力,其极低的功耗和成本为技术爱好者提供了理想的DIY解决方案。

peace的博客 829

Linux启动时间的极限优化

       在上次完成嵌入式应用的Linux裁减后,Linux的启动时间仍需要 7s 左右,虽然勉强可以接受,但仍然没有达到我个人所追求的目标——2s 以内。况且,在实际的商用环境中,设备可靠性的要求可是“5个9”(99.999%,即OOS时间低于5分钟/年),这就意味着每减少一秒钟Linux启动(设备复位)时间,对可靠性都是一个明显的提升。  言归正传,如何着手对Linux的启动时间进

流氓兔子的嵌入式生活 5127

Z-Image-Turbo本地部署指南:8GB显存稳定跑ComfyUI生图

Stable Diffusion轻量模型是AI图像生成降本增效的关键路径,其核心原理在于结构精简、内存复用与混合精度推理。技术价值体现在显著降低GPU显存占用与硬件门槛,同时保障生产级稳定性与批量出图能力。典型应用场景包括自由插画师的日常创作、高校实验室共享工作站部署,以及中小AI内容工作室的草稿量产。Z-Image-Turbo正是这一技术范式的代表作,专为RTX 4060等8GB显存设备深度优化,并原生适配ComfyUI异步DAG调度架构,实现高吞吐、低崩溃率的本地化AI生图闭环。

weixin_34112181的博客 472

优化嵌入式Linux的启动时间的秘密

01 工具链/应用程序优化 导读:嵌入式Linux在应用中往往希望系统能在尽量短的时间内启动,以提高用户体验。而且在有的应用场合,对启动时间具有严格的时间要求,尤其在工业或者医疗器械应用领域。此时如何加快Linux的启动,将成为一个挑战,对于大多数应用开发人员而言,由于Linux系统的复杂性,对于如何提高启动速度,往往无从下手。那么阅读完本文,将获得清晰完整的解决思路。 注:本文转载自微信公众号:嵌入式ARM。 1.降低启动时间的一般思路 在准备降低系统的启动时间时,思路上应建立以下的切入点:

枫潇潇 3506

聊聊Linux性能优化那些事一 (平均负载、CPU上下文切换)

性能指标: 高并发和响应快 对应着性能优化的两个核心指标 吞吐 和 延迟。这两个指标是从应用负载的视角来考察性能,直接影响产品终端用户体验。跟他们对应的是从系统资源的视角触发的指标,比如资源使用率、饱和度等 随着应用负载的增加,系统资源使用也会升高,甚至达到极限。而性能问题的本质,就是系统资源已经达到瓶颈,但请求的处理却还不够快,无法支撑更多的请求。 性能分析:找出应用或者系统的瓶颈...

通往架构师的成长学习之路 1046

立创RK3588掌上主机:80x100mm超紧凑底板设计与Ubuntu22.04秒级启动实战

本文详细介绍了基于RK3588核心板设计80x100mm超紧凑掌上主机的全过程,涵盖电源电路、接口集成等硬件设计要点,并重点分享了通过裁剪设备树实现Ubuntu22.04秒级启动的软件调优实战经验,为嵌入式开发和迷你主机爱好者提供了宝贵参考。

weixin_42153793的博客 256

linux内核操作

基于GEC6818开发板linux内核学习

Jaylen.sun的嵌入式之旅 776

机械臂视觉抓取避坑指南:如何正确计算手眼标定矩阵(附Numpy代码)

本文详细解析了机械臂视觉抓取中手眼标定矩阵的计算方法,特别针对'眼在手上'配置下的常见错误提供了解决方案。通过Numpy代码示例和坐标转换原理,帮助开发者避免矩阵计算错误和坐标转换偏差,提升工业自动化系统的精度和效率。

weixin_29081703的博客 243

Linux——操作系统启动总览

针对linux启动的bootloader和内核进行分析

知识,既贵,又便宜。 3607

TortoiseGit提示No supported authentication methods available错误

一、问题 在使用TortoiseGit与远程仓库进行同步代码的时候提示如下错误,即:没有支持认证的方法可用。而GitBash却可以正常使用,不受影响。 通过调查,发现应该是TortoiseGit远程仓库的公匙无法和本地的密匙进行匹配认证造成的(主要是TortoiseGit缺少本地密匙)。由于TortoiseGit的默认网络SSH client是TortoiseGitPlink.exe,如下图所示。因此主要有两种方式来解决该问题: 不修改TortoiseGit的默认网络SSH client,此时需要为To

Jeffxu_lib的博客 2万+

帆软FineBI考试题

Flint 补录表,有批次删除功能。在分析主题内添加数据时能够选择批量添加数据。插件安装过程中有报错提示需要下载 Fine I for Excel 运行环境进行修复,修复完毕后重新安装插件。图例显示支持自定义设置,且图例标题支持隐藏显示。finebi中的指标如果想进行维度区间/真的自定义分组,不能直接拖拽到组建区域中需要先转化为维度方可进行指标分组。excel报表不支持分页。

Davina_yu的博客 1608

机器人腰部关节运动极限:从URDF配置到MoveIt!规划与ABB优化实践

在机器人运动控制领域,关节运动极限是保障机器人安全、稳定运行的核心约束条件,它定义了关节在角度、速度、加速度和力矩上的物理与软件边界。其原理在于通过运动学与动力学模型,将机械结构的物理限制转化为控制算法中的可行域约束,从而防止机械损伤、优化轨迹规划并提升系统可靠性。这一技术的核心价值在于,它不仅是避免超程、过载等硬件保护的基础,更是实现高效、平滑运动规划的前提,直接影响机器人的作业精度与动态性能。在应用场景上,关节极限处理广泛适用于工业机械臂的轨迹规划、协作机器人的安全交互、以及人形机器人的复杂动作生成,尤

weixin_33800463的博客 382

WVP+ZLM国标平台实战:从设备注册失败到视频播放黑屏,我遇到的5个典型问题与解法

部署WVP+ZLM国标视频平台时,设备注册失败、视频播放黑屏等问题常常让运维人员头疼不已。本文将基于真实运维场景,剖析五个最具代表性的故障案例,提供从网络配置到版本兼容性的全链路解决方案。

weixin_33178839的博客 362

Android系统内存优化

1. 基础知识 内存管理是Linux/Android OS的灵魂,关于内存的知识太多,此章节只为了后续的内存评估和优化对常用知识进行梳理,不对具体概念进行讲解,有必要的话需要先查阅相关知识点。 1.1 Linux内存地址空间 内存管理最基础的两个概念就是物理地址和虚拟地址,下图是最通用的描述虚拟地址通过MMU转换成物理地址的过程图。 接下来是32bit OS常用的虚拟地址分布图,03GB地址空间...

flaoter的博客 4251

X书关键词协议搜索

【代码】X书关键词协议搜索。

Codeooo 博客 6378

RAGFlow升级指南(纯小白都看得懂)

升级背景:RAGFlow项目原来的版本是0.17.0版本,在使用过程中,发现当知识库检索为空的时候并且使用到rerank模型的时候,就会输出错误的信息;为了解决这个版本问题,特意升级到最新的版本0.17.2(截止2025-3-14时最新版本就是0.17.2了)官方升级文档https://ragflow.io/docs/dev/upgrade_ragflow官方文档对小白还是不太友好,作者也是捣鼓了十多分钟,特出下面的升级指南前提:旧版本的RAGFlow项目是启动好了的1.在ragflow目录下执行(拉取最新

Ven%的博客 3596

Z-Image-Turbo本地部署指南:Windows与Linux双平台支持

阿里推出的Z-Image-Turbo模型仅需8步即可生成高质量图像,支持中英文输入,在消费级显卡上实现亚秒级响应。通过ComfyUI可视化工作流,用户可在Windows和Linux平台轻松完成本地部署,适用于电商、设计等高频生成场景,兼顾速度、质量与数据安全。

weixin_42174098的博客 479

【FF-A】第二章 Introduction

Armv8.4 架构引入了在安全状态下的虚拟化扩展。Arm® SMMU v3.2 架构[1]为安全流添加了对第2阶段翻译的支持,以补充在 Armv8.4 处理器状态下的安全 EL2 翻译制度。这些架构特性使得在安全状态下,彼此不信任的软件组件能够相互隔离。关于在安全状态下引入虚拟化扩展以及固件框架目标的更多理念可在名为《在安全世界使用虚拟化进行隔离》的白皮书[3]中找到。软件组件只能访问物理地址空间和系统资源的区域,例如 GIC 中对其正确运行必要的中断。

baron-周贺贺-代码改变世界ctw 528

造相Z-Image文生图模型v2服务器管理:Linux常用命令大全

本文介绍了如何在星图GPU平台上自动化部署造相 Z-Image 文生图模型(内置模型版)v2镜像,快速构建稳定高效的AI图像生成服务。用户可基于该镜像实现文本到图像的一键生成,广泛应用于创意设计、营销配图及个性化内容生产等典型场景,显著降低部署与运维门槛。

weixin_33173126的博客 164

AutoGLM-Phone 实现“豆包 AI 手机”的自动化操作手机的实战方案教程 让普通手机秒变ai手机

是一个基于视觉语言模型(VLM)的 AI 手机智能助理框架。❌ 不依赖固定坐标❌ 不需要提前录制脚本✅ 能“看懂”手机屏幕✅ 能理解自然语言指令✅ 能自动规划操作路径并执行让 AI 像人一样看屏幕、想步骤、点手机。从工程角度看,AutoGLM-Phone 已经具备“AI 手机助理”的完整雏形能看能理解能规划能执行能跨 App所谓的「豆包 AI 手机」,本质上就是这类能力的产品化封装。而现在,这套能力已经可以被普通开发者亲手跑起来、改起来、甚至接入自己的业务场景。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 597

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Z-Image:面向消费级硬件的端到端本地图像生成调度框架

图像生成模型正从‘能出图’迈向‘可商用’新阶段,其核心瓶颈已从算法精度转向推理效率与硬件适配性。端到端图像生成调度框架通过模型量化、跨设备张量编排与结构化语义解析,在不依赖高端显卡的前提下实现亚秒级构图控制与细节增强。Z-Image作为典型代表,融合INT8感知量化、显存-内存混合调度与Z-PoseGrid构图控制等关键技术,显著降低本地部署门槛,使RTX 3060或M1 Pro等主流设备具备稳定运行SDXL级别模型的能力。该范式广泛适用于电商A/B测试、独立创作与AI教学等对响应速度、风格一致性及中文提示

culiao2169的博客 928

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

巴掌大电脑的极限操作:在GPD MicroPC的128GB硬盘上玩转Win10+Ubuntu双系统

本文详细介绍了如何在GPD MicroPC的128GB硬盘上高效部署Win10和Ubuntu双系统。通过科学的存储空间规划、定制化Ubuntu镜像选择及安装优化,解决了微型设备上的性能与存储挑战,实现Windows生产力工具与Linux开发环境的无缝切换,特别适合移动办公和户外开发场景。

weixin_29202687的博客 254

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Z-Image-Turbo加速秘籍:推理速度提升3倍技巧

本文介绍了如何在星图GPU平台上自动化部署Z-Image-Turbo:阿里通义实验室开源的高效文生图模型,显著提升AI图片生成效率。通过平台一键部署,用户可快速启用该模型,实现8步高清图像生成,广泛应用于创意设计、营销配图及AIGC内容生产等典型场景。

weixin_29009401的博客 96

iPhone宽度预测的三大物理断崖:从硅基极限到人机交互边界

智能手机尺寸演进并非简单线性增长,而是受制于半导体物理极限、人体工学约束与AI建模局限的多维系统问题。摩尔定律在2050年前后将触达硅基晶体管的量子隧穿临界点;成年人手掌平均宽度约85mm,决定了设备横向尺寸的生理天花板;而所谓‘AI预测’若仅依赖历史参数拟合,极易陷入数据幻觉——它拟合的常是营销周期与供应链妥协,而非真实物理规律。这些底层约束共同指向一个技术共识:未来竞争不再围绕‘iPhone宽度’展开,而是转向折叠屏可靠性、可穿戴设备的去形态化,以及环境智能的无感交互。理解这三重断崖,是识别科技标题党、

weixin_30267785的博客 512

AS3.0显示列表与Starling GPU渲染性能极限对比测试

在图形渲染领域,CPU软件渲染与GPU硬件加速是两种核心的底层技术路线。CPU渲染通过软件逐像素计算,适合处理复杂逻辑和矢量图形,但面对大量图形对象时容易成为性能瓶颈。GPU渲染则利用图形处理器的并行架构,将绘制指令批量提交,显著提升图形密集型任务的吞吐效率。这一技术价值在需要高帧率、高同屏对象数的应用场景中尤为突出,例如2D游戏、数据可视化和大规模粒子特效。本文通过对比Flash技术栈中经典的AS3.0显示列表(CPU驱动)与Starling框架(基于Stage3D的GPU加速)在同屏动画数量上的承载极限

weixin_34364071的博客 432
上一篇: 网桥(bridge) 和 交换机(switch) 之异同
下一篇: 嵌入式Linux内核移植相关代码分析(转)
gioc
博客等级 码龄25年 141粉丝 241原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值