Aerospike UDF 的性能影响?
Performance impact of Aerospike UDF's?
我想知道在每次创建或更改某些记录时调用用 C 编写的 UDF(用户定义的函数)时我应该期望的性能影响(根据 假设,UDF 代码本身 不需要时间 - 我会自己优化它)。
假设我的硬件能够 运行在 200k writes/s 上设置 SSD 持久命名空间,我可以期望每次使用 UDF 运行 至少 50k writes/s ?
子问题:什么可能会限制 UDF 的性能(上下文切换?)
询问的原因是 Aerospike 正在使用这些 UDF,例如适用于大型数据类型,但根据 AS 人员的说法,它们的性能不高(与 KVS-Ops 相比)。我的用例是使用 UDF 使 Redis 集群中的各种二级索引保持最新,从而允许更丰富的实时查询(例如 intersections/unions of 5-10 二级索引)。
最好运行自己测试一下。很难预测。但我相信你应该能够做到 50k tps。
主要是 UDF 的性能受到影响,因为在调用 UDF 之前发生在后台的内存分配。如果您使用像 int/string/blob 这样的简单数据类型,那么您会过得更好。如果您在 UDF 中使用 list/map,它将进行更多内存分配,从而影响性能。
我想知道在每次创建或更改某些记录时调用用 C 编写的 UDF(用户定义的函数)时我应该期望的性能影响(根据 假设,UDF 代码本身 不需要时间 - 我会自己优化它)。
假设我的硬件能够 运行在 200k writes/s 上设置 SSD 持久命名空间,我可以期望每次使用 UDF 运行 至少 50k writes/s ?
子问题:什么可能会限制 UDF 的性能(上下文切换?)
询问的原因是 Aerospike 正在使用这些 UDF,例如适用于大型数据类型,但根据 AS 人员的说法,它们的性能不高(与 KVS-Ops 相比)。我的用例是使用 UDF 使 Redis 集群中的各种二级索引保持最新,从而允许更丰富的实时查询(例如 intersections/unions of 5-10 二级索引)。
最好运行自己测试一下。很难预测。但我相信你应该能够做到 50k tps。
主要是 UDF 的性能受到影响,因为在调用 UDF 之前发生在后台的内存分配。如果您使用像 int/string/blob 这样的简单数据类型,那么您会过得更好。如果您在 UDF 中使用 list/map,它将进行更多内存分配,从而影响性能。