本文介绍了排队理论在Solana费用市场中应用的基础,探讨了如何通过建模来优化交易处理效率。重点介绍了M/M/1队列模型及其对高费和低费交易的影响,包括负载管理和动态费用底线的必要性。最后,文章还讨论了多服务器的扩展性对保持网络稳定的重要性。
Solana 对快速、高吞吐量区块链操作的承诺依赖于一个有效的费用市场,即使在高负载下也能保持网络稳定。在传统区块链中,简单的“竞标战”可以通过费用优先处理交易,但 Solana 的架构涉及多个顺序阶段:网络入口、签名验证、调度和执行。
我们为什么需要排队理论的视角? 因为当请求(交易)的到达率接近或超过系统的容量时,自然会出现拥堵。Solana 本地费用市场的方法—在某些阶段优先处理高费用交易—类似于排队系统中的经典优先级调度。通过将 Solana 的流水线转化为排队模型,我们可以:
在第 1 部分,我们介绍基本的 M/M/1 排队(单服务器、泊松到达、指数服务)。然后将其扩展为两类优先级队列,展示高费用交易在拥堵系统中的表现。最后,我们研究负载卸载(费用下限)和多服务器 M/M/k 情景。这个理论基础为第 2 部分奠定了基础,在那里我们将 Solana 的多阶段流水线映射到串联队列,并提出在不同负载下保持系统稳定的控制理论解决方案。
M/M/1 排队理论中通常首先教授这个模型,因为它的简单性:
$$\rho \;=\; \frac{\lambda}{\mu}.$$
稳定性的必要条件是 $\rho < 1$。如果 $\lambda \ge \mu$,队列将无限增长。
利特尔法则 是排队理论中的一个基本定理,描述了排队系统中项目的平均数量、项目的平均到达率和项目在系统中逗留的平均时间之间的关系。
$$L \;=\; \lambda \,\times\, W,$$
其中
$$L \;=\; \frac{\rho}{1 - \rho},$$
假设 $\rho < 1$。
$$L_q \;=\; \frac{\rho^2}{1 - \rho}.$$
$$W_q \;=\; \frac{L_q}{\lambda} \;=\; \frac{\rho}{\mu(1 - \rho)}.$$
当 $\rho \to 1$ 时,$L_q$ 和 $W_q$ 都会增长到非常大的值,显示出拥堵的特征。
M/M/1 的两类优先扩展可以捕捉高费用与低费用交易的区别。
在非抢占优先级中:
确切的公式推导可以在 Kleinrock 的排队系统 等书中找到^1。一个简化的表示:
类别 1(高费用)平均等待时间,$W_{q,1}$ 可能看起来像:
$$W_{q,1} \;=\; \frac{\rho_1}{\mu(1 - \rho_1)} + \Phi(\rho_1, \rho_2),$$
其中 $\rho_1 = \lambda_1/\mu$,$\Phi(\rho_1, \rho_2)$ 捕获类别 1 在某些时候可能需要等待已在服务中的类别 2 作业。
类别 2(低费用)平均等待时间,$W_{q,2}$ 必然更长,因为类别 1 在前面插队。
如果 $\rho_1 < 1$,即使类别 2 很大,类别 1 的等待时间仍然较低。然而,如果 $\rho = \rho_1 + \rho_2$ 接近 1,每个人 最终都会受到影响,尽管类别 1 相对表现更好。
当 $\lambda_2$(低费用到达)较高时,可以提高 费用下限 $f$,使低于 $f$ 的交易被丢弃:
$$\lambda_2^\text{eff} = \lambda_2 \times \mathbf{1}{\text{fee} \ge f}.$$
这确保了 $\lambda^\text{eff} = \lambda_1 + \lambda_2^\text{eff} < \mu$。如果 $\rho$ 保持在 1 以下,队列长度将停止激增。
实际系统可能有 $k$ 个并行“服务器”(线程、核心等)。那么模型为 M/M/k ,其稳定性条件为 $\lambda < k\mu$。优先级类别仍然可以应用,但如果 $\lambda \gg k\mu$,即使如此也会发生过载。这为 Solana 的流水线如何通过添加更多并行执行线程进行扩展奠定了基础。
让我们简要回顾一下到目前为止学到的内容:
- 原文链接: github.com/thogiti/thogi...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!