• 【Rust 日报】2022-08-04 异步Rust的实践:性能、隐患、分析​


    Linux内核的Rust代码更新,实现了更多的功能

    Miguel Ojeda发布了最新的补丁系列,实现了Linux内核的Rust编程语言基础架构和初始样本代码。

    今天发布了Rust支持的v8版本,最初的43.6k行代码增加了可在Linux内核内使用Rust编程语言的支持。

    早在6月的开源峰会上,Linus Torvalds评论说,用于内核的Rust可以合并到Linux 5.20--现在被称为Linux 6.0。是否最终合并还有待观察,尤其是今天发布的v8补丁系列有许多新的补充内容,需要更多的时间来审查...... 因此,如果不是下周Linux 6.0的最后一分钟合并,Rust内核代码可能仍然需要更多的时间来准备。在任何情况下,它似乎正在一步步接近合并的目标。

    随着Linux内核的Rust v8系列补丁的推出,有很多代码在不断的更新,更多的内核功能现在可以通过Rust代码来实现。这些最新的补丁中的一些Rust亮点包括:

    • 升级了Rust 工具链到1.62

    • 将Rust的Linux内核绑定转移到他们自己的crate(命名为 "bindings"),以改善只有kernel crate改变时的构建时间。

    • 改进了rust-analyzer的运行速度。

    • 通过 "fs "模块增加了对文件系统的支持,包括各种新类型、文件系统参数支持、文件系统标志以及Rust中的文件系统示例代码。

    • Workqueues 支持也是Rust v8 Linux补丁中的新内容。

    • Rust v8补丁中扩展了异步支持,现在在有执行器支持、基于工作队列(workqueues)的执行器、产生执行当前任务的yield_now(),并增加了一个异步TCP echo 服务器示例。

    • Rust支持对中断的处理。

    • 最初的RCU支持。

    • 对延迟/睡眠(delays/sleeps)的初步支持。

    至于目前的状态,v8补丁系列仍然带有这样的信息: "Rust支持仍然被认为是实验性的。然而,支持已经足够好了,内核开发者可以开始研究子系统的Rust抽象,并编写驱动和其他模块。"

    对于那些对Linux内核的Rust感兴趣的人来说,更多的细节可以在内核邮件列表中看到v8补丁。

    新闻: https://www.phoronix.com/news/Rust-v8-For-Linux-Kernel

    邮件: https://lore.kernel.org/lkml/20220802015052.10452-1-ojeda@kernel.org/

    异步Rust的实践:性能、隐患、分析

    一篇异步Rust性能调优的文章,写的很详细,包括代码调优的背景等。

    博客: https://www.p99conf.io/2022/08/02/async-rust-in-practice-performance-pitfalls-profiling/

    cargo-pgoCargo子命令,用于简化PGO和BOLT优化二进制文件流程

    嗨!在过去的几个月里,我一直在使用PGO和BOLT对Rust编译器进行优化,在此过程中,我意识到使用这些工具来优化一般的Rust代码可能有点麻烦。

    这就是为什么我决定创建一个Cargo子命令,使其更容易使用PGO和BOLT(BOLT支持目前还略带实验性,主要是因为你必须自己用BOLT构建LLVM,而它并不总是完美无缺地工作)。

    作为快速科普,PGO(配置文件引导的优化)和BOLT是提高二进制文件性能的技术。你以一种特殊的方式(使用instrumentation)编译你的二进制文件,然后你在一些工作负载上执行这个修改过的二进制文件,这就产生了配置文件,然后你使用这些收集的配置文件再次编译你的二进制文件。这将有望产生一个更快、更优化的二进制文件(通常效果可以达到1-20%的改善)。

    cargo-pgo子命令将负责使用正确的编译标志和设置,为你的构建启用PGO,它将指导你完成使用这些所谓的 "反馈导向的优化 "的工作流程。下面是一个简易的例子:

    cargo pgo build        # build with instrumentation./target/.../  # run your binary on some workloadcargo pgo optimize     # build an optimized binary

    该命令允许你使用PGO、BOLT以及BOLT+PGO组合。你可以用典型的方式安装该工具:

    cargo install cargo-pgo

    你可以在这里找到这个工具。我很高兴得到任何反馈。

    Github: https://github.com/Kobzol/cargo-pgo

    热重载Rust--为了获得乐趣和更快的反馈周期

    hot-lib-reloader允许在运行中改变Rust代码,而无需重新启动。它适用于Linux、macOS(Intel)和Windows。关于为什么,它是如何工作的,以及如何使用它(以及这种方法的局限性),请阅读下面的帖子。

    ceeb7edae97428ec8fe6a76d73ce1965.png

    文末提供了一个bevy的热重载示例。

    热重载Rust: https://robert.kra.hn/posts/hot-reloading-rust/

    Zero-Copy 系列博客

    这是关于零拷贝反序列化的有趣抽象的三部曲的第一部分,我在过去一年里一直在研究。这一部分是关于使零拷贝反序列化工作得更愉快。第二部分是关于让它适用于更多的类型;而第三部分是关于完全消除反序列化的步骤。这些文章可以按任何顺序阅读,第一篇文章里包含了对什么是零拷贝反序列化的解释。

    #1: https://manishearth.github.io/blog/2022/08/03/zero-copy-1-not-a-yoking-matter/

    #2: https://manishearth.github.io/blog/2022/08/03/zero-copy-2-zero-copy-all-the-things/

    #3: https://manishearth.github.io/blog/2022/08/03/zero-copy-3-so-zero-its-dot-dot-dot-negative/

    This Week in Rust 454

    新一期的 Rust 周报速递发布,快来看看有哪些内容你曾经关注过 :)

    This Week in Rust 454: https://this-week-in-rust.org/blog/2022/08/03/this-week-in-rust-454/

    From 日报小组 Cupnfish 祝大家七夕快乐🎉

    社区学习交流平台订阅:

    • Rust.cc 论坛: 支持 rss

    • 微信公众号:Rust 语言中文社区

  • 相关阅读:
    python:xlwings 操作 Excel 加入图片
    sqlmap --os-shell(写入木马获取getshell)
    计算机毕业设计ssm基于SSM框架下水果篮子项目管理系统的设计与实现 c9pjx系统+程序+源码+lw+远程部署
    Redis哨兵模式
    MongoDB 字段类型转换
    电脑重装系统后Word表格自动换行的方法
    基于工业路由器的物流车辆无线视频监控系统
    Kafka收发消息核心参数详解
    2022牛客多校第一场补题
    (C++17) optional的使用
  • 原文地址:https://blog.csdn.net/u012067469/article/details/126169011