woailaoxiang 发表于 2014-07-25 15:51

如何提高tcp echo server的通信速率

本帖最后由 woailaoxiang 于 2014-07-25 15:54 编辑

在Cortex A9的芯片上运行Linux 3.14,千兆以太网,全双工

用socket建立了一个接收并且回环应答的tcp服务器,
但是在实测中发现,整个环路的速率只有10MB/s左右,

如果只是接收数据,通信速率有70MB/s,
只是发送,通信速率在40MB/s

怎样进行优化,可以提高回环通信的效率?
谢谢!


具体的代码,如下
通过pthread_create创建了两个单独的收发线程typedef struct{
        unsigned int valid;
        unsigned int length;
        unsigned char buffer;
}SigPackTypedef;

SigPackTypedef        Pack;
SigPackTypedef        *pRcv, *pSnd;

pRcv= pSnd= Pack;

void *recv_func(void *arg)
{
    while(1)
    {
                if(pRcv->valid==0)
                {
                        rxlen = recv(new_fd, pRcv->buffer, 8192, 0);
                        if(rxlen>0)
                        {
                                pRcv->length= rxlen;
                                pRcv->valid= 1;
                                pRcv++;
                                if(pRcv>= &(Pack))
                                        pRcv= Pack;
                                rxsum+= rxlen;
                        }
                        else
                        {
                                printf("err in recv(%s)\n", strerror(errno));
                                close(sockfd);
                                exit(0);
                        }
                }
    }
}
void *send_func(void *arg)
{
        int res;
        txsum= 0;
        while(1)
        {
                if(pSnd->valid)
                {
                        res= send(new_fd, pSnd->buffer, pSnd->length, 0);
                        if(res!= pSnd->length)
                        {
                                printf("Err in send(%s)\n", strerror(errno));
                        }
                        else
                        {
                                pSnd->valid= 0;
                                pSnd++;
                                if(pSnd>= &(Pack))
                                        pSnd= Pack;
                                txsum+= res;
                        }
                }
        }
}

woailaoxiang 发表于 2014-07-25 16:01

另外,创建的socket是阻塞的。

woailaoxiang 发表于 2014-07-30 09:24

自己顶,坚决不能沉帖!
页: [1]
查看完整版本: 如何提高tcp echo server的通信速率