本文将为您介绍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 connections
、Handshake errors
、TCP 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)常见问题。