事件池化是LoongCollector第三步优化,通过复用Event对象避免频繁的构造/析构开销(CPU profile显示占总体10%)。根据事件申请/释放位置的不同,采用两种策略:
场景一:同线程生产和消费(Processor Runner内部):
- 每个Processor Runner线程维护自己的无锁事件池
- 申请时从当前线程池获取,归还时直接放回
- 由于只有一个线程访问,完全无锁
场景二:跨线程生产和消费(Input Runner生产,Processor Runner消费):
- Input Runner线程维护一个有锁事件池
- Processor Runner线程处理完后将事件归还到对应Input Runner的池中
- 优化措施:
- 批量归还:以PipelineEventGroup为单位一次性归还多个事件
- 双Buffer策略:维护两个池,分别供Input和Processor线程使用,仅当Input线程的池为空时才从Processor线程的池整体转移
这种分场景设计最小化了锁竞争,实验证明整体性能进一步提升约15%。




