【infiniband】IBV_SEND_SIGNALED

IBV 代表“InfiniBand Verbs”,是InfiniBand网络技术的一个API(应用程序编程接口)。InfiniBand通过“verbs”来表示不同的操作,比如发送和接收数据。
IBV_SEND_SIGNALED 似乎是一个发送操作的标志或选项,用于请求在发送操作完成时通知应用程序。这样应用程序就可以知道什么时候可以重用发送缓冲区,而不需要等待超时。
直接翻译的话,IBV_SEND_SIGNALED 就是“InfiniBand Verbs 发送信号”的意思。它是一个发送选项,用于在发送完成后立即通知应用程序,而不是等待超时才知道发送结果。
所以简单来说,IBV_SEND_SIGNALED 是一个 InfiniBand 网络编程中的标志,用于设置发送数据后立即收到通知,以便程序立即知道可以重用发送缓冲区,从而提高网络通信的效率。
IBV_SEND_SIGNALED是IB(InfiniBand)网络接口卡(NIC)提供的一个特性,用于优化RDMA小消息通信性能。当使用IBV_SEND_SIGNALED时,网卡会在发送完成后发送一个信号通知CPU,这样CPU就可以知道数据已经成功发送,而不需要不断地轮询发送状态。

IBV_SEND_SIGNALED有两个主要优点:

1. 减少轮询时间:由于网卡会在发送完成后发送信号,因此CPU不需要不断地轮询发送状态,从而减少了CPU的空闲时间,提高了整体性能。

2. 减少WC(Write Combined)产生的次数:在传统的RDMA通信中,为了确保数据被正确地发送到目标节点,通常会在发送端生成一个WC(Write Combined)原语,以确保数据被写入到目标节点的内存中。然而,每次发送都会产生一个WC,这会导致性能下降。使用IBV_SEND_SIGNALED可以减少WC的产生次数,从而提高性能。

需要注意的是,虽然IBV_SEND_SIGNALED可以提高性能,但在某些情况下,过度依赖它可能会导致问题。例如,如果发送的数据非常大,那么在发送过程中可能无法处理其他任务,从而降低系统的可用性。因此,在实际应用中,应根据具体情况选择是否使用IBV_SEND_SIGNALED。
IBV_SEND_SIGNALED是RDMA的一种优化小消息通信的性能的机制。其原理是减少WC(Work Completion)的产生和对WC的读取次数。具体来说,当应用程序要发送大量数据时,它会把数据写入用户空间的缓冲区,然后把这个缓冲区的指针放入WQE(Work Queue Entry,工作队列条目)中。网卡从MEM区域读取WQE,然后根据WQE中的指针去用户空间读取数据。而对于发送小数据量的情况,数据会直接放入WQE的payload区域,然后放入MEM区域。这样,网卡就不需要再去用户空间读取数据,减少了这些额外的读写操作。

猜你喜欢

转载自blog.csdn.net/eidolon_foot/article/details/132630497