6.1 互联网计算机的性能
这篇文章主要介绍DFINITY基金会对互联网计算机的性能评估。该评估测试起始点时间为2021年11月。
互联网计算机的拓展性来自于将IC分片为子网区块链。每个子网区块链都可以独立于其他子网处理来自入口消息的调用(写入)。IC可以通过增加更多的子网来扩大规模,以增加更多网络流量(因为应用程序可能需要跨子网进行通信)。在目前的形式下,IC应该能够扩展到数百个子网。
子网中的节点可以在本地处理查询调用(读取)。因此,对查询调用的响应可以具有较低的延迟,因为查询只需要单个节点的响应,而不需要节点间的通信或共识。一个子网的节点越多,它可以处理的查询调用就越多;IC 拥有的节点越多,它可以处理的查询调用也就越多。
测试设置
实验是对所有子网同时进行的,只有NNS和一些最常用的应用程序子网除外,这是为了避免对现有IC用户的干扰。IC 有一组边界节点,可以将调用路由到存储子网的核心节点。实验将负载(loads)直接发到子网上,并没有通过边界节点路由流量。边界节点有额外的速率限制,相比于IC 可以处理的速率,边界节点目前设置的速率稍微保守一些,因此在边界节点上运行将不适合进行性能评估。实验同时针对每个子网中的所有节点,这和边界节点所做的事情非常相似,如果我们用边界节点的话。
该实验包括在每个子网中安装一个计数容器。这个计数容器本质上是一个无操作容器。它只维护一个计数器,可以通过查询调用来被查询并通过更新调用来增量。计数器的值不使用Orthogonal Persistence,因此IC的执行层的开销(overhead)是最小的。强调计数容器可以看作是确定系统开销或基本性能的一种方式。
测试
更新调用
互联网计算机目前每秒可以持续更新11000次以上,持续时间为4分钟,最高可以超过11500次更新/秒。
我们在这里测量的更新调用是由IC外部发送的入口消息触发的。
查询调用
更重要的是查询调用,因为它们贡献了我们在IC上观察到的90%以上的流量。
互联网计算机目前每秒最多可以处理250,000个查询。在实验过程中,每个负载(load)都会逐渐增加并运行5分钟。
结论和后续步骤
互联网计算机现在的性能表现令人印象深刻。在此之上,可以进一步扩展IC的使用:
更多子网:这将立即增加查询和更新调用吞吐量。虽然添加子网最终可能会引发其他扩展性的问题,但目前IC应该能支持数百个子网。
性能提升:提高性能还可以通过更好的单机、网络和共识性能的调试来实现。将性能提高至少一个数量级是有可能的。