共享内存通信(SMC)监控和诊断

本文将为您介绍SMC内核协议栈中SMC-R的监控诊断工具及使用方法,以帮助您了解和掌握SMC网络流量的各类指标,判断网络健康状况。

前提条件

使用Alibaba Cloud Linux 3操作系统。

使用smc-tools监测和诊断SMC

Alibaba Cloud Linux 3提供的smc-tools可以帮助您获取SMC的连接、资源和协议栈信息。

安装smc-tools

sudo yum install -y smc-tools

查看SMC-R协议栈信息

  • smcr device:查看SMC-R协议栈所用RDMA设备的信息。

    输出示例:

    # smcr device
    Net-Dev         IB-Dev   IB-P  IB-State  Type          Crit  #Links  PNET-ID
    eth1            erdma_0     1    ACTIVE  0x107f          No       0  

    您主要需要关注如下参数:

    参数

    说明

    Net-Dev

    以太网网络设备名称。

    IB-Dev

    RDMA网络设备名称。

    IB-P

    RDMA网络设备端口。

    IB-State

    RDMA网络设备状态。

    Type

    RDMA网络设备类型,使用阿里云eRDMA网络设备时此处显示0x107f

    #Links

    RDMA网络设备所用QP(Queue Pair)数量。

    PNET-ID

    RDMA网络设备PNET ID。

  • smcr linkgroup:查看SMC-R link group信息。

    说明

    link group在SMC-R中用于表示一组RDMA资源集合,包括QP(Queue Pair)、PD(Protection Domain)、MR(Memory Region)等,一个link group默认承载32个SMC连接。

    输出示例:

    # smcr linkgroup
    LG-ID    LG-Role  LG-Type  VLAN  #Conns  PNET-ID
    00000300 SERV     SINGLE      0       0  1234

    您主要需要关注link group数量(意味着使用多少QP资源)以及以下参数:

    参数

    说明

    #Conns

    link group承载的SMC连接数量。

  • smcr stats:查看当前net namespace下SMC-R协议栈各类统计信息。

    输出示例:

    # smcr stats
    SMC-R Connections Summary
      Total connections handled             7
      SMC connections                       5
      Handshake errors                      0
      Avg requests per SMC conn        518103.6
      TCP fallback                          2
    
    RX Stats
      Data transmitted (Bytes)       18133584 (18.13M)
      Total requests                  1295262
      Buffer full                           0 (0.00%)
                8KB    16KB    32KB    64KB   128KB   256KB   512KB  >512KB
      Bufs        0       0       0       0       0       5       0       0
      Reqs   1.295M       0       0       0       0       0       0       0
    
    TX Stats
      Data transmitted (Bytes)       18133584 (18.13M)
      Total requests                  1295256
      Buffer full                           0 (0.00%)
      Buffer full (remote)                  0 (0.00%)
      Buffer too small                      0 (0.00%)
      Buffer too small (remote)             0 (0.00%)
                8KB    16KB    32KB    64KB   128KB   256KB   512KB  >512KB
      Bufs        0       0       0       0       0       5       0       0
      Reqs   1.295M       0       0       0       0       0       0       0
    
    Extras
      Special socket calls                  5

    您主要需要关注如下参数:

    参数

    说明

    Total connections handled

    SMC-R协议栈处理的连接数量累加值,为SMC connectionsHandshake errorsTCP fallback数量之和。

    SMC connections

    成功转化为SMC-R连接的数量累加值。

    Handshake errors

    握手阶段出现错误的连接数量累加值,比如对端无响应等。

    Avg requests per SMC conn

    平均每条SMC连接接收/发送请求数量。

    TCP fallback

    回退到TCP/IP协议栈连接数量的累加值。

    Rx/Data transmitted (Bytes)

    SMC-R连接接收数据累加值(单位:字节)。

    Rx/Total requests

    SMC-R连接接收请求累加值。

    Rx/Buffer full

    SMC-R连接接收缓冲区已满次数累加值,表示用户态程序未及时从接收缓冲区读走数据。此时需要用户态程序尽快读走数据或在此场景下增大接收缓冲区容量,否则会反压发送端,无法接收新的数据。

    Rx/Bufs

    SMC-R连接使用的接收缓冲区分布图。SMC-R在每个link group维度维护一个内存池,创建连接时从内存池中获取符合大小的、空闲的内存块。如果不存在则创建新的内存块,连接断开后将内存块还回内存池。此处统计值为连接从内存池中获取接收缓冲区的次数累加值与大小分布,不代表实际占用内存的接收缓冲区数量。

    Rx/Reqs

    SMC-R连接接收请求实际获取数据大小的分布。

    Tx/Data transmitted (Bytes)

    SMC-R连接发送数据累加值(单位:字节)

    Tx/Total requests

    SMC-R连接发送请求累加值。

    Tx/Buffer full

    SMC-R连接发送缓冲区已满次数累加值,表示SMC-R协议栈未及时将用户态程序下发的数据发送到链路上。如果占比较高则考虑在此场景下增大发送缓冲区容量。

    Tx/Buffer full (remote)

    SMC-R连接的对端接收缓冲区已满次数累加值,表示因对端接收缓冲区已满而无法将数据发送到对端。若占比较高则考虑在此场景下增大对端接收缓冲区容量。

    Tx/Buffer too small

    SMC-R连接发送请求大小超过发送缓冲区大小的次数累加值,表示发送缓冲区设置过小。若占比较高则考虑在此场景下增大发送缓冲区容量。

    Tx/Buffer too small (remote)

    SMC-R连接发送请求大小超过对端接收缓冲区大小的次数累加值,表示对端接收缓冲区设置过小。若占比较高则考虑在此场景下增大对端接收缓冲区容量。

    Tx/Bufs

    SMC-R连接使用的发送缓冲区分布图。SMC-R在每个link group维度维护一个内存池,创建连接时从内存池中获取符合大小的、空闲的内存块。如果不存在则创建新的内存块,连接断开后将内存块还回内存池。此处统计值为连接从内存池中获取发送缓冲区的次数累加值与大小分布,不代表实际占用内存的发送缓冲区数量。

    Tx/Reqs

    SMC-R连接接收请求数据大小的分布。

查看SMC-R连接信息

  • smcss:查看当前net namespace下正在建连、正在断连、已建连的SMC socket的基础信息。

    说明

    上述指令输出包含回退到使用TCP/IP协议栈的SMC socket。

    输出示例如下:

    # smcss
    State          UID   Inode   Local Address           Peer Address            Intf Mode
    ACTIVE         00994 2954337 192.168.4.78:80         192.168.4.79:36000      0000 SMCR
    ACTIVE         00994 2954336 192.168.4.78:80         192.168.4.79:35994      0000 SMCR
    ACTIVE         00994 2954333 192.168.4.78:80         192.168.4.79:35978      0000 SMCR
    ACTIVE         00994 2950860 192.168.4.78:80         192.168.4.79:35972      0000 SMCR
    ACTIVE         00994 2953298 192.168.4.78:80         192.168.4.79:35966      0000 SMCR
    ACTIVE         00994 2953297 192.168.4.78:80         192.168.4.79:35948      0000 TCP 0x03010000
    ACTIVE         00994 2954330 192.168.4.78:80         192.168.4.79:35922      0000 TCP 0x03010000
    ACTIVE         00994 2947957 192.168.4.78:80         192.168.4.79:35920      0000 TCP 0x03010000
    ACTIVE         00994 2953293 192.168.4.78:80         192.168.4.79:35822      0000 TCP 0x03010000
    ACTIVE         00994 2955286 192.168.4.78:80         192.168.4.79:35752      0000 TCP 0x03010000

    您主要需要关注如下参数:

    参数

    说明

    State

    socket状态,可能有如下状态:

    • INIT:初始化中

    • CLOSED:已关闭

    • LISTEN:监听中

    • ACTIVE:已建立连接

    • PEERCLW1:不再向对端发送数据

    • PEERCLW2:不再向对端发送或从对端接收数据

    • APPLCLW1:不再从对端接收数据

    • APPLCLW2:不再从对端接收或向对端发送数据

    • APPLFINCLW:对端已关闭

    • PEERFINCLW:本端已关闭

    • PEERABORTW:本端异常关闭

    • PROCESSABORT:对端异常关闭

    Local Address

    本地IPv4地址与端口,目前SMC仅支持IPv4协议。

    Peer Address

    对端IPv4地址与端口,目前SMC仅支持IPv4协议。

    Mode

    通信模式。

    • SMCR:使用SMC-R协议栈通信。

    • TCP <fallback reason>:回退使用TCP/IP协议栈通信。

      说明

      数字代码表示回退原因。具体含义,请参见启用SMC后回退无法使用RDMA加速

  • smcss -l:查看当前net namespace下正在监听(LISTEN状态)的socket。

    smcss -l的输出参数与smcss的输出参数相同。

  • smcss -R:查看当前net namespace下运行在SMC-R协议栈的socket。

    输出示例:

    # smcss -R
    State          UID   Inode   Local Address           Peer Address            Intf Mode Role IB-device       Port Linkid GID                                      Peer-GID
    ACTIVE         00000 1833669 192.168.4.79:33618      192.168.4.78:80         0000 SMCR CLNT erdma_0         01   01     0000:0000:0000:0000:0000:ffff:c0a8:044f  0000:0000:0000:0000:0000:ffff:c0a8:044e
    ACTIVE         00000 1833667 192.168.4.79:33604      192.168.4.78:80         0000 SMCR CLNT erdma_0         01   01     0000:0000:0000:0000:0000:ffff:c0a8:044f  0000:0000:0000:0000:0000:ffff:c0a8:044e
    ACTIVE         00000 1828405 192.168.4.79:33590      192.168.4.78:80         0000 SMCR CLNT erdma_0         01   01     0000:0000:0000:0000:0000:ffff:c0a8:044f  0000:0000:0000:0000:0000:ffff:c0a8:044e
    ACTIVE         00000 1833665 192.168.4.79:33578      192.168.4.78:80         0000 SMCR CLNT erdma_0         01   01     0000:0000:0000:0000:0000:ffff:c0a8:044f  0000:0000:0000:0000:0000:ffff:c0a8:044e
    ACTIVE         00000 1833663 192.168.4.79:33564      192.168.4.78:80         0000 SMCR CLNT erdma_0         01   01     0000:0000:0000:0000:0000:ffff:c0a8:044f  0000:0000:0000:0000:0000:ffff:c0a8:044e

    除前述基础字段外,您主要需要关注如下额外字段:

    参数

    说明

    IB-device

    连接所用RDMA设备名称。

    Port

    连接所用RDMA设备端口。

    GID

    连接所用RDMA设备GID(Global ID)。

    Peer-GID

    对端所用RDMA设备GID。

  • smcss -a:查看当前net namespace下所有状态的SMC socket,包括回退到使用TCP/IP协议栈的SMC socket。

    smcss -a的输出参数与smcss的输出参数相同。

    说明

    Mode字段的数字代码表示回退原因。具体含义,请参见启用SMC后回退无法使用RDMA加速

相关文档

  • 使用eRDMA为SMC-R提供远程内存访问技术时,其监控运维方式,请参见监测和诊断eRDMA

  • 如果您在使用共享内存通信SMC过程中遇到无法正常通信、部分端口不可用、对比TCP没有应用性能提升等问题,可以参考共享内存通信(SMC)常见问题