关于

此页面包含 ETS 基准测试的结果,展示了新的 ETS ordered_set 实现的性能和可伸缩性。新的 ETS ordered_set 实现仅在将选项 {write_concurrency, true} 传递给 ets:new 函数时启用。在添加新的实现之前,write_concurrency 选项与 ordered_set 结合使用时对创建的表没有影响。以下论文描述了新的 ETS ordered_set 实现所基于的数据结构(争用自适应搜索树)

一种用于并发有序集合的争用自适应方法。《并行与分布式计算杂志》,2018 年。Kjell Winblad 和 Konstantinos Sagonas。(出版商预印本

使用自适应的更可伸缩的 ETS 有序集合。在第十三届 ACM SIGPLAN Erlang 研讨会 (2014) 上。Kjell Winblad 和 Konstantinos Sagonas。(出版商预印本

基准测试描述

该基准测试衡量了 X 个 Erlang 进程在单个表上每秒可以执行多少 ETS 操作。每个 X 个进程都会从给定的一组操作中重复选择一个操作来执行。基准测试还给出了选择某个操作的可能性。在每次基准测试运行开始之前,进程操作的表会预先填充 50 万个项目。基准测试的源代码位于函数 ets_SUITE:throughput_benchmark/0 中(请参阅“$ERL_TOP/lib/stdlib/test/ets_SUITE.erl”)。以下是操作的简要描述列表

基准测试机器和 Erlang 参数

机器配置

机器
Microsoft Azure VM 实例:Standard D64s v3(64 个 vcpu,256 GB 内存)

操作系统

Description:	Ubuntu 18.04.2 LTS
Linux version:	4.18.0-1014-azure
      

Erlang 参数

erl +sbt tnnps

基准测试结果

ETS 基准测试结果查看器

此页面从 ETS 基准测试生成的数据生成图表,该基准测试在函数 ets_SUITE:throughput_benchmark/0 中定义(请参阅“$ERL_TOP/lib/stdlib/test/ets_SUITE.erl”)。

请注意,可以将多个基准测试运行的结果粘贴到下面的字段中。来自同一场景但来自不同基准测试运行的结果将被重新标记,并自动绘制在同一图中。这使得比较不同 ETS 版本变得容易。

另请注意,可以通过单击相应的标签来隐藏线条。

将生成的数据粘贴到下面的字段中,然后按“渲染”按钮

包含吞吐量图
包含吞吐量比最差情况高 % 的图
包含吞吐量比最佳情况低 % 的图
条形图
点之间相同的 X 间距
显示 [ordered_set,public,{write_concurrency,true},{read_concurrency,true}]
显示 [set,public,{write_concurrency,true},{read_concurrency,true}]