- 博客(599)
- 资源 (243)
- 收藏
- 关注
原创 Custom out-of-memory killers in BPF
内核无法发出“谁愿意被杀”这样的广播,因此 OOM 杀手必须运用一套启发式方法来选择受害者——既要尽可能多地释放内存,又要尽量减少用户的痛苦。当整个系统(或近年来的任意控制组)内存紧张到无法继续分配时,它会被“召唤”出来,其任务是终止一些进程以释放足够的内存。为此,内核提供了一些可调节的“旋钮”,允许某些进程自愿(或被强制)优先成为 OOM 杀手的目标。在默认配置下,内核会对系统内存进行超额分配,也就是说,它允许进程分配的内存总量超过系统可提供的总量(即物理内存与交换空间之和)。截至目前,评论还不多。
2025-05-02 04:54:12
579
原创 Better debugging information for inlined kernel functions
其他方法,比如 tracepoints 和 Linux 安全模块(LSM)钩子,也能用于选择性内联函数,但 Liu 认为这些并不能真正替代正常的函数跟踪,因为在调试内核问题时,往往要到深入分析阶段才能明确需要跟踪哪些函数。最常见的编译器优化之一是函数内联:将函数体的代码直接嵌入调用者中,以避免函数调用的开销,并可能带来更多的优化机会。这就可能导致一种情况:一个函数仍然出现在二进制文件的符号表中(因为部分调用未被内联),但在跟踪时却无法看到调用它的地方(因为热点调用已被内联,该函数符号不再代表这些调用)。
2025-05-01 05:53:46
480
原创 Cache awareness for the CPU scheduler
最靠近CPU的L1缓存通常是CPU私有的,而后续的缓存级别(虽然更慢,但通常更大)则被多个CPU共享。将任务从一个CPU迁移到另一个CPU,可能会使其失去原先缓存的数据,从而影响性能。原先的代码即使任务已经运行在同一个LLC域内,仍然会将其迁移到“热点”CPU,而这时任务本就已经在共享最大级别的缓存,再次迁移反而会带来性能损失而非提升。补丁为描述地址空间的。因此,这组补丁所引入的又一条启发式逻辑(“将进程的线程集中在一个缓存域中”)势必会带来更多意料之外的交互,可能还需要再引入更多启发式规则来加以协调。
2025-04-30 01:29:17
737
原创 Dancing the DMA two-step
Christoph Hellwig回应称,即使设备能够处理高度碎片化的IOVA空间,但在面对连续的IOVA范围时,通常仍然能获得更好的性能表现。CPU的内存缓存与DMA操作结合使用时,可能导致对内存中数据的一致性视图出现问题——例如,设备无法看到只存在于CPU缓存中的数据。中保存设备可见的物理地址范围。说实话,我怀疑现在还有多少真正支持scatter-gather的设备存在明显的限制,以至于需要通过合并DMA段来获得实质性好处——我一直在想,现在也许应该默认关闭这种行为,改为让调用者通过属性显式请求。
2025-04-29 04:09:00
642
原创 Inline socket-local storage for BPF
对于像 Meta 这样清楚每个 socket 的 BPF 程序需要多少存储空间的公司来说,这样可以预先配置合适的大小,从而完全避免双重解引用和缓存未命中的问题。Lau 解释说,目前创建每个 socket 的 BPF map 时,所用的内存会计入创建该 map 的用户空间程序。另一位开发者提出,如果一个 BPF 程序在内联存储中预留了空间,但随后被用户空间重新加载——那么会进行新的分配(让旧分配成为垃圾),还是以某种方式复用旧分配?遗憾的是,本次讨论在最终敲定设计方案之前,就已经到达了预定的会议结束时间。
2025-04-29 03:44:20
674
原创 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
800
原创 ACCESS_ONCE()
如果代码总是在持有相关锁的情况下访问共享变量,且该变量只会在锁释放后由其他线程修改,那么编译器就不会引入这些微妙的问题。只有在访问共享数据时既没有加锁,也没有明确使用屏障的地方,才需要像 ACCESS_ONCE() 这样的构造。在这样的系统上,编译器为了生成性能最优的代码,必须仔细选择哪些值保存在寄存器中。这个宏的功能其实正如其名字所描述的那样:它的目的是确保生成的代码对传入参数的访问恰好发生一次。这段代码是自适应自旋的一部分,目的是在当前持有者释放互斥锁后,尽快获取它,而不必进入睡眠状态。
2025-04-27 18:34:11
512
原创 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
658
原创 Some __nonstring__ turbulence
但 Fedora 42 已经发布,而 Fedora 的开发者选择在默认编译器中使用 GCC 15 的预发布版本,这一决定无论好坏,延续了 Red Hat 的一贯传统。为了解决这些问题,Torvalds 自行制作了一系列修改,并在发布前两小时将它们直接合入主线,其中包括一个修复 ACPI 子系统警告的补丁,以及另一个修复多个警告(包括上文示例)的补丁。不幸的是,这些最后时刻的更改破坏了在 GCC 15 预发布版本之前的所有编译器上的构建,这可能会给未使用 Fedora 42 的开发者带来一些不便。
2025-04-25 15:19:08
786
原创 Freezing filesystems for suspend
在那次发布时,他遇到了一些锁相关的问题,并在今年的会议开头再次提起这些问题。当时 VFS 层与块设备层之间的冻结逻辑存在一些锁顺序反转问题,但现在这些问题已经被理清,“就我看来,从锁的角度来说应该是安全的”。虽然他已经有一个解决方案,尽管实现比较难看,但他认为如果能有一种通用 API,其他文件系统也能从中受益,在系统挂起-恢复周期中提供更好的一致性保证。这些设备可能有脏数据需要刷写,但当数据刷新时,底层文件系统已经被冻结,因为块设备是在文件系统之后被冻结的,这可能导致死锁。
2025-04-25 13:06:10
1016
原创 VFS write barriers
在 2025 年的 Linux 存储、文件系统、内存管理与 BPF 峰会(LSFMM+BPF)的文件系统议题中,Amir Goldstein 希望继续讨论一个他在 2023 年峰会最后一场会议中简要介绍过的特性:文件系统的“写屏障(write barriers)”。在会议稍后的讨论中,Jeff Layton 提问后,Goldstein 进一步解释了他的使用场景:目标用户是拥有“非常大数据集”的用户,他们需要云同步、数据复制等功能。在他的应用中,变更日志用于记录所有文件系统的变更,以确保没有遗漏;
2025-04-24 16:05:57
667
原创 Code signing for BPF programs
为了解决这一问题,Boscaccy 考虑过几种方案,包括将执行重定位、创建 BPF 映射等任务的 BPF 程序加载器移入内核,或采用一种基于 “轻量骨架(light skeletons)” 的方法,让一个 BPF 程序为另一个程序执行重定位。重要的是,这个第二签名不仅覆盖修改后的 BPF 程序,还包括原始签名,从而建立一条信任链:从最初构建 BPF 程序的一方,到签名过的 libbpf 加载器,再到最终提交给内核的对象。签名密钥的分发管理也是一大难题,尽管这并非该方案独有的问题,Wang 补充道。
2025-04-24 03:30:49
673
原创 DMA addresses for UIO
一旦加载该模块,用户空间驱动就可以打开相应的 /dev/uioX 设备,将内存区域映射到自己的地址空间,利用该映射对设备进行编程,并通过读取设备文件描述符来等待中断。而在更复杂的系统中,这种“物理地址”可能处于设备所在总线的独立地址空间中,甚至还需要通过 I/O 内存管理单元(IOMMU)进行地址转换,并进行相应的编程。他还补充说,这项提案“从根本上就是错误和不安全的”,并表示如果他的建议无法满足需求,那么唯一的替代方案就是编写一个完整的内核驱动。如今,在一些人看来,UIO 所提供的价值甚至可能是负面的。
2025-04-23 15:08:02
737
原创 Indirect calls in BPF
Protopopov 对这个方案并不确定,因为它并不能解决静态键引用多个映射的问题,但 Starovoitov 建议他尝试添加一个额外的间接层,使静态键可以指向多个映射组成的表。验证器在执行死代码消除及其他转换时,会保持这些指令地址的更新状态——这正是需要一种专用映射类型的原因,而不是仅依赖于 BPF 程序中的硬编码偏移。在目前的代码状态下,尝试创建第二个使用同一个指令集映射的 BPF 程序实例会直接失败——因为当验证器要修改指令位置时,该映射已经被冻结,导致验证过程失败。而对于静态键,用于运行时更新的。
2025-04-22 15:24:22
484
原创 The problem of unnecessary readahead
在页大小较小的系统上,这些填充数据毫无用处,完全可以保留在磁盘上不动,但预读机制仍然会将它们加载进页缓存,带来了无意义的 I/O 并浪费内存。文件中的空洞(hole)可以在内核中标记,当进程访问这些空洞时,直接映射到零页(zero page)。Singh 指出,在这些场景中,即使不需要的数据位于映射区域之外,预读机制依然会把它们加载进来。随着本场讨论(以及整场会议)进入尾声,Hildenbrand 提出,与其尝试对这些“边角案例”进行优化,不如干脆在遇到文件空洞时立即停止预读,或许这就足够了。
2025-04-19 15:08:39
428
原创 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
653
原创 Memory controller performance improvements
在 2025 年的 Linux 存储、文件系统、内存管理和 BPF 峰会的内存管理专题中,Shakeel Butt 主持了一个会议,讨论内存控制器的当前状态以及如何降低其开销。Hocko 表示,目前的基础设施已被很好地优化,因此添加一个允许返回过期数据的接口,或许确实是合理的下一步。也有人请求提供关于“内存余量”的更好信息——即一个控制组还可以使用多少内存,或者说,在耗尽资源前还能再使用多少。他提到,去年他主持了一个专门讨论弃用版本 1 内存控制器的会议,这是逐步淘汰对版本 1 控制组支持的关键步骤。
2025-04-18 01:08:05
585
原创 Parallel directory operations
这些补丁的主要障碍在于:虽然目录的 i_rwsem 被作为共享锁获取,但目录项(dentry)却是用独占锁来保护的,这就带来了大量潜在的死锁可能性。比如说,在使用 NFS 的场景中,如果多个文件在同一个目录中被创建,这些操作会在客户端被串行化,这意味着在真正执行前需要进行大量网络往返。Brauner 表示他并不喜欢引入大量新的 inode 操作,但如果这个思路可行,可以为现有操作添加一个异步形式,只对选择启用该特性的文件系统启用。后缀的新 inode 操作,“虽然看起来有点丑”,但这只是“表面问题”。
2025-04-17 18:17:13
888
原创 Improvements for the contiguous memory allocator
简而言之,在具有大页大小的系统中,为了使用 CMA,需要预留极大的内存区域。CMA 区域的大小也必须是页块大小的整数倍。但 CMA 的缺点是,有时(正如两天前的讨论中提到的),那些“可移动”的分配实际上可能并不可移动;与最初的 cleancache 设计一样,可保证的 CMA 会存储干净的、由文件支持的页面,这些页面可以按需丢弃。另一种方法是将 ARCH_FORCE_MAX_ORDER 配置参数设置为较小的值,比如 7,这会导致页块变小,从而减少内存浪费,但同时也会让大页的分配变得更困难。
2025-04-17 16:56:21
757
原创 Topics from the virtual filesystem layer
在 VFS 中,有一种称为匿名挂载命名空间(或者“分离挂载树”,看你怎么叫)的概念,这种挂载命名空间存在于内核中,但进程无法使用 setns() 进入它;他指出,这是个问题,因为例如一个进程可以持有该命名空间的文件描述符,从而将一些对象钉在内存中,但用户空间却无从得知是谁造成了内存被钉住。内核中有一个用于挂载命名空间的红黑树,但它是通过为每个命名空间分配的序号来索引的;在高并发场景下,该机制带来了 3-5% 的性能提升,“这显然是很不错的”,但他认为,这只是将可扩展性问题往后推了一步。
2025-04-16 19:40:24
920
原创 Automatic tuning for weighted interleaving
Liam Howlett 回应称,这种调整的职责显然应在用户空间,因为内核不可能知道用户的意图。Gregory Price(最初设计加权交错功能的人)指出,目前还没有接口允许一个进程调整另一个进程的权重,而这正是用户空间方案所需要的。他强调,带宽才是限制系统性能的最终因素,比单次内存访问的延迟更重要。权重值也应尽可能小;因为权重实际上是指在切换节点之前从该节点分配的页面数量,权重越小,分配分布得就越快。Hocko 的回答是否定的,他表示 NUMA 接口最初是为静态硬件设计的,甚至在当前的系统中也表现不佳。
2025-04-15 23:36:43
484
原创 The future of 32-bit Linux
通常来说,前沿技术往往生命周期较短,很快就会被下一代替代;而那些能以更低成本完成任务的技术则可能流行多年,甚至几十年。这一规律在摩托罗拉 68000 架构、Arm9 CPU 核心,以及 Raspberry Pi Zero 开发板上都得到了体现——它们都比多个更先进的替代品存活得更久。正是这种现象让期待 highmem 终结的人们燃起希望,因为需要 highmem 的硬件通常是五年前的先进产品,预计会在未来五年内逐渐退役。
2025-04-15 17:44:55
1113
原创 The state of the memory-management development process, 2025 edition
但如果不把 mm-unstable 推送到 linux-next,里面的补丁就无法获得更广泛的测试,最终会影响 mm-stable 的稳定性。Morton 说,有些改动可以直接进入 mm-next,而 mm-unstable 将成为规模较大或尚未审查代码的第一站,具体情况由他判断。Liam Howlett 表示,除非是某个大型项目的一部分,他通常不会接受纯清理性质的补丁,因为这些清理操作常常会破坏一些微妙的东西。总体来说,Morton 表示,如果有人希望他做某件具体的事,直接告诉他就好。
2025-04-15 03:36:41
893
原创 Managing multiple sources of page-hotness data
这类来源之间存在一定共通点。他指出,现在需要的是一种高效的数据结构来聚合这些方法产生的数据。Jonathan Cameron 在 2025 年的 Linux 存储、文件系统、内存管理和 BPF 峰会的内存管理专题中指出,这类数据的来源正在不断增多。Cameron 本人关注的是 CXL 的“热度监控单元”,它可以提供某个 CXL 内存模块中哪些页面被访问过的详细数据,但除此之外还有很多其他数据来源。不同的数据来源提供的信息各异,可能包括也可能不包括虚拟地址、进行访问的 NUMA 节点,或是访问发生的时间。
2025-04-12 13:35:57
857
原创 Inlining kfuncs into BPF programs
当校验器在校验过程中遇到对该函数的调用时,会设置一个特殊的校验状态,用于传递参数和 BPF 栈的信息到用于校验该函数实例的代码中。这个方法的问题在于,当前的 BPF 并不依赖架构——相同的程序可以在任何支持 BPF 的架构上无需修改地运行——但 kfunc 可能包含架构相关的代码。在他最初的 RFC 中,他聚焦于 bpf_dynptr_slice(),并展示了通过内联可以消除来自 switch 和 if 语句的跳转,在他的合成基准测试中带来 1.53 倍的加速。内联的理由,和以往一样,是为了优化。
2025-04-12 13:26:22
657
原创 Atomic writes for ext4
Mujoo 描述了 ext4 原子写入支持的路线图:基于 bigalloc 的多块写入补丁集,以及为 ext4 添加 extsize 和 forcealign 支持的补丁集,目标是在 Linux 6.16 中合并。ext4 的 bigalloc 特性可以消除非对齐 extent 的问题,因为文件系统的簇大小可以设置为例如 16KB,这样所有内容都将在这些边界上对齐。但这是一个针对整个文件系统的设置,即使只需对少数文件进行原子写入,也必须使用这个设置,而且需要重新格式化现有文件系统才能启用。
2025-04-11 19:27:13
754
原创 Preparing DAMON for future memory-management problems
Park 表示,目前已有多个方案在探讨如何获取这些数据,包括工作集报告、来自 CXL 控制器的热度监测、访问位扫描(当天早些时候曾讨论过)、AMD 的基于指令采样功能提供的数据、多代 LRU 提供的数据等等。他还表示,随着来自多个来源的访问数据越来越细粒度,DAMON 所跟踪的区域将变得更细,整体数据密度更高,DAMON 的跟踪负担也将随之增加。他希望合并自己在生成 NUMA 使用率和空闲空间目标度量方面的工作,并实现一个“开箱即用”的分层模块,适合主线内核集成,能自动识别系统的内存层级。
2025-04-11 15:44:35
593
原创 Improving hot-page detection and promotion
对此 Rao 回应说,目前的实现中,只要观察到第一次访问就会提升页面,因此后续访问的数据缺失不是问题。另一种可能性是,系统可以扫描最快级别内存中的页面,观察某个地址空间的页面目前主要聚集在哪些节点上,然后将其他页面提升到这些节点。Rao 表示,他的实现总体上显著降低了应用程序的延迟,但并未具体回应锁的问题。该线程会维护一个进程地址空间的列表,并对每个地址空间执行“访问位(A-bit)”扫描:清除 PTE 中的“已访问”位,然后稍后再次扫描,看哪些 PTE 的该位被重新置位,从而判断其是否在此期间被访问。
2025-04-10 15:40:45
1014
原创 Two approaches to better kernel samepage merging
他表示,在代码打补丁时,可以为修改后的文件创建一个新的 inode,并存储在相关的虚拟内存区域中。内核目前的 uprobes 机制可以为运行中的进程打补丁,但它会影响所有运行该代码的进程,而他希望将影响限定在单个进程内。因此,他设想新增一个系统调用用于代码补丁,在其中创建一个新的覆盖层,用于跟踪每个用户对某个二进制文件的修改。不过,这种机制的最大限制是,一旦两个页面产生差异,它们就不再被合并,即使它们未来的内容再次一致也是如此。系统调用,该调用接受一个分区名称作为参数,并返回一个表示该分区的文件描述符。
2025-04-10 15:32:48
918
原创 Per-CPU memory for user space
Desnoyers 开场表示,他的目标是帮助用户空间开发者更好地利用可重启序列(restartable sequences),该机制允许在关键区段中,如果进程被迁移,则中断其访问,从而便于访问 per-CPU 数据。这本质上类似于以缓存行对齐的数组方式,但分配器会在每个 CPU 的区域内进行紧凑打包,从而减少不同 CPU 区域间的内存浪费。他表示,内核的 per-CPU 分配器会在每个 CPU 上映射一段地址空间,用于访问该 CPU 的本地内存空间;目前,他采用了一种“不太方便的替代方案”,通过几次。
2025-04-09 15:56:11
1177
原创 The rest of the 6.15 merge window
该子系统过去存在争议,但 2024 年的维护者峰会达成共识,同意将其合并。尽管这看起来可能不太直观(或不够高效),但这里的逻辑是,许多现有的 epoll 事件循环可以轻松地部分转换为基于完成(completion-based)的模型,但仍受限于一个或少数几个仍基于就绪状态(readiness-based)的事件类型。BPF 子系统增强了对包含循环的程序的验证能力,新增了一些 load-acquire 与 store-release 指令,支持在 BPF 程序中修改文件的扩展属性,并引入了一个带定时的。
2025-04-08 16:16:19
1027
原创 An update on pahole
Pahole(原名“Poke-a-hole”)是一款用于探索和编辑调试信息的多功能工具,就像“瑞士军刀”一样。目前,Pahole 还参与了内核的构建过程,将不同编译器生成的信息重新整理为 BPF 验证器可用的格式,尽管将来有计划使其变得不再必要。Pahole 的维护者 Arnaldo Carvalho de Melo 在 2025 年的 Linux 存储、文件系统、内存管理与 BPF 峰会上分享了该项目的一些最新进展。感兴趣的读者可以在这里找到他的演示文稿。
2025-04-08 15:37:39
812
原创 A new version of modversions
该工具读取并解析已经经过预处理的 C 源文件,收集该文件导出的每个符号的定义,计算每个定义的校验和,并以构建流程可以访问的格式输出结果。然后,内核中的 modpost 工具使用这些信息生成一个 C 源文件,该文件填充一个特殊的 ELF 段,其中包含符号(导出和使用的)及其校验和。不过,总体而言,评审者们对这个补丁系列当前的形式还是比较满意的。裸露的 union 类型与 Rust 的编程哲学相悖,因为它无法保证任何时刻所访问的是正确的字段,因此社区有人建议采用一种更复杂的方式来实现类似功能。
2025-04-07 20:00:17
685
原创 A strange BPF error message
在他演讲的最后阶段,他还讨论了优化过程中改变函数签名所带来的问题——这是 José Marchesi 在前一场会议中也提出过的问题。可惜的是,这种做法并不适用于 BPF 程序。优化器将一个函数内联到另一个函数中,发现程序在读取一个未初始化变量(这属于未定义行为,优化器认为这种行为不可能发生),于是判断这段代码是不可达的。这在某种程度上是有效的,因为生成的程序不会再被拒绝,但也可能掩盖了真实的 bug。在 C 语言中这不是非法的,因为被调用的函数可能会对变量进行初始化,因此 Clang 不会发出警告。
2025-04-07 18:08:37
751
原创 Page allocation for address-space isolation
保护进程即将读取的页面本无意义,但由于页面缓存中可能包含进程无法访问的数据,因此不能将整个缓存统一标记为非敏感。因此,当前的实现是:即使只需要一个页面,也会分配整个页面块,然后释放zone锁,执行TLB失效,再重新获取zone锁。这种方式可以工作,但存在一个令人担忧的情景:如果系统中的所有CPU同时尝试分配敏感页面,它们都会执行上述“舞步”,从而互相触发TLB失效,造成冲击。Jackman继续表示,如果清零的开销过大,那么分配器可能就需要重复前述的“取消映射舞步”,或者使用页面标志来逐页进行清零。
2025-04-05 22:21:48
541
原创 Supporting untorn buffered writes
在去年的 Linux 存储、文件系统、内存管理与 BPF 峰会(LSFMM+BPF)上,曾讨论过原子写入问题,并附带了一些补丁,为块层和 XFS 的直接 I/O 添加该功能。这些工作已被合并,但讨论的另一部分内容是是否为缓冲 I/O 添加该功能,部分原因在于 PostgreSQL 数据库目前需要采用许多复杂手段来确保写入在发生错误或崩溃时不会“撕裂”(即部分写入)。
2025-04-05 20:48:04
853
原创 The state of guest_memfd
在有硬件支持的实现中,主机如果尝试访问 guest 的私有内存,甚至可能触发机器检查,导致系统崩溃。仍可以通过将私有内存从主机的 direct map(直接映射)中移除,来实现一定程度的设备隐私保护,使得主机无法对其寻址。然而,主机依然保留对这部分内存的访问权限,这意味着它可以轻松地查看这些内存中的数据,即便这些数据是虚拟机希望保密的。子系统中分配内存,但随后将其转换为普通 folio,如果需要,可以将其映射或拆分,以便将其中较小的部分在共享与私有之间转换。但如果主机尝试访问私有页,依然会触发总线错误。
2025-04-05 16:49:20
902
原创 An update on GCC BPF support
pahole 的维护者 Arnaldo Carvalho de Melo 表示,pahole 可以通过检查 BTF 的生成者来识别,因此这并不成问题——尽管长远目标是从 BPF 编译流程中移除 pahole,所以 GCC 最终还是需要生成符合内核预期的标签。总体而言,该项目正稳步向对 BPF 的全面支持推进,目前在使用 Faust 正在开发的补丁后,大多数自测已能通过。然而,朝着这一目标的推进也暴露了 Clang 对 BPF 支持中的一些问题,需要进行深入讨论,以为两个项目找到共同的前进道路。
2025-04-04 16:30:25
782
原创 Approaches to reducing TLB pressure
但目前内存管理子系统主要支持的是 PMD 级别的大页,在多数系统上大小为 2MB,这容易因内部碎片而增加内存压力,反而抵消了大页带来的好处。如果内核能使用更多不同大小的透明大页(mTHP),就能更好地利用这一特性,在降低内部碎片的同时提升 TLB 利用率。他还在努力减少页面回收时所需的 TLB 刷新次数。因此,即使没有 TLB 利用率的提升,使用更大的页面也是值得的。在会议即将结束时,David Hildenbrand 指出,在 AMD CPU 上,要实现 TLB 合并,某一范围内页面的页表项必须一致。
2025-04-04 15:43:05
466
原创 The end of tasklets
对于这样一个重要的新特性来说,这是一个相对较快的进度,但 WQ_BH 依赖于已有的工作队列 API,而 tasklet 机制已经被开发者们希望移除多年。Linus Torvalds 建议,与其修复 tasklet,不如在 softirq 上下文中引入一种新的工作队列,以提供比普通工作队列更低的延迟。工作队列维护者 Tejun Heo 实现了这个想法,推出了一种新的工作队列类型——WQ_BH,它在原子上下文中执行,并且保证在同一 CPU 上运行。要移除整个软件中断子系统,将是未来的任务。
2025-04-02 21:51:40
792
【电信基础设施】OTII服务器系列产品演进与应用:从1U到2U及OTII-E的边缘计算部署方案综述
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
Linux内核内存管理:支持多尺寸匿名页 Folios 提升性能的技术探讨与应用前景
2025-01-25
2023年Linux内存管理中的folio机制进展与挑战-内存子系统重构现状
2025-01-25
Linux内核内存管理中的folio机制更新及其对文件系统的影响
2025-01-25
Linux 内核 Folio 技术及其对未来文件系统优化的影响探讨
2025-01-25
Linux 内核进展:页组管理、多代LRU替换算法及Rust语言支持的技术探讨与实践
2025-01-25
Linux内存管理中folios提案的技术争议与讨论
2025-01-25
Linux内核开发领域的关键话题探讨:内存管理、任务隔离与并发调度进展及其应用
2025-01-25
Linux NFS服务器转向iomap与folios接口以提升性能与兼容性
2025-01-25
内存管理优化之页合集概念-Linux 内核引入 page folio 技术解析与讨论
2025-01-25
InfiniBand架构物理层规范1.5版更新:涵盖新技术标准和改进
2025-01-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人