perf: adapt task buffer batch size to backlog - #92
Conversation
|
你好 |
|
@lcccy5 有没有benchmark作为对比? |
|
@lcccy5 项目结构已经更新,你重新拉最新的下来 |
batch 1:约 13~14 ns/task |
好的 |
|
@lcccy5 补充一下benchmark测试函数 |
f8b2412 to
cb7b506
Compare
|
现在好了吗 麻烦看看 @Yiming1997 |
cb7b506 to
c506d6f
Compare
|
@lcccy5 |
|
|
|
PR #92 审核意见:不予通过 感谢提交 PR #92。我已完成对测试结果的审核,并与 结论PR #92 当前不予通过。 使用test工具在 30 个对齐测试场景中,对比了 PR 分支与
具体数据: 差异计算方式:
PR 分支总耗时为 主要问题
最终意见PR #92 我们无法批准合并。如果要重新提交,建议使用test工具完成测试,确认新版本性能更优后提交 如有疑问,可随时在此 PR 下讨论或联系审核人。感谢你的贡献与理解。 |




你好呀 你看看我的这个优化可以不 谢谢
背景
worker 从溢出任务缓冲区消费任务时,原实现固定每次取 8 个任务。
在低积压场景下,较小批次有利于任务公平性;但在高积压场景下,固定小批次会导致 worker 频繁竞争
taskMu,增加共享缓冲区的锁开销。改动内容
≤ 8:每次消费 1 个任务,优先低延迟与公平性;9–64:每次消费 8 个任务;65–512:每次消费 32 个任务;> 512:每次最多消费 64 个任务,降低高负载下的锁竞争。taskMu时计算,避免额外读取队列长度带来的重复加锁。预期收益
taskMu的获取次数,降低溢出队列竞争。验证
已执行并通过:
go vet ./... go test -short ./... git diff --check