- 博客(621)
- 资源 (253)
- 收藏
- 关注
原创 Formally verifying the BPF verifier
摘要:本文介绍了Santosh Nagarakatte团队在2025年Linux存储与BPF峰会上展示的Agni工具,该工具用于对Linux内核中的BPF验证器进行形式化验证。Agni通过将BPF验证器的C代码转换为SMT问题来自动验证其正确性,特别是针对算术运算和位操作等核心功能。团队克服了共享细化操作符建模等挑战,发现并修复了早期内核版本中的漏洞。随着验证器复杂度增加,Agni的验证时间从数周优化至30分钟。未来计划包括开发领域特定语言(DSL)简化验证器开发,以及扩展验证范围至路径裁剪算法和Spect
2025-05-24 01:05:49
185
原创 Long-duration stress-testing for filesystems
在2025年Linux存储、文件系统、内存管理和BPF峰会(LSFMM+BPF)上,文件系统测试成为焦点。Meta的Boris Burkov主持了相关会议,探讨了如何通过压力测试和长时间运行测试来发现文件系统在生产环境中的潜在问题。Burkov回顾了他在Btrfs开发中的经验,指出生产环境中的压力测试至关重要,并分享了Meta遇到的一些典型bug,如数据损坏、元数据损坏和容器间的资源争用问题。他强调了现有测试工具(如fstests)的局限性,特别是数据完整性测试的不足,并提出了改进建议,包括增加内存压力测试
2025-05-23 15:27:36
384
原创 An update on continuous testing of BPF kernel patches
在2025年Linux存储、文件系统、内存管理与BPF峰会上,Ihor Solodrai分享了他在过去六个月中为BPF子系统持续集成(CI)测试所做的工作。他展示了一个用于分析verifier失败的可视化工具,并讨论了如何扩展测试覆盖范围,包括将GCC加入测试套件和添加sched_ext测试。Solodrai还解决了测试执行节点过载的问题,通过将构建步骤移至一个自动扩缩容的服务来优化测试流程。尽管测试节点无法自动扩容,导致测试执行成为新的瓶颈,但Solodrai的工作显著提升了BPF CI测试的可用性和可靠
2025-05-21 05:06:24
866
原创 Merging copy offload
内核支持“拷贝卸载(copy offload)”功能已经讨论了十多年,但始终未被合并。该功能允许主机系统向块存储设备发送命令,让设备在内部完成数据拷贝,无需主机参与,从而节省CPU资源、PCI带宽和网络带宽。在2023年Linux存储、文件系统、内存管理和BPF峰会上,Nitesh Shetty主持了相关讨论,探讨了当前补丁集的状态,并希望其能尽快被合并。该功能最早由Martin Petersen在2014年提出,但之前的实现方案因可扩展性和兼容性问题未能获得社区支持。Shetty及其团队自2021年重启了
2025-05-20 21:33:09
714
原创 Reports from OSPM 2025, day one
第七届Linux内核电源管理与调度(OSPM)峰会于2025年3月18日至20日在德国Uhldingen-Mühlhofen举行,由Linutronix、Arm和比萨圣安娜高等研究院赞助。会议讨论了多个主题,包括调度器接口的演进、调度器管理器(schedulergovernors)的概念、以及EAS(能量感知调度)的改进。Morten Rasmussen探讨了如何通过改进EAS和EM(能源模型)来优化CPU调度,特别是在异构系统中。Rafael J. Wysocki则分享了在英特尔混合芯片上实现EAS的最新
2025-05-20 15:30:29
674
原创 Why RISC-V doesn‘t (yet) support KVM
RISC-V处理器架构因其开放性受到广泛关注,Linux对其提供了良好支持,但缺乏基于KVM的虚拟化支持。尽管已有高质量实现,但由于RISC-V的hypervisor扩展规范尚未被批准,相关补丁无法直接进入内核。开发者尝试将KVM支持代码放入staging目录以绕过政策限制,但遭到维护者反对。内核社区认为,阻止为现有硬件添加支持的优秀代码合并是不合理的,尤其是对于虚拟化这样的基础功能。这一事件凸显了RISC-V补丁接收政策的问题,可能促使政策调整。尽管存在争议,Linux有望在不久的将来获得对RISC-V的
2025-05-20 00:23:50
1118
原创 A new DMA-mapping API
在2025年Linux存储、文件系统、内存管理与BPF峰会(LSFMM+BPF)上,Leon Romanovsky介绍了其团队对DMA映射API的现代化改进工作。该改进旨在使API更适合当前内核,并减少因使用散布-聚集(SG)列表而导致的格式转换问题。新API允许DMA用户直接管理I/O虚拟地址(IOVA)空间,优化了通过I/O内存管理单元(IOMMU)进行DMA的路径。尽管该提议在技术层面得到了广泛支持,但DMA维护者Robin Murphy对其提出了反对意见,认为其将过多底层知识暴露给API用户。为打破
2025-05-16 21:03:36
1231
原创 Faster firewalls with bpfilter
在网络通信中,数据包过滤是确保安全和性能的关键技术。传统的iptables和nftables工具逐渐被BPF(Berkeley Packet Filter)技术所取代,BPF通过在内核中运行自定义的C语言子集程序,提供了更高的灵活性和性能。Bpfilter项目进一步优化了这一过程,通过将过滤规则直接转换为BPF程序,显著提升了处理效率。Bpfilter由三个主要组件构成:守护进程、通信库和命令行工具,它们协同工作以实现高效的网络流量过滤。尽管Bpfilter在性能上具有优势,但其复杂性和对特定硬件的要求限制
2025-05-15 15:16:59
710
原创 Porting Linux to a new processor architecture, part 3: To the finish line
本系列文章详细介绍了将Linux内核移植到新处理器架构的完整流程。文章分为三部分,第一部分和第二部分分别讨论了非代码相关的准备工作和早期代码实现,包括从汇编启动代码到创建第一个内核线程的过程。第三部分则聚焦于剩余的工作,主要涉及线程和进程管理,以启动init进程。文章深入探讨了内核线程的生成、线程切换机制、页错误处理、系统调用支持以及用户空间内存访问等关键步骤。通过这些内容,读者可以全面了解Linux内核移植的复杂性,并为未来的移植工作提供宝贵的参考。
2025-05-14 13:15:12
1019
原创 A look at what‘s possible with BPF arenas
BPF arena是一种内存区域,允许在BPF中编写任意数据结构,验证器在此可以更宽松地检查指针。在2025年的Linux峰会上,Emil Tsalapatis报告了其在编写sched_ext调度器时使用arena的经验。尽管整体上对arena感到满意,但他指出最大的问题是内核指针无法存储在arena中,这限制了其使用。目前,开发者需要将数据结构分为两部分存储:一部分在arena中,另一部分在BPF map中,以持有内核对象的引用。这种分割虽然可行,但降低了arena的便利性。Tsalapatis希望BPF
2025-05-14 13:07:19
709
原创 Porting Linux to a new processor architecture, part 2: The early code
本文是系列文章的第二部分,继续探讨将Linux移植到新处理器架构的过程,重点介绍了启动代码的实现。文章首先讨论了架构相关头文件的作用,这些头文件分为内核接口和用户接口两部分,通常涉及上百个文件,是移植过程中工作量较大的部分。幸运的是,许多处理器架构共享相似代码,这些代码已被汇总到通用头文件层中,减少了定制需求。接着,文章详细描述了启动流程,从手动编写的汇编函数开始,逐步执行一系列架构相关函数,如设置架构、初始化陷阱、内存管理等,最终创建第一个内核线程。这一过程帮助开发者理解必须实现的最小架构相关函数集合及其
2025-05-13 15:58:12
935
原创 Porting Linux to a new processor architecture, part 1: The basics
将Linux内核移植到新的处理器架构是一个复杂且文档稀缺的过程。尽管简单的移植可能仅需约4000行代码,但实际工作中仍面临诸多挑战。本文旨在概述移植流程,分为启动代码和内核正常运行后的架构相关代码两部分。移植的必要性取决于处理器是否具有新的指令集架构(ISA)。以TSAR处理器为例,虽然其核心兼容MIPS32 ISA,但由于其独特的虚拟内存模型,移植工作仍需大量修改。了解底层硬件是移植的基础,处理器的规格说明通常分为用户级ISA和特权架构两部分,后者包含移植中特殊且核心的信息。最后,创建链接脚本以指示链接器
2025-05-12 12:43:38
821
原创 Hash table memory usage and a BPF interpreter bug
Starovoitov 询问能否在不删除该字段的前提下重新排列结构内容,但这似乎不可行,因为结构中的其他部分是所有类型的 BPF map 都要使用的。因此,如果两个函数调用之间的指令数量足够多,以至于超过了该 16 位字段的容量,Protopopov 表示,调用目标的偏移就会出错。链表中的每个元素是一个 htab_elem 结构,包含键的哈希值、完整键的副本,以及两个联合体,分别为 per-CPU 和普通哈希表提供不同的功能。由于 BPF 哈希表用途广泛,这将是一组改动很大的补丁,因此他希望先征求意见。
2025-05-08 13:19:45
1328
原创 Filtering fanotify events with BPF
在 Liu 的补丁集中,他采用了为整个文件系统设置 fanotify 标记的方式,然后通过 is_subdir() 函数(判断某个目录项是否是另一个目录项的子目录)在 BPF 中进一步过滤事件。理想的方案应当是结合两者优势:使用类似 fanotify 的高效掩码机制来筛选感兴趣的文件,同时对更复杂的场景采用 LSM 提供的内核态快速处理能力。Goldstein 认为这个思路是合理的,但指出 fanotify 的掩码是所有监听者的联合掩码,因此 LSM 也可以使用相同的掩码,仅用于表明“有人感兴趣”。
2025-05-07 14:54:35
947
原创 Improving FUSE writeback performance
Koong 表示,该补丁集被拒绝,主要原因在于它可能会让存在缺陷或恶意的 FUSE 服务器通过迟迟不完成某些页面的写回,进而无限期地阻碍内存迁移。另一种可行的方案是,在可移动内存区域中划出一个专用区,用于存放可能在不确定时间内无法移动的页面,这样可以将碎片化的影响限制在该区域内。或者,对于那些表现不佳的非特权 FUSE 服务器,比如迟迟不完成写回或持有过多正在写回的页面的服务器,可以直接将其终止。有时候,数据足够重要,长时间等待是可以接受的,但比如说,等待 30 秒可能就已经太长,足以阻碍一次内存分配。
2025-05-07 14:44:27
576
原创 Injecting speculation barriers into BPF programs
另一个潜在问题是,对于那些易受 Spectre variant 1 影响但又不提供合适屏障指令的体系结构而言,目前这组补丁会禁用当前基于校验器的检查机制,却没有用基于屏障的保护机制来替代它。根据 Gerhorst(在补丁中)的说法,唯一受此影响的架构是 MIPS,而 MIPS 默认就完全不允许非特权 BPF,因此他说这个潜在的安全回退是“可以接受的”。攻击者在传统情况下可能需要艰难地在内核代码库中搜索可利用的代码,而使用 BPF 的攻击者则可以直接编写并加载他们自己的推测执行代码片段,这种方式高效得多。
2025-05-06 14:14:10
632
原创 Several Basic Concepts on the block layer
2.5 版本的“待办事项”之一是为块 I/O 子系统实现真正的写屏障(write barrier)功能。任何试图在基于磁盘的文件上实现真正事务行为的代码都需要这种能力。如果没有写屏障,日志文件系统和数据库管理器等系统就无法控制数据写入磁盘的顺序。写入顺序错误可能会导致数据损坏和其他严重问题。2.6 的块 I/O 子系统在设计时将写屏障作为核心特性之一。但截至目前,大多数底层块设备驱动实际上并没有实现写屏障功能,文件系统也没有使用它们。用于填补这些空白的补丁已经存在一段时间,但尚未合并进内核。
2025-05-05 17:07:36
545
原创 CDROM drives and partitioning
大多数用户从未遇到过这个问题,但对于那些遇到过的用户,Steven Hill 提交了一个补丁,为 SCSI CDROM 驱动添加了 CD 分区支持。不过,在此之前,使用带分区的 CD 的用户将不得不面对内核与发行版在 SCSI CD 设备号空间上的命名冲突问题。唯一的问题在于,如人们所预料的那样,CD 分区的次设备号会紧跟在整个 CD 设备的次设备号之后分配。好消息是,在 2.6 内核中,分区处理已经交由块设备层完成。的设备号是 11,0,那么其上的第一个分区就会被分配为 11,1。
2025-05-04 17:22:32
664
原创 Laptop mode for 2.6
一个较早版本的 laptop mode 补丁目前已进入 2.6.1-rc1-mm2 分支,这表明它有望最终被合并进 2.6 内核。Bart Samwel 接过了 laptop mode 的接力棒,并发布了多个版本的 2.6 补丁;该补丁的目的是最大程度延长笔记本电脑电池续航时间,其方式是尽量减少磁盘的转动时间。因此,启用 laptop mode 的用户有丢失长达十分钟工作成果的风险,但对很多人来说,这是可以接受的代价。一旦有事件强制磁盘转动,系统会立即将所有脏页写入磁盘,无论这些脏页在内存中存在了多久。
2025-05-04 17:18:58
561
原创 The status of object-based reverse mapping
我现在认为把 anon_vma 说成比 anonmm 更复杂是错误的(anon_vma 的链表比我那套引用计数逻辑更容易理解),而且我对最后一版补丁中的 VMA 合并逻辑很满意。正如 Hugh 所指出的,anon-vma 的换出(swapout)性能应该更好,因为其结构更容易找到某个页面所对应的 VMA。这两个方案在概念上类似,但各有优缺点,性能也基本相当。Andrea Arcangeli 的 anon-vma 补丁,它引入了一种数据结构,在每个物理页和引用该页的虚拟内存区域(VMA)结构之间建立联系。
2025-05-04 13:03:43
985
原创 Reverse mapping anonymous pages - again
也有可能是两者的结合方案;Andrea 的工作进展顺利,但值得注意的是,anon_vma 并不是匿名内存对象化反向映射机制的唯一实现。请记住,这项工作的目标是通过消除反向映射(“rmap”)链来提升内核的内存扩展性,这些 rmap 链用于查找引用某个页面的页表项。这意味着,在一个例外情况之外,所有共享匿名页的进程中,该页的虚拟地址是相同的。所谓 prio_tree,指的是 Rajesh Venkatasubramanian 提出的优先级树补丁,它加快了在某个页面被大量映射时,查找相关虚拟内存区域的过程。
2025-05-04 13:00:24
1078
原创 Flexible data placement
不过,写入未打标签或标签无效的数据并不会报错。Joshi 表示,设备本身并不关心这些标签,但如果打上了标签,数据“就可以按照预期的方式进行分组”。Busch 表示,如果根据数据的写入后多快被丢弃或覆盖的特性来分组,并使用不同的标签,会产生明显差异。”Busch 回答说,目前对文件系统的测试并不深入,重点转向了应用层,但他也认为对这些文件系统的日志写入打标签可能会带来显著影响。Busch 认为,如果文件系统是标签的仲裁者,它们可以为自己保留一部分标签空间,但这样仍可能与其他分区上的文件系统发生标签冲突。
2025-05-03 14:18:26
906
原创 Custom out-of-memory killers in BPF
内核无法发出“谁愿意被杀”这样的广播,因此 OOM 杀手必须运用一套启发式方法来选择受害者——既要尽可能多地释放内存,又要尽量减少用户的痛苦。当整个系统(或近年来的任意控制组)内存紧张到无法继续分配时,它会被“召唤”出来,其任务是终止一些进程以释放足够的内存。为此,内核提供了一些可调节的“旋钮”,允许某些进程自愿(或被强制)优先成为 OOM 杀手的目标。在默认配置下,内核会对系统内存进行超额分配,也就是说,它允许进程分配的内存总量超过系统可提供的总量(即物理内存与交换空间之和)。截至目前,评论还不多。
2025-05-02 04:54:12
1070
原创 Better debugging information for inlined kernel functions
其他方法,比如 tracepoints 和 Linux 安全模块(LSM)钩子,也能用于选择性内联函数,但 Liu 认为这些并不能真正替代正常的函数跟踪,因为在调试内核问题时,往往要到深入分析阶段才能明确需要跟踪哪些函数。最常见的编译器优化之一是函数内联:将函数体的代码直接嵌入调用者中,以避免函数调用的开销,并可能带来更多的优化机会。这就可能导致一种情况:一个函数仍然出现在二进制文件的符号表中(因为部分调用未被内联),但在跟踪时却无法看到调用它的地方(因为热点调用已被内联,该函数符号不再代表这些调用)。
2025-05-01 05:53:46
909
原创 Cache awareness for the CPU scheduler
最靠近CPU的L1缓存通常是CPU私有的,而后续的缓存级别(虽然更慢,但通常更大)则被多个CPU共享。将任务从一个CPU迁移到另一个CPU,可能会使其失去原先缓存的数据,从而影响性能。原先的代码即使任务已经运行在同一个LLC域内,仍然会将其迁移到“热点”CPU,而这时任务本就已经在共享最大级别的缓存,再次迁移反而会带来性能损失而非提升。补丁为描述地址空间的。因此,这组补丁所引入的又一条启发式逻辑(“将进程的线程集中在一个缓存域中”)势必会带来更多意料之外的交互,可能还需要再引入更多启发式规则来加以协调。
2025-04-30 01:29:17
764
原创 Dancing the DMA two-step
Christoph Hellwig回应称,即使设备能够处理高度碎片化的IOVA空间,但在面对连续的IOVA范围时,通常仍然能获得更好的性能表现。CPU的内存缓存与DMA操作结合使用时,可能导致对内存中数据的一致性视图出现问题——例如,设备无法看到只存在于CPU缓存中的数据。中保存设备可见的物理地址范围。说实话,我怀疑现在还有多少真正支持scatter-gather的设备存在明显的限制,以至于需要通过合并DMA段来获得实质性好处——我一直在想,现在也许应该默认关闭这种行为,改为让调用者通过属性显式请求。
2025-04-29 04:09:00
652
原创 Inline socket-local storage for BPF
对于像 Meta 这样清楚每个 socket 的 BPF 程序需要多少存储空间的公司来说,这样可以预先配置合适的大小,从而完全避免双重解引用和缓存未命中的问题。Lau 解释说,目前创建每个 socket 的 BPF map 时,所用的内存会计入创建该 map 的用户空间程序。另一位开发者提出,如果一个 BPF 程序在内联存储中预留了空间,但随后被用户空间重新加载——那么会进行新的分配(让旧分配成为垃圾),还是以某种方式复用旧分配?遗憾的是,本次讨论在最终敲定设计方案之前,就已经到达了预定的会议结束时间。
2025-04-29 03:44:20
683
原创 ACCESS_ONCE() and compiler bugs
Christian 的补丁集在必要的地方将 ACCESS_ONCE() 调用替换成了 READ_ONCE() 或 ASSIGN_ONCE()。代码注释中建议,今后应优先使用这些新宏而不是 ACCESS_ONCE(),但目前大多数已有的 ACCESS_ONCE() 调用尚未改动。再次强调,这需要进行细致的审核,而且未来的新增代码仍可能引入新的 buggy ACCESS_ONCE() 调用。减少脆弱性的一种方法是修改受影响的 ACCESS_ONCE() 调用,让它们指向相关非标量类型中的标量部分。
2025-04-27 21:39:31
814
原创 ACCESS_ONCE()
如果代码总是在持有相关锁的情况下访问共享变量,且该变量只会在锁释放后由其他线程修改,那么编译器就不会引入这些微妙的问题。只有在访问共享数据时既没有加锁,也没有明确使用屏障的地方,才需要像 ACCESS_ONCE() 这样的构造。在这样的系统上,编译器为了生成性能最优的代码,必须仔细选择哪些值保存在寄存器中。这个宏的功能其实正如其名字所描述的那样:它的目的是确保生成的代码对传入参数的访问恰好发生一次。这段代码是自适应自旋的一部分,目的是在当前持有者释放互斥锁后,尽快获取它,而不必进入睡眠状态。
2025-04-27 18:34:11
523
原创 Support for atomic block writes in 6.13
但显而易见,这种双写机制带来了显著的性能开销,尤其是在写入密集型的场景中。正如 2024 年 LSFMM+BPF 峰会期间所讨论的,一些云服务提供商已经开始宣传其支持基于 ext4 文件系统的原子写入功能,前提是启用了 bigalloc(大块分配)功能,该功能使文件系统采用基于簇(cluster)的分配方式,而非按块分配。需要注意的是,ext4 文件系统不支持大于系统页大小的块大小,因此在页大小为 4KB(如 x86 系统)上,ext4 无法使用 16KB 的块大小,因此也无法支持该大小的原子写入。
2025-04-26 12:41:53
673
原创 Some __nonstring__ turbulence
但 Fedora 42 已经发布,而 Fedora 的开发者选择在默认编译器中使用 GCC 15 的预发布版本,这一决定无论好坏,延续了 Red Hat 的一贯传统。为了解决这些问题,Torvalds 自行制作了一系列修改,并在发布前两小时将它们直接合入主线,其中包括一个修复 ACPI 子系统警告的补丁,以及另一个修复多个警告(包括上文示例)的补丁。不幸的是,这些最后时刻的更改破坏了在 GCC 15 预发布版本之前的所有编译器上的构建,这可能会给未使用 Fedora 42 的开发者带来一些不便。
2025-04-25 15:19:08
794
原创 Freezing filesystems for suspend
在那次发布时,他遇到了一些锁相关的问题,并在今年的会议开头再次提起这些问题。当时 VFS 层与块设备层之间的冻结逻辑存在一些锁顺序反转问题,但现在这些问题已经被理清,“就我看来,从锁的角度来说应该是安全的”。虽然他已经有一个解决方案,尽管实现比较难看,但他认为如果能有一种通用 API,其他文件系统也能从中受益,在系统挂起-恢复周期中提供更好的一致性保证。这些设备可能有脏数据需要刷写,但当数据刷新时,底层文件系统已经被冻结,因为块设备是在文件系统之后被冻结的,这可能导致死锁。
2025-04-25 13:06:10
1023
原创 VFS write barriers
在 2025 年的 Linux 存储、文件系统、内存管理与 BPF 峰会(LSFMM+BPF)的文件系统议题中,Amir Goldstein 希望继续讨论一个他在 2023 年峰会最后一场会议中简要介绍过的特性:文件系统的“写屏障(write barriers)”。在会议稍后的讨论中,Jeff Layton 提问后,Goldstein 进一步解释了他的使用场景:目标用户是拥有“非常大数据集”的用户,他们需要云同步、数据复制等功能。在他的应用中,变更日志用于记录所有文件系统的变更,以确保没有遗漏;
2025-04-24 16:05:57
679
原创 Code signing for BPF programs
为了解决这一问题,Boscaccy 考虑过几种方案,包括将执行重定位、创建 BPF 映射等任务的 BPF 程序加载器移入内核,或采用一种基于 “轻量骨架(light skeletons)” 的方法,让一个 BPF 程序为另一个程序执行重定位。重要的是,这个第二签名不仅覆盖修改后的 BPF 程序,还包括原始签名,从而建立一条信任链:从最初构建 BPF 程序的一方,到签名过的 libbpf 加载器,再到最终提交给内核的对象。签名密钥的分发管理也是一大难题,尽管这并非该方案独有的问题,Wang 补充道。
2025-04-24 03:30:49
682
原创 DMA addresses for UIO
一旦加载该模块,用户空间驱动就可以打开相应的 /dev/uioX 设备,将内存区域映射到自己的地址空间,利用该映射对设备进行编程,并通过读取设备文件描述符来等待中断。而在更复杂的系统中,这种“物理地址”可能处于设备所在总线的独立地址空间中,甚至还需要通过 I/O 内存管理单元(IOMMU)进行地址转换,并进行相应的编程。他还补充说,这项提案“从根本上就是错误和不安全的”,并表示如果他的建议无法满足需求,那么唯一的替代方案就是编写一个完整的内核驱动。如今,在一些人看来,UIO 所提供的价值甚至可能是负面的。
2025-04-23 15:08:02
741
原创 Indirect calls in BPF
Protopopov 对这个方案并不确定,因为它并不能解决静态键引用多个映射的问题,但 Starovoitov 建议他尝试添加一个额外的间接层,使静态键可以指向多个映射组成的表。验证器在执行死代码消除及其他转换时,会保持这些指令地址的更新状态——这正是需要一种专用映射类型的原因,而不是仅依赖于 BPF 程序中的硬编码偏移。在目前的代码状态下,尝试创建第二个使用同一个指令集映射的 BPF 程序实例会直接失败——因为当验证器要修改指令位置时,该映射已经被冻结,导致验证过程失败。而对于静态键,用于运行时更新的。
2025-04-22 15:24:22
493
原创 The problem of unnecessary readahead
在页大小较小的系统上,这些填充数据毫无用处,完全可以保留在磁盘上不动,但预读机制仍然会将它们加载进页缓存,带来了无意义的 I/O 并浪费内存。文件中的空洞(hole)可以在内核中标记,当进程访问这些空洞时,直接映射到零页(zero page)。Singh 指出,在这些场景中,即使不需要的数据位于映射区域之外,预读机制依然会把它们加载进来。随着本场讨论(以及整场会议)进入尾声,Hildenbrand 提出,与其尝试对这些“边角案例”进行优化,不如干脆在遇到文件空洞时立即停止预读,或许这就足够了。
2025-04-19 15:08:39
431
原创 Tracepoints for the VFS?
在 2025 年的 Linux 存储、文件系统、内存管理和 BPF 峰会(LSFMM+BPF)上,Ted Ts’o 主持了一场讨论,探讨 VFS 是否应该添加 tracepoint,以及其带来的实用性是否能胜过对 ABI 的担忧。Mathieu Desnoyers 是最初在 2008 年开发 tracepoint 的人,他指出,在过去关于是否添加 tracepoint 的讨论中还曾提出过另一种担忧:tracepoint 可能被滥用于执行劫持。在这个背景下添加 tracepoint 是合理的,有助于开发。
2025-04-19 15:02:21
660
原创 Memory controller performance improvements
在 2025 年的 Linux 存储、文件系统、内存管理和 BPF 峰会的内存管理专题中,Shakeel Butt 主持了一个会议,讨论内存控制器的当前状态以及如何降低其开销。Hocko 表示,目前的基础设施已被很好地优化,因此添加一个允许返回过期数据的接口,或许确实是合理的下一步。也有人请求提供关于“内存余量”的更好信息——即一个控制组还可以使用多少内存,或者说,在耗尽资源前还能再使用多少。他提到,去年他主持了一个专门讨论弃用版本 1 内存控制器的会议,这是逐步淘汰对版本 1 控制组支持的关键步骤。
2025-04-18 01:08:05
594
原创 Parallel directory operations
这些补丁的主要障碍在于:虽然目录的 i_rwsem 被作为共享锁获取,但目录项(dentry)却是用独占锁来保护的,这就带来了大量潜在的死锁可能性。比如说,在使用 NFS 的场景中,如果多个文件在同一个目录中被创建,这些操作会在客户端被串行化,这意味着在真正执行前需要进行大量网络往返。Brauner 表示他并不喜欢引入大量新的 inode 操作,但如果这个思路可行,可以为现有操作添加一个异步形式,只对选择启用该特性的文件系统启用。后缀的新 inode 操作,“虽然看起来有点丑”,但这只是“表面问题”。
2025-04-17 18:17:13
893
【高性能计算与加速器编程】基于Intel oneAPI的跨架构编程工具与优化:加速计算自由选择与硬件兼容性设计
2025-05-15
【网络流量管理】基于Traffic Shaping和ETS的多虚拟功能组带宽分配与调度:实现数据中心多类流量的精细化控制
2025-05-07
【网络通信技术】RDMA与InfiniBand关键技术解析:高性能计算领域网络互连与数据传输优化方案
2025-05-07
【操作系统内存管理】mshare机制实现进程间页表共享:提升多进程数据库应用内存利用率的设计与API介绍
2025-05-02
【网络虚拟化技术】HODA:高性能Open vSwitch数据平面优化设计与实现:多专用数据路径提升云网络性能
2025-05-01
【电信基础设施】OTII服务器系列产品演进与应用:从1U到2U及OTII-E的边缘计算部署方案综述
2025-05-01
【人工智能平台】Geti与国内AI平台SaaS巨头对比分析:模型训练、数据标注及部署方案综述
2025-05-01
【5G通信技术】vRAN 5G端到端系统优化与部署:构建无线通信网络的关键技术及应用场景分析
2025-05-01
### 【智能交通与传感器融合】基于Camera+mmWave雷达的一体化传感器融合系统设计与性能评估
2025-05-01
边缘计算Project Strata智能边缘平台演示:集群与应用编排及安全配置系统设计
2025-05-01
【5G通信技术】Intel CPU在5G基站中的应用与优化:从传统BTS到FlexRAN架构的演进及功耗管理
2025-05-01
【服务器管理】IPU Redfish服务器实现计划:硬件与软件更新接口及用例介绍
2025-04-29
【OpenVINO 2024.1】增强型生成式AI工作负载支持:大规模语言模型性能优化与广泛技术支持
2025-04-27
【密码学与信息安全】基于SMx算法的加密性能优化:Intel QAT引擎在Sapphire Rapids平台上的实现与应用
2025-04-26
### 文章总结:Intel Ethernet Products 和 IPU 产品路线图及特性概述
2025-04-26
【人工智能硬件】面向企业级AI推理的多GPU解决方案:Intel Arc在中国市场的布局与优化
2025-04-26
### 文章总结:基于英特尔架构的传感器融合技术在智能交通系统中的应用
2025-04-25
【Linux内存管理】统一页面热度信息源:内存管理对齐会议提案与kpromoted设计探讨文档的主要内容
2025-04-24
SPR TCO Analysis Report
2025-04-10
【网络时间同步技术】IEEE1588v2与SyncE时钟同步机制详解:频率与时相同步方案及其应用对比
2025-04-10
【云计算与终端管理】Ultra Cloud Client (UCC) 技术架构与产品介绍:多场景高效计算客户端管理方案设计
2025-04-10
OpenVINO 2024.1 发布:增强大型语言模型性能与扩展生成式AI支持
2025-03-30
IPU Redfish服务器实施概述:管理接口与用例解析
2025-03-29
网络状态网关中96百万精确匹配规则卸载的技术解析与实现
2025-03-29
基于IPU的Cassandra集群技术验证与优化:苹果公司内部技术培训
2025-03-28
英特尔AI网络解决方案:Wildcat Peak与FalconRT技术解析及其应用
2025-03-27
数据中心Falcon传输协议规范-高效可靠的远程直接内存访问与NVMe命令传输机制
2025-03-20
Ultra Ethernet Consortium规范介绍与高性能AI网络优化
2025-03-13
InfiniBand架构扩展:内存放置保障技术及应用场景解析
2025-02-27
OpenVINO 自动设备与推理服务优化及应用场景解析
2025-01-29
OpenVINO 自动设备与推理服务优化及应用场景解析
2025-01-29
OpenVINO与百度PaddlePaddle模型优化和性能调优案例研究
2025-01-29
OpenVINO与百度PaddlePaddle模型优化和性能调优案例研究
2025-01-29
Intel IPU固件启动机制与管理详解:深入解析MEVTS Boot过程及应用
2025-01-28
国密SM系列算法在Intel QAT硬件加速与软件优化的应用研究
2025-01-28
CES 客户问题管理与Bug流程培训:提升客户满意度和优化缺陷跟踪系统
2025-01-26
ARM架构下大型匿名Folio(LAF)内存管理机制解析与应用场景讨论
2025-01-25
操作系统内核对大匿名页的支持进展与挑战:内存管理子系统的优化探讨
2025-01-25
内存管理演进:Linux 内核对匿名内存的大尺寸 Folios 支持及其性能优化
2025-01-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人