超低延迟如何设计?

超低延迟如何设计?

原文标题: Awesome Low Latency

翻译标题: 超低延迟

这里讲述超低延时是如何设计的,属于翻译本。

来源于以下开源项目

https://github.com/penberg/awesome-low-latency

低延迟编程在各种应用场景中都变得越来越重要。然而,许多低延迟编程的技巧和诀窍仍然只是开发者们口口相传的经验之谈。本文旨在将这些知识系统化,帮助人们(重新)发现低延迟编程的精髓。

模式

如何正确测量延迟

  • 延迟是一种分布

  • 避免协同性遗漏

  • 使用累积分布函数或直方图可视化延迟

避免数据移动

  • 计算和数据共置,例如内存处理或近内存处理

  • 复制数据以加快访问速度

  • 最大化缓存命中率

  • 控制内存访问模式

避免工作

  • 驯服的算法复杂度

  • 避免动态内存管理

  • 避免按需分页以防止内存抖动,例如使用更大的内存页(Linux 上的大页、FreeBSD 上的超级页等)。

  • 尽可能减少工作量(例如,使用内联避免函数调用开销)

  • 避免进行CPU密集型计算。

避免等待

  • 对数据进行分区以避免共享(从而避免同步)

  • 将共享数据结构设为只读(如果可能)

  • 减少排队首位阻塞

  • 避免切换上下文

  • 使用无等待数据同步

  • 使用忙轮询代替唤醒

  • 禁用纳格尔算法

  • 使用非阻塞式 I/O

隐藏延迟

  • 并行处理对不同服务的请求

  • 请求对冲(向多个副本引擎发送冗余请求,使用速度最快的引擎的响应)

  • 针对合适的问题使用优化的 SIMD 指令

  • 多进程和多线程

调整以降低延迟

  • 使用抢占式内核

  • 中断和进程亲和性

  • 注意检查不良的设备驱动程序。

高级主题

  • 使用内核旁路网络,例如 DPDK 或 XDP

  • 利用加速器和FPGA进行硬件卸载

博客

出版物

图书

会议

Comment

华计科技: 中华自主研发设计

华计科技为您提供咨询服务,IT技术支持和项目开发: (+86) 156 2654 0671

联系我们