套接字接收和发送在TCP上非常慢

时间:2018-03-20 15:31:57

标签: android linux sockets kernel

带有选项MSG_WAITALL的kernel_recvmsg需要很长时间才能接收数据。甚至尝试使用标志0的默认选项。整体吞吐量受kernel_recvmsg的影响。 TCP_NODELAY套接字选项也设置。尝试在客户端和服务器之间更改各种recv和发送缓冲区选项,但整体吞吐量没有改变。

服务器:Windows 10 PC 客户端:Android 7.1 linux版本4.4.63

在5 ghz网络中进行测试......

是否有任何选项可供尝试。

下面添加的计时器显示kernel_recvmsg中消耗的时间更多。甚至perf工具调用显示kenrel_recvmsg中消耗的时间更多。

t_usb.rx_rcv_start = ktime_get();

while (total_rcvd < length && total_rcvd >= 0 &&
       !kthread_should_stop()) {

    kvec.iov_base = tcp_recv_buf+data_rcvd;
    kvec.iov_len = length-data_rcvd;
    data_rcvd = kernel_recvmsg(tcp_socket->socket, msg, &kvec,
        1, length - total_rcvd, MSG_WAITALL);


    if (data_rcvd > 0) {
        total_rcvd += data_rcvd;

    } else {
        vfree(tcp_recv_buf);
        return data_rcvd;
    }


}
t_usb.rx_start = t_usb.rx_rcv_end=ktime_get();

0 个答案:

没有答案