介绍中央调度器:Agave v1.18 - Anza 的可选功能

  • Anza
  • 发布于 2024-04-28 12:45
  • 阅读 34

本文介绍了Anza发布的Agave v1.18版本中的中央调度器功能,该调度器旨在减少Solana网络中块生产的事务冲突,提升处理效率。中央调度器通过引入新的调度线程及优先费计算方式,优化了事务处理过程,相较于旧调度器表现出更高的费用收集能力和更小的交易成本。文章结构清晰,逻辑严谨,深入探讨了调度器的原理及其影响。

在本文中,我们介绍了 Agave v1.18 版本中 Anza 的一个重要新元素:中央调度器。此前称为“调度器”的中央调度器代表了 Agave 客户端的重要进步,它将使 Solana 网络中由领导者(被选中生产下一个区块的验证者)进行区块生产时的交易冲突显著减少。

默认情况下,“新”的即“中央调度器”是禁用的,必须通过在启动验证者时包含“--block-production-method central-scheduler”选项来开启。在未来的版本中,中央调度器将成为默认调度器。目前,它仅供选择启用。

在我们于2024年初启动后,Anza 从 前Solana Labs GitHub 仓库中分叉了 Solana 验证者。它现在由由前 Solana Labs 工程师组成的 Anza 核心工程团队积极开发,名称为“agave”。对 Solana 核心协议的技术改进是 Anza 使命的一个关键要素。中央调度器的开发在 Anza 分拆之前已开始,并计划包含在 Agave 的 v1.18 版本中。

调度器的作用是什么?

在 Solana 协议中,交易通过网络路由,进行优先级排序并传递给“领导者”即在特定时间被选中生产下一个区块的验证者。在“领导者模式”下,验证者利用其 TPU(交易处理单元)并且 可以在任何给定时刻同时处理多达 50,000 个交易。TPU 在五个不同的阶段处理交易:Fetch,SigVerify,Banking,Proof of History Service,Broadcast。调度器是 TPU 的一个关键组件,负责在银行阶段对涌入的交易进行序列化、排序和处理。它是 Solana 区块创建的高性能基础元素。

为什么需要新的调度器?

之前的调度器利用了 4 个“非投票交易”线程,它们从一个公共队列中提取交易,并尝试使用“贪婪”的多迭代器算法对这些交易进行序列化和处理。

采用贪婪算法的目的是试图最大化交易处理的吞吐量。然而,最终发生的情况是,这四个工作线程常常尝试对冲突的交易进行“锁定”即“保留用于读/写”,导致延迟和亚优化的处理。如果你对此好奇, 你可以观看 Solana 基金会的这个视频。慢速的根本原因是,在之前的调度器中,没有任何工作线程了解其他线程在做什么,从而导致冲突。

“旧”调度器可以使用以下标志启用:

--block-production-method thread-local-multi-iterator

中央调度器如何工作

中央调度器在 v1.18 中被引入,以克服之前调度器的一个基本限制:试图对许多冲突的交易进行“锁定”,从而导致慢速和低效。中央调度器引入了一个新线程(使调度器中的线程总数从 6 增加到 7):调度线程

在之前的调度器中,每个4个非投票线程都运行自己的子例程,不断“循环”处理未处理交易的输入队列。在中央调度器中,这四个“工作马”线程不再不断循环“贪婪”,而是在未使用时可以甚至休眠。相反,调度线程负责循环,不断检查交易输入队列并在它们到达时进行处理,然后将其路由到适当的线程进行进一步处理。

中央调度器中的冲突交易将始终按优先级顺序处理,可能在同一执行线程上进行。

中央调度器的性能

测量中央调度器的性能不是一门精确的科学。区块生成阶段的目标是以一种公平的方式高效打包区块,同时最大化领导者的奖励。早期数据显示,相较于之前的调度器,费用收集提高了多达 80%。运行中央调度器的节点预计在处理具有更高优先费的交易时会更成功,而之前的调度器则会更加随机地选择交易。

也有观察到,中央调度器似乎产生区块时,平均交易费用的 CU 大小较小。在广泛部署并由网络采用之前,无法确认其性能特征将是什么。

中央调度器优先费用算法

在中央调度器中改变的另一个重要元素是优先费用(Priority Fees)的计算方式。 Solana 的优先费用是一种进一步激励验证者处理某些交易的机制,通过在计算单位上附加一个可选的费用,以微-Lamport 为单位定价。

在 v1.17 和 v1.18 默认调度器中,优先级计算为:

 Priority = Priority Fee / compute units  

在 1.18 的调度器中,优先级 变更为以下

Priority = ((Priority fee * Compute Requested) + base fee) / (1 + Compute Requested)

使用中央调度器

在 v1.18 后,了解选择所需调度器的关键标志如下:

启用之前的调度器(默认启用)

--block-production-method thread-local-multi-iterator

启用中央调度器(默认禁用)

--block-production-method central-scheduler

有关 Solana 调度器的更多阅读,请查看这篇博文:https://apfitzge.github.io/posts/solana-scheduler/

  • 原文链接: anza.xyz/blog/introducin...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Anza
Anza
江湖只有他的大名,没有他的介绍。