Rust数据库中的确定性模拟测试:状态机方法

2025-08-05
Rust数据库中的确定性模拟测试:状态机方法

Polar Signals团队分享了他们使用状态机架构在Rust中构建新数据库的经验,该架构将确定性模拟测试(DST)置于核心地位。与之前的Go数据库FrostDB不同,新数据库放弃了对现有调度器的控制,而是采用状态机模型,所有核心组件都作为单线程状态机编写,通过消息总线进行通信。这种方法提供了对并发、时间、随机性和故障注入的全面控制,极大地简化了DST的实现,并发现了两个关键错误。虽然这种方法需要额外的认知开销,但它能带来更精确的系统行为推理和更高的代码可靠性。

阅读更多

无服务器API S2利用持续性能分析优化性能并节省成本

2025-02-14
无服务器API S2利用持续性能分析优化性能并节省成本

S2,一个用于流数据的无服务器API,通过利用Polar Signals Cloud实现持续性能分析,显著提升了性能并降低了成本。S2面临CPU使用效率低下的挑战,这限制了其服务用户数量并增加了运营成本。Polar Signals Cloud提供的持续性能分析功能,特别是其pprof.me和反向调用堆栈功能,帮助S2团队识别并解决了多个性能瓶颈。例如,通过一行代码更改,利用Graviton上的硬件加速,将计算SHA256校验和的CPU使用率从68.37%降低到31.82%,从而将吞吐量提高了一倍。此外,还优化了AWS S3 Rust SDK的CRC32C校验和计算和内存分配,进一步提升了效率。Polar Signals Cloud的灵活定价也使其成为S2的理想选择。

阅读更多

LuaJIT之旅:如何从LuaJIT引擎中抓取调用栈信息以进行性能分析

2024-11-22
LuaJIT之旅:如何从LuaJIT引擎中抓取调用栈信息以进行性能分析

本文讲述了如何为LuaJIT实现一个基于BPF的通用零插桩分析器。与之前的工作不同,这次使用了OpenTelemetry eBPF分析器,通过一个小型BPF程序从堆栈中抓取最少的信息,并将其传递给用户态程序进行处理。文章详细解释了LuaJIT的跟踪JIT机制及其优势,以及如何克服跟踪爆炸问题。然后,文章探讨了如何对LuaJIT程序进行性能分析,比较了perf、gdb采样和LuaJIT内置分析器的优缺点,并最终确定使用基于eBPF的零插桩分析器。文章详细介绍了如何识别LuaJIT解释器和JIT帧,如何获取LuaJIT上下文指针,以及如何遍历Lua语言堆栈。最后,文章总结了eBPF程序和用户态程序的工作流程,并展示了实际效果。

阅读更多
未分类