< 返回版块

Mike Tang 发表于 2024-06-22 08:12

从0到性能英雄:如何在Rust中评测及调优你的eBPF代码

这篇文章讨论了使用eBPF(扩展的伯克利包过滤器)来分析和基准测试代码。eBPF是一种强大的技术,允许开发人员在无需更改内核源代码或添加额外模块的情况下,在Linux内核中运行沙盒程序。这种功能特别适用于性能监控、安全性和网络管理。

文章的主要内容包括:

eBPF简介:文章解释了什么是eBPF及其在Linux生态系统中的重要性。eBPF允许在内核空间内执行自定义代码,为各种应用提供深入的洞察和高灵活性。

使用场景:文章重点介绍了eBPF的各种使用场景,如跟踪系统调用、监控网络数据包和分析性能指标。这些功能使eBPF成为开发人员和系统管理员的宝贵工具。

性能分析:文章的主要焦点之一是使用eBPF进行性能分析。文章描述了eBPF如何用于收集详细的性能数据,从而帮助识别瓶颈并优化系统性能。

基准测试:文章提供了有关如何使用eBPF进行应用程序基准测试的见解。文章强调了准确和详细性能数据的重要性,eBPF能够在不显著增加开销的情况下提供这些数据。

工具和技术:文章讨论了几种使用eBPF的工具和技术,包括bpftrace(一个用于eBPF的高级追踪语言)和perf(一个性能分析工具)。这些工具使用户能够编写eBPF程序并高效地收集性能数据。

案例研究:实际示例和案例研究展示了eBPF在现实场景中的应用。这些示例展示了使用eBPF进行性能监控和故障排除的好处。

总的来说,文章强调了eBPF在通过详细的监控和分析提高系统性能和安全性方面的多功能性和强大功能。

https://www.infoq.com/articles/benchmark-profile-ebpf-code/

korhah - 一个小的响应式事件系统

响应式事件系统就是注册事件,发射事件,是一种将业务逻辑解耦的方法。

https://github.com/konall/korhah

一种新的试验,利用Burn项目在GPU上进行科学计算

这个项目试验看burn能否与maturin/PyO3配合在Windows和Linux上使用。

https://github.com/relativityhd/maturin-burn-test

Rust用于科学软件开发

作者认为Rust很适合用于科学软件开发(以前主要是Python的场景)。

https://kurt-rhee.github.io/2024/06/18/rust-for-scientific-software-development

Future的“活性”问题

文章讨论了Rust语言中的异步计算问题,特别是涉及Future的“活性”问题。Future只有在被定期poll时才会进展,否则可能会发生停顿,导致如AsyncMutex死锁和意外超时等问题。为解决此问题,作者建议在Future的poll方法中增加规则,确保被唤醒后Future能及时被poll。此外,文章还讨论了该规则对异步迭代器的影响,以及潜在的解决方案如内部迭代和poll_progress方法。

https://skepfyr.me/blog/futures-liveness-problem/

--

From 日报小组 Mike

社区学习交流平台订阅:

评论区

写评论
eweca-d 2024-06-24 15:11

实际上不比生产环境奇怪的东西少。。。。各种不靠谱的输入数据文件,缺一点多一点常有的事。还有就是干各种脏话的时候,加了各种tricks去过滤奇怪的数据,然后就越界了。开发时间很少,要写的循环太多,顾不上写各种test,但是又要求循环性能很高。最糟糕的是,很多时候都是很边角的地方,真越界了可能最后看起来也只是有点奇怪而已,还以为只是outliers。

--
👇
asuper: 搞学术的一般都对数据范围有把握的把,不像生产环境啥奇怪的东西都会进来。如果你的计算经常会越界,那应该赶紧改数据结构,或者改算法

asuper 2024-06-24 11:37

搞学术的一般都对数据范围有把握的把,不像生产环境啥奇怪的东西都会进来。如果你的计算经常会越界,那应该赶紧改数据结构,或者改算法

--
👇
eweca-d: 已忽悠试验室的师兄使用rust,之前是matlab。一次计算从4s+减少到0.2s。把一些以前因为算力不敢想的idea都可以实现了。

c++也可以做到这点,但是一来vs开发太重了;二来试图让一个传统工科的学生正常使用c++库还真是挺难的;三是边界检查大部分时候还挺有用的,实测现在很多时候使用get_unchecked提升也不大,应该是编译器绕过边界检查比以前更智能了?

科学计算也基本不涉及生命周期,开发体验非常好。

eweca-d 2024-06-24 09:39

已忽悠试验室的师兄使用rust,之前是matlab。一次计算从4s+减少到0.2s。把一些以前因为算力不敢想的idea都可以实现了。

c++也可以做到这点,但是一来vs开发太重了;二来试图让一个传统工科的学生正常使用c++库还真是挺难的;三是边界检查大部分时候还挺有用的,实测现在很多时候使用get_unchecked提升也不大,应该是编译器绕过边界检查比以前更智能了?

科学计算也基本不涉及生命周期,开发体验非常好。

1 共 3 条评论, 1 页