Rust.cc

Rust.cc -

【Rust日报】2023-11-20 伪共享也可能发生在你身上

伪共享也可能发生在你身上 False sharing 指的是当多个CPU核心修改不同但紧密相邻的内存时,由于意外地共享了缓存行,从而发生的现象。作者的工作涉及批处理软件,该软件通过并行处理大量事件来提高速度。为了记录处理进度,作者使用了一个轻量级的进度跟踪器/计数器。然而,在使用多线程时,作者遇到了性能问题,导致代码变得比预期慢得多。 为了解决这个问题,作者首先采用了使用AtomicU64的计数器,并使用了ThreadLocal来避免多线程间的竞争。然而,性能仍然不理想。最终,作者发现问题出在 false sharing 上,即在ThreadLocal分配的数据中,由于分配在紧邻的内存区域,导致了大量的伪共享。通过添加填充以增加数据之间的间隔,作者成功解决了性能问题,使代码性能接近原始版本 原文链接 图片转 ASCII 转换器 该 Rust 工具将图像转换为 ASCII 艺术。它以图像文件为输入,根据指定的宽度和高度参数调整大小,然后将图像转换为 ASCII 字符. 下面是转换效果. github地址 strolle: 一个新的渲染器 strolle 是一个具有动态全局照明支持的实时渲染器, 纯 Rust 编写. 的目标是尝试现代实时光照技术,如ReSTIR,并测试在消费者硬件上(尤其是没有专用光线追踪核心的硬件)能达到何种程度。 strolle 已集成到 Bevy 中,但也可以独立使用(通过wgpu) github 地址 -- From 日报小组 BobQ, FBI小白 社区学习交流平台订阅: Rustcc论坛: 支持rss 微信公众号:Rust语言中文社区

伪共享是多个CPU核心修改相邻内存时共享缓存行的现象。作者在批处理软件中遇到性能问题,发现是伪共享导致的。通过使用AtomicU64计数器和ThreadLocal避免竞争,但性能不理想。最终,作者通过添加填充解决了伪共享问题,使代码性能接近原始版本。

AtomicU64 ThreadLocal 伪共享 填充 性能问题

相关推荐 去reddit讨论

热榜 Top10

观测云
观测云
LigaAI
LigaAI
eolink
eolink
Dify.AI
Dify.AI

推荐或自荐