LWN:采用latency nice改善响应时间!

西门子1200与FANUC机器人Profinet通讯 近期在做发那科FANUC的通讯,会吧CC-LINK、Profibus-DP、Profinet I/O、DeviceNet、EtherNet/IP这些常用通讯做成文档发上来,大家喜欢的话可以关注 注:做对应的通讯,在机器人控制柜都需要安装对应的板卡以及软件功能 PLC项目已经归档,只需要恢复就可以看到。对应Profinet通讯的GSD文件也都在博文最后有连接 机器人柜子:R-30IB Mate 机器人主体:M-10IA 12 一、硬件介绍 机器人Profinet I/O通讯板卡:... 阅读详情

关注了就能看到更多这么棒的文章哦~

Improved response times with latency nice

By Jonathan Corbet
March 17, 2022
DeepL assisted translation
https://lwn.net/Articles/887842/

CPU 调度是一项非常具有挑战性的任务,scheduler (调度器)必须确保每个进程都能公平地获取到 CPU 时间,同时也要尊重 CPU affinity 的配置从而避免进程被迫放弃 cache 中已有的可以快速访问的内容,并使系统中的所有 CPU 都保持繁忙。即使如此,如果特定的进程不能迅速得到它们的 CPU 份额,用户也会变得很不满意。例如,多年来关于桌面环境的相应速度(desktop responsiveness)的争论就是由此产生的。最近由 Vincent Guittot 提出的 "latency-nice priority proposal" 的提议就是希望能提供一个新的工具来帮助那些对延迟很敏感的应用程序能更快地获得 CPU 来使用。

多年来,有许多方法被用来改善重要进程的响应时间。例如,传统的 Unix "nice"值就可以用来提高一个进程的优先级。这确实有起作用,但一个进程的 nice 值并不能直接对应到 latency 上,是用来控制该进程可以消耗多少 CPU 时间的,但不能控制该进程什么时候可以开始运行。使用 realtime 优先级就可以让调度器来快速运行某个进程,特别是在启用了 realtime preemption (实时抢占)的情况下,但是其他用 realtime 优先级运行的进程也可以接管系统。

latency-nice 概念是一种试图解决这些问题的新方法,它适用于大多数进程在使用的 completely fair 调度器,所以不需要设置 realtime 优先级了。它新增了一个 nice 值,跟当前现存的 nice 值类似,是一个在-20 和 19 之间的数字。数字越小,优先级就越高,所以最高优先级的 latency-nice 值是 -20。与传统的 nice 值相同,任何进程都可以增加它的 latency-nice 配置,但要想降低的话就需要 CAP_SYS_NICE 这个 capability 了。

传统的 nice 值是通过调节一个进程相对于系统中其他进程可以消耗多少 CPU 时间来实现的,nice 值较低的进程可以获得更多的 CPU 时间。相反,改变 latency-nice 值并不改变一个进程可能消耗的 CPU 时间数量。然而,它确实会对该时间的可用时间产生影响。具有较低 latency-nice 值的进程被认为是对延迟更敏感的,因此不应该在获取到 CPU 之前等待太久。

采用这个模型之后,latency nice 的实现就相对简单了。每当有一个被阻塞的进程被唤醒时,调度器必须决定是立即运行它,还是把它放到运行队列中,让它等待 CPU。现在有很多因素会影响到这个决定,而 latency-nice 机制又增加了一个新的因素。如果新的进程比正在 CPU 中运行的进程有更高的 latency-nice 优先级,并且新的进程在其当前时间片中还有可用的 CPU 时间,那么新的进程就可以抢占当前正在运行的进程。新进程不会比以前能得到更多的 CPU 时间,但它有权在当前时间片未用完时可以更快地占有 CPU。

同样,一个具有较高 latency-nice 值的进程(因此,优先级较低)将不会抢占其他正在运行的进程。因此,要等到优先级较高的进程用完了它们的当前时间片之后,这个进程才能开始使用分配给它的 CPU 时间。这个进程也将得到它有权得到的所有时间,但它不会阻塞其他进程,而且由于它也不会抢占其他进程,因此一般来说会减少上下文切换。

传统的 nice 值是通过 nice() 系统调用设置的。latency-nice 值则是由 sched_setattr() 控制的。一个新的字段(latency_nice)已经被添加到传递给该系统调用的 sched_attr 结构中,并且 SCHED_FLAG_LATENCY_NICE flag 是用来指示需要使用一个新的 latency-nice 值了。也可以使用 scheduler cgroup 来管理 latency-nice 值,为此专门提供了一个新的 sysfs 节点(名为 latency)。

该系列的一个 patch 中包括了一些基准测试结果,显示了 latency-nice 的工作原理。在运行 hackbench 基准测试时,由于发生的抢占次数较少,所以在高 latency-nice 值的情况下产生了更好的性能。在 latency-nice 值较低的情况下运行 cyclictest,显示出测试中测得的 latency 值就大大降低了。总的来说,这套 patch 的效果正如预期一样。

此前,这项工作是由 Parth Shah 开发的;该 patch set 的第五次修订是在 2020 年 2 月发布的。到那时,这项工作已经获得了一些 Reviewed-by tag,但此后就停滞了。有趣的是,它已经具备了用来管理 latency-nice 值的那些基础设施,但实际上并没有在 scheduler 中实现任何新的行为。当时,有一些关于系统应该如何响应 latency-nice 值的讨论,并且在 OSPM 2020 会议上进行了关于 latency-nice 值的讨论,但似乎没有达成共识什么样的行为才是正确的。

两年后,Guittot 将这一工作拣起来,并增加了上述的唤醒方面的实现。截至本文写作时,对这项工作的 review 很少。不过,改善重要进程的响应时间一直以来都是许多开发者非常希望具备的功能之一。如果进一步的测试表明 latency-nice 机制代表了正确方向,那么这次的推动很可能将会让这项工作能成功进入 mainline kernel。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

e73a70414a5f7be4ad89498204c8b2e3.png

IMSL CNL 7.0.0 (x86-64)Crack IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件 立即下载

相关推荐

Ansys Electronics Desktop仿真——HFSS线圈寄生电阻,电感

Ansys Electronics Desktop仿真——HFSS线圈寄生电阻,电感

冲击10w 1万+

LWN:Latency nice的方方面面!

关注了就能看到更多这么棒的文章哦~The many faces of Latency nice作者:Jonathan Corbet2020年5月18日,OSPM会议原文来自:https:...

Linux News搬运工 878

新出的智谱GLM-4.7很牛逼?

Zhipu AI(智谱)最近发布的 GLM-4.7 再次刷新了开源大模型的天花板。作为一款约 400B 参数规模的 MoE 模型,它不仅在传统的代码与推理任务上超越了 DeepSeek-V3.2 和 Kimi-K2 等强力对手,更通过**“保留思考(Preserved Thinking)”和“交错思考(Interleaved Thinking)”**等架构级创新,重新定义了 Agentic Workflow 的设计范式。

kakaZhui的博客 2393

latency-nice优先级补丁源码分析

1. 概述 2022年3月11日,Vincent Guittot写道:基于2020年Parth提供的[1-4]系列latency nice相关的patches,他重启了相关工作,提供了新的一组有关latency nice priority的patches。解决了CFS调度器中一个进程是否可以抢占当前正在运行的进程的问题。 2. 设计思想 latency-nice优先级其实和nice值类似,但latency-nice用于表示进程对latency延迟的容忍情况。比如,latency-nice值范围[-20,19

大吉 1446

微信开放标签wx-open-launch-app样式失效?手把手教你正确设置点击区域(附完整代码)

本文详细解析了微信开放标签`wx-open-launch-app`样式失效和点击无响应的常见问题,提供了完整的解决方案和代码示例。通过分析标签内部实现机制,指导开发者正确设置点击区域和样式,确保跨平台兼容性和用户体验优化。

joy55的博客 320

基于PINN的一个简单的求解偏微分方程实例

本人是做化工模拟的一名学生,最近在学习PINN(Physics-Informed Neural Networks,物理信息神经网络)对管道动力学进行建模研究,PINN由于其对机理与数据的良好兼顾性非常热门,本文是作者对PINN入门研究过程的一个练手小题目,main code也是作者代码是基于pytorch2.6.0写的,发上来供各位参考,欢迎研究管道动力学和PINN的小伙伴一起讨论~

weixin_64491760的博客 1739

如何理解Latency和Throughput: 吞吐量和延迟

Latency,中文译作延迟。Throughput,中文译作吞吐量。它们是衡量软件系统的最常见的两个指标。 延迟一般包括单向延迟(One-way Latency)和往返延迟(Round Trip Latency),实际测量时一般取往返延迟。它的单位一般是ms、s、min、h等。 而吞吐量一般指相当一段时间内测量出来的系统单位时间处理的任务数或事务数(TPS)。注意“相当一段时...

weixin_30552811的博客 2105

模型预测控制(MPC)解析(三):多输入多输出系统

本文为阅读笔记,仅供学习交流使用!!! 在之前的文章中,为了简单起见,以单输入单输出系统为例介绍了MPC控制的实现方法。因为使用的是状态空间方程作为系统模型,这种方法可以轻松的扩展到多输入多输出系统中。 ...

行者无疆的博客 1万+

吞吐量(Throughput)、QPS、并发数、响应时间(RT)对系统性能的影响

首先对吞吐量()、QPS、并发数、响应时间(RT)几个概念一直比较模糊,也不知道哪些指标可以较好的衡量系统的性能。今天特意查了些资料做一些记录:首先看一些概念(来自百度百科) 1. 响应时间(RT)   响应时间是指系统对请求作出响应的时间。直观上看,这个指标与人对软件性能的主观感受是非常一致的,因为它完整地记录了整个计算机系统处理请求的时间。由于一个系统通常会提供许多功能,而不同功能的处理逻...

unique5945的专栏 8010

成功解决 OllamaError: status code 400, message: model ‘llama3.2:latest‘ not found 报错

本文针对Ollama更新后出现的OllamaError: status code 400, message: model 'llama3.2:latest' not found报错,分析了其根本原因——2026年1月Ollama将Llama 3.2模型命名从llama3.2:latest改为meta-llama/Llama-3.2:7b-instruct等新格式。解决方案包括:1)使用新模型名称;2)升级Ollama SDK;3)查询确认本地可用模型;4)批量更新旧项目脚本。通过正确适配新命名规则,

博客 1398

【unity游戏开发入门到精通——UGUI】UI控件 —— Image图像控件

【unity游戏开发入门到精通——UGUI】UI控件 —— Image图像控件

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2355

Jmeter获取当前Sample的响应时间,Loadtime 和Latency的区别

概要:Jmeter的响应时间可以通过结果数和聚合报告查看,但是如果想知道某个sample的请求的响应时间和响应的具体数据并打印出来如何实现呢?测试过程中会有这样的需求,大量并发的时候需要打印响应内容比如sendID ,响应时间,这样就可以很直观的看到某个订单的响应时间是多少,方便排查性能问题。 在某个接口下新增一个后置处理器。 jmeter默认会初始化SampleResult类,jmeter里面的类大部分都是从Object 扩展而来。 在beanShell脚本编辑器中,直接通过prev.get...

baidu_41614347的博客 5959

28、时间敏感网络中可靠性感知的综合路由与调度

本文针对时间敏感网络(TSN)中现有路由与调度机制主要关注时间触发(TT)流量而忽略其他类型流量效用的问题,提出了一种可靠性感知的综合路由与调度机制。通过将具有不同可靠性和延迟要求的各类流量的联合路由与调度问题形式化为基于优化模理论(OMT)的混合整数规划问题,设计了完整的路由约束与调度约束,并分析了不同类型流量的传输效用,设定了优化目标以提升整体网络性能。实验结果表明,该机制在满足TT流量严格时延与可靠性要求的同时,显著提高了AVB和BE等非关键流量的传输效用,实现了多类型流量的高效协同传输。

hhh00的博客 95

Linux进程调度终极指南:从新手到专家的完整解析

你是否曾经好奇,为什么你的Linux服务器能够同时运行成百上千个进程而不会崩溃?为什么高负载下某些应用仍然响应迅速?这一切都归功于Linux内核中一个神奇的技术——**进程调度器**。本文将带你深入探索Linux进程调度的奥秘,掌握系统性能优化的核心技巧! Linux进程调度是操作系统的核心功能之一,它决定了CPU时间如何分配给各个运行中的进程。从早期的O(n)调度器到现在的完全公平调度器(CF

gitblog_00799的博客 439

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Spring AI + GPT-5.5 + Ollama 配置教程:Base URL、超时与流式调用

由于不同 Spring AI、Spring Boot 小版本之间仍可能存在差异,创建项目时应检查 Spring Initializr、Spring AI BOM 和官方兼容矩阵,不要直接复制旧教程中的 Starter 名称和版本号。多人项目最好隔离不同客户端,并在脱敏前提下记录最终 URL、状态码、请求耗时、请求 ID 和模型 ID。Spring AI 接入模型 API,至少要同时确认 Starter、Base URL、请求路径、API Key、模型 ID、连接超时、读取超时和流式客户端这 8 项。

2601_95893075的博客 225

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【JVM】对象内存布局

HotSpot JVM 中,Java 对象内存布局由对象头(12字节,含Mark Word与压缩Klass Pointer)、实例数据及对齐填充构成,总大小为8字节倍数。对象头支持锁状态动态复用,指针压缩使引用仅4字节,但堆超32GB时失效。实例字段按类型优先级重排序以减少间隙,最小对象大小为16字节。通过JOL工具可精准验证布局,理解锁机制、GC、伪共享等底层行为。

2301_79732484的博客 149

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 330

Spring Boot 数据源与 MyBatis(-Plus) 自定义配置详解

本文详解 Spring Boot 中单数据源环境下 HikariCP 与 MyBatis-Plus 的自定义配置。通过手动声明 SqlSessionFactory,实现下划线转驼峰、日志输出、一级缓存策略等精细化控制。结合 HikariCP 核心参数调优(如最大连接数、连接生命周期),确保高性能与稳定性。适用于仅需访问单一数据库的场景,避免多数据源复杂性,兼顾性能与可维护性。

BADAO_LIUMANG_QIZHI的博客 196

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

要努力去发光,而不是被照亮~ 117

LeetCode Hot 100 二叉树专题(二)3 题(Java)

本篇文章共 3 题:543. 二叉树的直径、102. 二叉树的层序遍历、108. 将有序数组转换为二叉搜索树。 每道题都统一按「① 题目分析 & 解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结」的顺序组织;代码使用 Java 编写,节点定义沿用 LeetCode 默认的 TreeNode。

2401_88612756的博客 365

Decorator

TaskDecorator 是异步场景下"跨线程传递上下文"的标准方案,主要用于传递 MDC、用户信息、数据源路由等上下文数据,核心价值是让异步任务的日志链路不中断、业务上下文不丢失。TaskDecorator 是 Spring 提供的一个钩子接口,用于在异步任务执行前对 Runnable 进行包装,常用于跨线程传递上下文。如果你在项目中遇到具体的异步上下文传递问题,可以把代码贴出来,我帮你给出最合适的 Decorator 方案 👍。✅ 核心能力:在线程切换时,把"父线程的上下文"搬到"子线程"

wlwork66的博客 104

JDK 下载安装:装完 Java 提示「不是内部或外部命令」?环境变量没配

JDK 是写 Java 程序必须装的东西。它包含运行 Java 的虚拟机(JRE)和编译 Java 的编译器(javac)——装了它,能跑、.java文件能编译成可执行程序。免费,学习和小规模生产都不花钱。

科小怪的博客 626

数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南

Oracle 提供了ORA_ROWSCN伪列(System Change Number),记录最后修改行的 SCN,类似 PostgreSQL 的xmin。实践中通常仍使用 version 字段方案,逻辑与 MySQL 完全相同。-- Oracle:通过 ORA_ROWSCN 实现乐观锁-- 更新时比对 SCN// 自定义注解// AOP 切面@Aspect@Component@Slf4jtry {

yjc_1111的专栏 399

C++ 多态详解:作用、原理与实战用法

多态是C++面向对象的核心特性,通过虚函数实现运行期动态绑定,使同一接口在不同对象上表现出不同行为。其核心作用包括统一接口、提升可扩展性、降低耦合、支持运行时分派与批量处理。实现依赖虚函数表(vtable)和虚指针(vptr),需注意虚析构函数、对象切片等陷阱。相比编译期多态(模板),运行期多态灵活性高但有调用开销。合理结合两者,可兼顾代码的灵活性与性能,是构建可扩展、低耦合系统的关键。

2402_85743155的博客 377

java框架大全

java框架大全

qq_39326137的博客 183

Java 多态 学习笔记

多态是面向对象编程的重要特性,指同一操作作用于不同对象时产生不同行为。其核心在于“父类引用指向子类对象”,结合方法重写实现运行时动态绑定。多态使代码更灵活、可扩展,如用Person p = new Student();统一处理各类人员注册,无需修改调用逻辑。但多态无法直接调用子类特有方法,需通过instanceof判断并强制转换。编译时看左边(类型),运行时看右边(实际对象),实现解耦与维护便利。

AA_AA114514的博客 354
上一篇: LWN:如何在Fedora中移除SHA-1?
下一篇: LWN:查看5.17 的开发数据!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值