无共享设计 - Seastar

主要观点:现代工作负载运行的硬件与当前编程范式依赖及软件基础设施设计的硬件显著不同。
关键信息:

  • 核心数量增长,时钟速度保持不变,性能依赖多核心间协调,软件架构面临粗粒度和细粒度锁定的困境。
  • I/O 速度持续增加,而 CPU 核心处理数据包的能力未变,Seastar 采用无共享模型,每个核心运行一个应用线程,依赖显式消息传递,避免锁和缓存颠簸。
  • Seastar 提供多种核心间通信函数,如smp::submit_to,等效的线程环境需加锁,其他变体可实现广播或映射/归约操作。
    重要细节:
  • 2GHz 处理器在 10GBps 网络上处理 1024 字节数据包每个包只有 1670 个时钟周期。
  • Seastar 中任何跨核心的资源共享都需显式处理,当通信不可避免时提供高性能非阻塞通信原语。
  • smp::submit_to是一个承诺,返回一个未来即 lambda 的返回值,在指定 CPU 上运行 lambda 并返回结果。
阅读 8
0 条评论