- 博客(8)
- 收藏
- 关注
原创 linux内核SMC特性connect流程框架解析
| | | -> smc_ib_map_mr_sg --->>> 使用ib_map_mr_sg注册1个sg到mr中。| | | -> smc_wr_alloc_lgr_mem --->>> 分配wr_rx/tx_buf_v2缓冲区,大小为8192。
2024-07-23 10:11:33 970
原创 SMC的双端能力通知流程(基于最新Linux主干)
-----> tcp_options_write -> smc_options_write -> (*ptr == TCPOLEN_EXP_SMC_BASE...) -----》》》》》发送含有smc信息的syn报文给对端。| -----> tcp_options_write -> smc_options_write -> (*ptr == TCPOLEN_EXP_SMC_BASE...) -----》》》》》发送含有smc信息的syn报文给对端。具体的报文可以看如下。
2024-07-18 18:40:30 493
原创 SMC-R发送流程解读
-->>>如果用户还有更多数据需要发送,或者SMC可以延迟发送并且可发送的空间大于sendbuf的空间的一半。--->>>如果断开了,并且有已经完成发送的,直接返回完成长度,否则返回错误。--->>>可以发送的数据大小,一个sendbuf中剩余的空间,取最小值。--->>>发送的个数 加上 要发送的数据大小, 如果小于一个desc的大小。--->>>大于一个desc的大小的时候,还能取desc中的空余空间。--->>>如果需要发送的大小大于对端rmbe的大小,则需要设置写阻塞位。
2024-07-04 20:21:35 864
原创 LLC/CDC消息通信机制
-->>>处理一次poll出来的CQ事件,【link->wr_tx_pends[pnd_snd_idx].handler】分别处理CDC/LLC事件,smc_cdc_tx_handler/smc_llc_tx_handler->【wake_up(&link->wr_tx_wait)】。--->>>处理smc_wr_rx_tasklet_fn回调函数,即rx cqe产生的时候,就会处理。--->>>两个地方回用到smc_ib_ready_link,初始化完,进入RTR,会通知接收。/CDC消息通信机制。
2024-06-23 16:48:15 997
原创 SMC建链机制
server端发送SMC_LLC_REQ,等收到SMC_LLC_CONFIRM_LINK后,保存对端rdma信息,回一个SMC_LLC_RESP报文后,激活link,设置lgr为SMC_LGR_SINGLE。如果smc起的内核clc socket监听到有数据(三次握手之后),则会调用smc_clcsock_data_ready接口,因为sk_state为SMC_LISTEN,所以会启动listen中初始化的tcp_listen工作队列,对应的函数是smc_tcp_listen_work。
2024-06-23 14:57:11 361
原创 SMC模块初始化流程
-->>>2.ib_register_client(&smc_ib_client)->add_client_context->[client->add(device)]->smc_ib_add_dev,ib设备(lower)注册成为smc设备(upper),启动端口事件工作队列。--->>>注册netns中的钩子函数,1.smc_sysctl_net_init初始化sysctl中的系统变量,获取到ctl_table_header ,主要是SMC特有的sysctl接口,给用户实时设置。
2024-06-20 18:06:28 442
原创 定个目标,10天解读完基于内核5.10的SMC-R代码框架
测试了一段时间的内核的SMC-R功能,对SMC-R的实现总是模糊不透。看代码之前,需要具备RDMA的基础知识,否则代码读起来会很生涩,很痛苦(虽然现在读起来也有点痛苦^_^)。RDMA基础,我推荐知乎的RDMA杂谈,链接为。这位大神在解读的时候,回复了很多问题,可以带着疑问多读几遍,就可以豁然开朗了。好了,废话不多说,正式进入正文。我想从以下4个方面来介绍SMC框架。可能后续会增加,但是作为小白的我,暂且就定4个方面吧。定个目标,10天解读完基于5.10的SMC-R代码框架。一、SMC模块的加载及卸载。
2024-06-20 17:14:03 425
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人