首页 > 代码库 > ROS:8个进程接收数据的带宽
ROS:8个进程接收数据的带宽
将接收端和发送端的套接字缓冲区设置为【8MB, 8MB】,接收端是while循环recv的directrecv模式下,8个ROS进程,每个ROS处理一个socket, 发送和接收包长为2KB, 运行了大约12个小时的带宽曲线如下:
计算得到每个接收进程的平均带宽,以及8个进程的平均带宽的和为:
2.61563 3.5609 3.50985 3.12713 3.22121 3.13252 3.00344 3.99146 sum ave bw: 26.16214
总的平均带宽为26Gb/s,且接收端的CPU idle 为0,发送端的CPU idle 为80%。此时的瓶颈为接收端的CPU。
通过top -H -p pid 命令可以查看进程的线程数,通过gstack pid可以看到线程的函数调用栈。用前面两条命令可以查看到每个ROS进程都有三个线程在执行:一个是ROS::UDPChannels, 一个是ROS::RequestHandler; 一个是Recv。其中只要Recv是当前接收数据线程。可以将另外两个线程disable掉,释放一部分CPU资源,增加线程数,看看带宽会不会继续增加。
问题是:如何disable掉UDPChannels?
ROS:8个进程接收数据的带宽
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。