Skip to content

Latest commit

 

History

History
24 lines (20 loc) · 1.18 KB

run_client 线程可能的问题.md

File metadata and controls

24 lines (20 loc) · 1.18 KB
  1. 重复创建和销毁 RDMA 资源的效率问题 每次重试都会销毁并重新创建 rdma_cm_id ,在高频重试时,可能增加开销 在 RDMA 环境中,资源创建和销毁是较为昂贵的操作 改进: 考虑在连接失败后保留 rdma_cm_id ,直接重复使用,而不是每次重试都销毁重新创建

  2. 重试机制没有退避(backoff)策略 问题:

  • 当前代码在失败时立即进行下一次重试,没有引入退避策略。如果目标主机暂时不可达(例如网络不稳定),连续重试可能会耗尽资源。 改进:
  • 使用指数退避策略(exponential backoff),在每次重试间隔增加一段时间,从而避免高频重试对系统造成压力。 解决方法:
  • 在重试逻辑中引入睡眠时间
int backoff = 1 << retry_count;
sleep(backoff > 16 ? 16 : backoff);
  1. 过度使用 goto

  2. 事件处理的鲁棒性 某些 RDMA CM 事件未被处理,例如 RDMA_CM_EVENT_ADDR_ERRORRDMA_CM_EVENT_ROUTE_ERROR 等。这些事件可能在某些情况下发生(例如网络配置错误、主机不可达),未处理这些事件可能会导致逻辑问题。

  3. 资源分配失败的情况处理