繁体   English   中英

使用OpenOnload Solarflare c获得性能提升

[英]Performance gain using OpenOnload Solarflare c

我正在尝试使用服务器中安装的Solarflare NIC来评估系统的性能提升。

服务器详细信息 :英特尔(R)酷睿TM i7-8086K CPU @ 4.00GHz(12核/ 8 GB RAM)

网络 :Solarflare XtremeScale X2522(10G)适配器

我已经用C ++编写了一个简单的TCP / IP服务器/客户端程序。 服务器/客户端都接受两个输入。 缓冲区大小和接口名称。 使用setsockopt,我可以使用SO_BINDTODEVICE将套接字绑定到特定接口。

        const char *device = argv[2];
        int rc1=setsockopt(server_fd, SOL_SOCKET, SO_BINDTODEVICE, device, strlen(device));
        if (rc1 != 0)
        {
            cerr << "set sockopt bindtodevice failed: " << strerror(errno) << endl;
            exit(1);
        }

我在client和server.cpp程序中都使用了上面的代码片段。

为了测量延迟,在从大小为2048的客户端发送10000000消息前后,我使用了微秒级的chrono时间戳。

我使用以下命令运行SO_BINDTODEVICE +将套接字绑定到solarflare接口,以运行客户端服务器程序:

onload ./client(buf_size)(interface_name_solarflare)

onload ./server(buf_size)(interface_name_solarflare)

对于无负载的基准测试:

./client(buf_size)(接口名称)

./服务器(buf_size)(接口名称)

我能够观察到的是,在onload情况下的延迟比没有onload情况下的延迟高。 我也尝试过更改缓冲区大小。 这只是发送时间。

我的样本结果以微秒为单位:

在此处输入图片说明

有人可以指导我在这里做错什么吗? 我是使用OpenOnLoad的新手。

注意:我的客户端/服务器程序中没有使用过任何其他setsockopt选项。

提前致谢。 :)

我认为您可以为客户端和服务器创建单独的命名空间,然后进行测试(以防您没有两个系统)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM