1. 03 Jun, 2024 3 commits
    • David S. Miller's avatar
      Merge branch 'net-smc-snd_buf-rcv_buf' · 93e30878
      David S. Miller authored
      Guangguan Wang says:
      
      ====================
      net/smc: Change the upper boundary of SMC-R's snd_buf and rcv_buf to 512MB
      
      SMCR_RMBE_SIZES is the upper boundary of SMC-R's snd_buf and rcv_buf.
      The maximum bytes of snd_buf and rcv_buf can be calculated by 2^SMCR_
      RMBE_SIZES * 16KB. SMCR_RMBE_SIZES = 5 means the upper boundary is 512KB.
      TCP's snd_buf and rcv_buf max size is configured by net.ipv4.tcp_w/rmem[2]
      whose default value is 4MB or 6MB, is much larger than SMC-R's upper
      boundary.
      
      In some scenarios, such as Recommendation System, the communication
      pattern is mainly large size send/recv, where the size of snd_buf and
      rcv_buf greatly affects performance. Due to the upper boundary
      disadvantage, SMC-R performs poor than TCP in those scenarios. So it
      is time to enlarge the upper boundary size of SMC-R's snd_buf and rcv_buf,
      so that the SMC-R's snd_buf and rcv_buf can be configured to larger size
      for performance gain in such scenarios.
      
      The SMC-R rcv_buf's size will be transferred to peer by the field
      rmbe_size in clc accept and confirm message. The length of the field
      rmbe_size is four bits, which means the maximum value of SMCR_RMBE_SIZES
      is 15. In case of frequently adjusting the value of SMCR_RMBE_SIZES
      in different scenarios, set the value of SMCR_RMBE_SIZES to the maximum
      value 15, which means the upper boundary of SMC-R's snd_buf and rcv_buf
      is 512MB. As the real memory usage is determined by the value of
      net.smc.w/rmem, not by the upper boundary, set the value of SMCR_RMBE_SIZES
      to the maximum value has no side affects.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      93e30878
    • Guangguan Wang's avatar
      net/smc: change SMCR_RMBE_SIZES from 5 to 15 · 2f4b101c
      Guangguan Wang authored
      SMCR_RMBE_SIZES is the upper boundary of SMC-R's snd_buf and rcv_buf.
      The maximum bytes of snd_buf and rcv_buf can be calculated by 2^SMCR_
      RMBE_SIZES * 16KB. SMCR_RMBE_SIZES = 5 means the upper boundary is 512KB.
      TCP's snd_buf and rcv_buf max size is configured by net.ipv4.tcp_w/rmem[2]
      whose default value is 4MB or 6MB, is much larger than SMC-R's upper
      boundary.
      
      In some scenarios, such as Recommendation System, the communication
      pattern is mainly large size send/recv, where the size of snd_buf and
      rcv_buf greatly affects performance. Due to the upper boundary
      disadvantage, SMC-R performs poor than TCP in those scenarios. So it
      is time to enlarge the upper boundary size of SMC-R's snd_buf and rcv_buf,
      so that the SMC-R's snd_buf and rcv_buf can be configured to larger size
      for performance gain in such scenarios.
      
      The SMC-R rcv_buf's size will be transferred to peer by the field
      rmbe_size in clc accept and confirm message. The length of the field
      rmbe_size is four bits, which means the maximum value of SMCR_RMBE_SIZES
      is 15. In case of frequently adjusting the value of SMCR_RMBE_SIZES
      in different scenarios, set the value of SMCR_RMBE_SIZES to the maximum
      value 15, which means the upper boundary of SMC-R's snd_buf and rcv_buf
      is 512MB. As the real memory usage is determined by the value of
      net.smc.w/rmem, not by the upper boundary, set the value of SMCR_RMBE_SIZES
      to the maximum value has no side affects.
      Signed-off-by: default avatarGuangguan Wang <guangguan.wang@linux.alibaba.com>
      Co-developed-by: default avatarWen Gu <guwen@linux.alibaba.com>
      Signed-off-by: default avatarWen Gu <guwen@linux.alibaba.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2f4b101c
    • Guangguan Wang's avatar
      net/smc: set rmb's SG_MAX_SINGLE_ALLOC limitation only when CONFIG_ARCH_NO_SG_CHAIN is defined · 3ac14b9d
      Guangguan Wang authored
      SG_MAX_SINGLE_ALLOC is used to limit maximum number of entries that
      will be allocated in one piece of scatterlist. When the entries of
      scatterlist exceeds SG_MAX_SINGLE_ALLOC, sg chain will be used. From
      commit 7c703e54 ("arch: switch the default on ARCH_HAS_SG_CHAIN"),
      we can know that the macro CONFIG_ARCH_NO_SG_CHAIN is used to identify
      whether sg chain is supported. So, SMC-R's rmb buffer should be limited
      by SG_MAX_SINGLE_ALLOC only when the macro CONFIG_ARCH_NO_SG_CHAIN is
      defined.
      
      Fixes: a3fe3d01 ("net/smc: introduce sg-logic for RMBs")
      Signed-off-by: default avatarGuangguan Wang <guangguan.wang@linux.alibaba.com>
      Co-developed-by: default avatarWen Gu <guwen@linux.alibaba.com>
      Signed-off-by: default avatarWen Gu <guwen@linux.alibaba.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3ac14b9d
  2. 01 Jun, 2024 31 commits
  3. 31 May, 2024 6 commits