[置顶] 泰晓 RISC-V 实验箱,配套 30+ 讲嵌入式 Linux 系统开发公开课
泰晓资讯·11 月 / 第二期 / 2024
“泰晓资讯”,广泛报道 “Linux/开源” 业界资讯。欢迎广大读者投递相关资讯来源和素材,本站将进一步收集整理后发布给大家。
Linux 内核最新消息
Linus 在刚过去的周日将 Linux 6.12 标记为稳定版本。Linux 6.12 带来了许多新功能、新的硬件支持,并且有望成为今年的长期支持(LTS)内核版本。
Linux 6.12 中加入了许多新功能,这包括:
- 最终在主线上完全合入了实时 “PREEMPT_RT” 支持
- sched_ext 可扩展调度程序
- 在下一代 Radeon 显卡发布之前,提前支持了更多的 AMD RDNA4
- 改进并稳定了用于 Intel Lunar Lake 和 Battlemage 的 Xe2 显卡驱动。
现在进入了 Linux 6.13 的合并窗口,这个版本将加入更多新功能。
https://www.kernel.org/ updated by 2024/11/21
分支类型 | 版本 | 发布时间 |
---|---|---|
mainline | 6.12 | 2024-11-17 |
stable | 6.11.9 | 2024-11-17 |
longterm | 6.6.62 | 2024-11-17 |
longterm | 6.1.118 | 2024-11-17 |
longterm | 5.15.173 | 2024-11-17 |
longterm | 5.10.230 | 2024-11-17 |
longterm | 5.4.286 | 2024-11-17 |
longterm | 4.19.324 | 2024-11-17 |
linux-next | next-20241120 | 2024-11-20 |
关键词: Linux
Lazy Preemption 与 Linux 6.13 中合入的其他调度程序改进
All of the scheduler feature changes were merged today for the Linux 6.13 kernel, including the introduction of the lazy preemption model.
所有面向 Linux 6.13 内核的调度相关功能更改都已合并,其中包括引入 lazy 抢占模型 “PREEMPT_LAZY”。
根据 PR 中的描述,所谓 “PREEMPT_LAZY”,原文如下:
Add the “Lazy preemption” model (CONFIG_PREEMPT_LAZY=y), which optimizes fair-class preemption by delaying preemption requests to the tick boundary, while working as full preemption for RR/FIFO/DEADLINE classes.
根据该描述,我们理解该模型将抢占请求延迟到 tick 边界,这在启用 RR/FIFO/DEADLINE 这些 FULL 抢占方式下可以优化 fair-class 的抢占行为。
构建内核时我们可以通过打开(CONFIG_PREEMPT_LAZY=y
) 来启用 “Lazy preemption” 模型。
Kconfig 中针对 CONFIG_PREEMPT_LAZY
的描述总结得更容易理解一些,原文是这么说的:
This option provides a scheduler driven preemption model that is fundamentally similar to full preemption, but is less eager to preempt SCHED_NORMAL tasks in an attempt to reduce lock holder preemption and recover some of the performance gains seen from using Voluntary preemption.
可见该模型在根本上类似于 FULL PREEMPTION,但不太急于抢占 SCHED_NORMAL
类型的任务,而是试图减少对持有锁的任务进行抢占并,以达到类似 Voluntary preemption 的效果,从而提升系统的整体性能。
此 CONFIG_PREEMPT_LAZY
选项目前在 x86_64 和 RISC-V 系统上有效。
Linux 6.13 中有关调度程序的代码还包括了如下改进:
- 确保 idle 任务只初始化一次
- 优化 fair 调度器
- 通过删除不必要的内存屏障来优化通用 idle loop
- 提高 Restartable Sequences(RSEQ)的缓存局部性
- 为 Proxy Execution 功能提前做的一些准备工作
这些有关调度程序的修改为 Linux 6.13 引入了非常令人兴奋的新特性。
新闻出处,“Lazy Preemption Merged Along With Other Scheduler Improvements For Linux 6.13”: https://www.phoronix.com/news/Linux-6.13-Sched-Lazy-Preempt。
关键词: Linux, Sched, Lazy Preempt
Linux 6.13 将 Workqueue 并发限制提高了四倍
The Linux kernel Workqueue (WQ) is used for handling asynchronous process execution. For the past many years there has been an upper limit on the number of workqueue execution contexts per CPU at 512, but with Linux 6.13 that is being quadrupled to a limit of 2048.
Linux 内核中的 Workqueue (WQ) 用于处理异步进程的执行。在过去许多年中,每个 CPU 的 Workqueue 数量的执行上限一直为 512 个,但在 Linux 6.13 中,这一数字翻了两番,达到 2048 个。
本周一社区收到了针对 Linux 6.13 的 workqueue 拉取请求(PR),本周期中针对 Workqueue 有两项更改,其中最值得注意的是增加了最大并发限制,PR 中的原文描述如下:
“Maximum concurrency limit of 512 which was set a long time ago is too low now. A legitimate use (BPF cgroup release) of system_wq could saturate it under stress test conditions leading to false dependencies and deadlocks. While the offending use was switched to a dedicated workqueue, use the opportunity to bump WQ_MAX_ACTIVE four fold and document that system workqueue shouldn’t be saturated. Workqueue should add at least a warning mechanism for cases where system workqueues are saturated.”
可见如果我们把最大并发限制为 512 的话,常常不够用。譬如使用 (BPF cgroup release) system_wq 可能会在压力测试条件下使其饱和,从而导致错误的依赖关系和死锁。这也是我们需要改进这个上限的原因。再说这个 512 的限制是在十五年前设定的。但是,随着当今服务器规模的大幅增加,是时候提高该限制了。
Linux 6.13 中另一个和 workqueue 有关的更改也值得注意,因为它减少了和未绑定工作队列有关的锁,PR 原文描述如下:
“Recent workqueue updates to support more flexible execution topology made unbound workqueues use per-cpu worker pool frontends which pushed up workqueue flush overhead. As consecutive CPUs are likely to be pointing to the same worker pool, reduce overhead by switching locks only when necessary.”
该措施减少了 Workqueue 的开销。
新闻出处,“Linux 6.13 Quadrupling Workqueue Concurrency Limit”: https://www.phoronix.com/news/Linux-6.13-Workqueues。
关键词: Linux, Workqueues
Multigrain Timestamps 再次提交并合入 Linux 6.13
Merged last year for Linux 6.6 was multi-grain(ed) timestamps to address the current coarse-grained timestamps when updating creation time and modification time that a lot of I/O activity can happen in the once-per-jiffy timestamp. Just a few weeks in the Linux 6.6 kernel, multi-grain timestamps were removed due to bugs. The multigrain code went back to be reworked and now just over one year later the code has been re-merged into the mainline Linux kernel.
去年在 Linux 6.6 中加入了 Multigrain Timestamps 这个新特性,该补丁以解决更新创建时间和修改时间时时间戳颗粒度过于粗糙的问题,即在每时一次时间戳中可能发生大量 I/O 活动。可是这个补丁在 Linux 6.6 内核中仅仅存在了几周时间,就因为存在太多错误,所以就被删除了。目前 Multigrain Timestamps 的代码被重新编写,仅仅一年多后,更新后的补丁已被重新合并到主线 Linux 内核中。
Christian Brauner 在上周五提交了 VFS Multigrain Timestamps 的 PR,然后它已经被 Linus Torvalds 合并到 Linux 6.13 中,这次提交没有引起太多的反对或进一步的评论。所以在经过这次改进后,该补丁终于又可以进入主线了。Brauner 在 PR 中写道:
“This is another try at implementing multigrain timestamps. This time with significant help from the timekeeping maintainers to reduce the performance impact.
Thomas provided a base branch that contains the required timekeeping interfaces for the VFS. It serves as the base for the multi-grain timestamp work … Multigrain timestamps allow the kernel to use fine-grained timestamps when an inode’s attributes is being actively observed via ->getattr(). With this support, it’s possible for a file to get a fine-grained timestamp, and another modified after it to get a coarse-grained stamp that is earlier than the fine-grained time. If this happens then the files can appear to have been modified in reverse order, which breaks VFS ordering guarantees.
To prevent this, a floor value is maintained for multigrain timestamps. Whenever a fine-grained timestamp is handed out, record it, and when later coarse-grained stamps are handed out, ensure they are not earlier than that value. If the coarse-grained timestamp is earlier than the fine-grained floor, return the floor value instead.”
新闻出处,“Multigrain Timestamps Try Again For Linux 6.13 - Now With Less Performance Impact”: https://www.phoronix.com/news/Linux-6.13-Multigrain-Timestamp。
关键词: Linux, Multigrain, Timestamp
Linux 6.13 上合入针对加密子系统的改进
The crypto subsystem updates were merged yesterday for the in-development Linux 6.13 kernel. Among other crypto improvements are new optimizations for some algorithms when running on Intel and AMD x86_64 processors.
有关加密子系统的更新本周已合并入 Linux 6.13 内核。其他加密改进包括某些算法针对 Intel 和 AMD x86_64 处理器的新优化。
来自 Google 的 Eric Biggers 再次推出了更多的 Linux 加密性能优化。正如上个月所指出的,他一直在通过优化 x86 汇编代码来优化 CRC32C 的处理吞吐量。这项工作可以在 Intel/AMD 处理器上提升性能,尤其是在启用 Retpoline 时。这项工作涉及删除了一些跳转表,简化了 200 字节的代码,以及对 CRC32C x86 代码的其他调整。
Eric Biggers 针对 Linux 6.13 上加密代码的其他优化是调整一些 AEGIS-128 x86 汇编代码。AEGIS-128 的 AES-NI 版本被清理,性能提高了 1~5%,而二进制代码大小缩小了约 20%。
此外,在 ARM/ARM64 上也看到了针对 CRCT10DIF 优化,PowerPC 则有对 AES-GCM 的优化。
新闻出处,“Faster CRC32C & AEGIS-128 Crypto Performance On Linux 6.13 With Intel/AMD CPUs”: https://www.phoronix.com/news/Linux-6.13-Crypto。
关键词: Linux, Crypto
Linux 6.13 上内存子系统的性能优化
Andrew Morton on Monday submitted all the memory management “MM” related patches for the Linux 6.13 merge window. As usual there’s a lot of interesting performance optimizations and other low-level refinements.
Andrew Morton 周一提交了 Linux 6.13 合并窗口的所有和内存管理 “MM” 相关的补丁。像往常一样,有很多有趣的性能优化和其他底层改进。这些亮点包括:
通过 optimal post-processing target selection 的补丁,为 ZRAM 节省了使用的内存。
优化 shadow entries 的 truncation 操作,以加速 truncating 非常大的文件。
通过以 folio 大小(而不是单个页面大小)将数据复制到用户空间,提高 Tmpfs 大规模 folio 读取性能,性能提高了 20%。
一些准备补丁,以支持 Zswap 上面向 Intel IAA 的加速器。
提供 Lightweight Guard Pages,允许在用户空间将 fault 生成的 guard pages 放置在单个 VMA 中,以提高用户空间内存分配器的效率。
添加了 “transparent_hugepage_shmem=” 选项,方便用户通过内核引导命令行对 Transparent Hugepages (THP) 进行更多内核参数控制。
各种其他优化和改进。
新闻出处,“Linux 6.13 “MM” Patches Bring Some Enticing Performance Optimizations”: https://www.phoronix.com/news/Linux-6.13-MM-Patches。
关键词: Linux, Memory Management
一组针对上下文切换优化的内核补丁
A set of Friday night patches provide for some exciting context switching optimizations to the Linux kernel.
本月初来自 Meta 的资深 Linux 开发人员 Rik van Riel 提交了一组补丁,试图为 Linux 内核提供了一些令人兴奋的上下文切换优化。
Rik van Riel 发现在 Web 服务器上大部分 CPU 时间都花在 switch_mm_irqs_off
函数中后,有两项有针对性的改进。Rik van Riel 对补丁的解释原文如下:
“While profiling switch_mm_irqs_off with several workloads, it appears there are two hot spots that probably don’t need to be there.
The first is the atomic clearing and setting of the current CPU in prev’s and next’s mm_cpumask. This can create a large amount of cache line contention. On a web server, these two together take about 17% of the CPU time spent in switch_mm_irqs_off.
We should be able to avoid much of the cache line thrashing by only clearing bits in mm_cpumask lazily from the first TLB flush to a process, after which the other TLB flushes can be more narrowly targeted.
A second cause of overhead seems to be the cpumask_test_cpu inside the WARN_ON_ONCE in the prev == next branch of switch_mm_irqs_off.
This warning never ever seems to fire, even on a very large fleet, so it may be best to hide that behind CONFIG_DEBUG_VM. With the web server workload, this is also about 17% of switch_mm_irqs_off.”
在 AMD EPYC Milan 服务器上使用 Hackbench 测试第一个优化补丁后,简单的 Hackbench 测试用例从 4.5 秒缩短到 4.2 秒,节省了 CPU 时间。第二个优化页同样节省了大量 CPU 时间,但未进一步量化。
这些 Linux 上下文切换优化补丁现在正在审查中,希望能在即将到来的内核周期中进入主线。
新闻出处,“New Patches Aim To Optimize Context Switching With Two Improvements”: https://www.phoronix.com/news/Linux-2024-Optimize-Ctx-Switch。
关键词: Linux, Context-Switch
Framework 13 的 RISC-V 主板抢先体验版起价为 368 美元,笔记本电脑起价为 928 美元
Framework Computer has been promoting a RISC-V motherboard option for their Framework Laptop 13 to complement their existing Intel Core and AMD Ryzen motherboard options. This RISC-V motherboard is being developed in cooperation with DeepComputing. Early access pricing and more details on this quad-core StarFive JH7110 powered mainboard for the Framework 13 have now been announced.
Framework Computer 一直在为其 Framework Laptop 13 推广 RISC-V 主板,以补充其现有的 Intel Core 和 AMD Ryzen 主板方案。这款 RISC-V 主板是与 DeepComputing 合作开发的。有关这款用于 Framework 13 的四核 StarFive JH7110 驱动的主板的抢先体验、定价和更多详细信息现已公布。
DeepComputing 已经为 Framework Laptop 13 的 DC-ROMA RISC-V 主板启动了抢先体验计划。此抢先体验计划面向企业和企业客户,将于 2025 年更广泛地推出。四核 RISC-V SoC 配备 8GB RAM、用于存储的 SD 卡、可选的 eMMC 和 Imagination 显卡。WiFi 使用 Intel WiFi 6E AX210 芯片组。
基本层抢先体验型号售价 368 美元,配备 RISC-V 主板、Framework / Cooler Master 机箱、两张 USB-C 扩展卡和一张 64GB SD 卡。或者 448 美元的“标准”早期访问型号,增加了 WiFi 支持和 HDMI 扩展卡。
抢先体验 “Pro” 套餐只需 928 美元,即可获得配备 Framework Laptop 13 机箱的 RISC-V 主板。或者以 1098 美元的 “企业” 级别获得两个主板:一个 Framework Laptop 13 机箱,然后是 Framework/Cooler Master 机箱和配件。
Ubuntu 24.04 LTS 和 Fedora 41 是这款 DeepComputing RISC-V 主板最初支持的 Linux 发行版。但是,由于赛昉科技 JH7110 具有上游 Linux 内核支持,其他 RISC-V Linux 发行版最终也应该能够适应在 RISC-V 框架笔记本电脑 13 上运行。
通过 DeepComputing.io (https://deepcomputing.io/deepcomputing-launches-early-access-program-for-dc-roma-risc-v-mainboard-for-framework-laptop-13/)可以了解有关 Framework Laptop 13 的 RISC-V 主板早期访问计划的更多详细信息。为 Framework Laptop 提供 RISC-V 选项很好,但重要的是还是不要对性能做过高期许,许多工作负载下,JH7110 比 Raspberry Pi 慢。
新闻出处,“RISC-V Motherboard For Framework 13 Pricing Starts At $368 In Early Access, $928 For Laptop”: https://www.phoronix.com/news/RISC-V-Framework-Early-Access。
关键词: RISC-V, Framework Computer
联系我们
欢迎扫描二维码加微信联系我们:
猜你喜欢:
- 我要投稿:发表原创技术文章,收获福利、挚友与行业影响力
- 泰晓资讯:汇总一周技术趣闻与文章,查看「Linux 资讯」
- 知识星球:独家 Linux 实战经验与技巧,订阅「Linux知识星球」
- 视频频道:泰晓学院,B 站,发布各类 Linux 视频课
- 开源小店:欢迎光临泰晓科技自营店,购物支持泰晓原创
- 技术交流:Linux 用户技术交流微信群,联系微信号:tinylab
支付宝打赏 ¥9.68元 | 微信打赏 ¥9.68元 | |
请作者喝杯咖啡吧 |
Read Album:
- 泰晓资讯·11 月 / 第三期 / 2024
- 泰晓资讯·11 月 / 第一期 / 2024
- 泰晓资讯·10 月 / 第二期 / 2024
- 泰晓资讯·10 月 / 第一期 / 2024
- 泰晓资讯·9 月 / 第二期 / 2024
Read Related:
Read Latest:
- Linux 677
- Sched 1
- Lazy Preempt 1
- Workqueues 3
- Multigrain 1
- Timestamp 1
- Crypto 2
- RISC-V 315
- Memory Management 1
- Context-Switch 1
- Framework Computer 1