Skip to content
  1. Apr 10, 2019
  2. Apr 03, 2019
  3. Feb 19, 2019
  4. Feb 15, 2019
  5. Feb 14, 2019
  6. Feb 12, 2019
    • Cong Wang's avatar
      mlx5: use RCU lock in mlx5_eq_cq_get() · 1fbf1252
      Cong Wang authored
      mlx5_eq_cq_get() is called in IRQ handler, the spinlock inside
      gets a lot of contentions when we test some heavy workload
      with 60 RX queues and 80 CPU's, and it is clearly shown in the
      flame graph.
      
      In fact, radix_tree_lookup() is perfectly fine with RCU read lock,
      we don't have to take a spinlock on this hot path. This is pretty
      much similar to commit 291c566a
      ("net/mlx4_core: Fix racy CQ (Completion Queue) free"). Slow paths
      are still serialized with the spinlock, and with synchronize_irq()
      it should be safe to just move the fast path to RCU read lock.
      
      This patch itself reduces the latency by about 50% for our memcached
      workload on a 4.14 kernel we test. In upstream, as pointed out by Saeed,
      this spinlock gets some rework in commit 02d92f79
      
      
      ("net/mlx5: CQ Database per EQ"), so the difference could be smaller.
      
      Cc: Saeed Mahameed <saeedm@mellanox.com>
      Cc: Tariq Toukan <tariqt@mellanox.com>
      Acked-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      1fbf1252
  7. Feb 03, 2019
  8. Jan 24, 2019
  9. Jan 15, 2019
  10. Jan 14, 2019