当前位置:  技术问答>linux和unix

socket接收数据流程问题请教

    来源: 互联网  发布时间:2016-04-25

    本文导语:  使用ftpget下载文件这个过程应该是用socket实现的吧 我做了下面的两个测试比较: 1.使用2个网口收发包,这时使用1核0vcpu和2核0vcpu使用Round-Robin方式处理网络收发,启动32个ftpget的任务,并把这些下载任务绑定到3核和4...

使用ftpget下载文件这个过程应该是用socket实现的吧
我做了下面的两个测试比较:
1.使用2个网口收发包,这时使用1核0vcpu和2核0vcpu使用Round-Robin方式处理网络收发,启动32个ftpget的任务,并把这些下载任务绑定到3核和4核的8个vcpu上,此时绑定ftp下载任务的各个vcpu的CPU占用为55%
2.使用2个网口收发包,这时使用1核0vcpu和2核0vcpu分别负责网口0和网口1的网络收发,也同样启动32个ftpget的任务,并把这些下载任务绑定到3核和4核的8个vcpu上,此时绑定ftp下载任务的各个vcpu的CPU占用为42%

想了一下,Round-Robin方式向socket的缓冲区入队列的时候会产生互斥,这样会额外消耗一些CPU资源,而分别管理网口的情况下应该不存在这种互斥的情况,所以CPU资源应该消耗的少一些。
不过我觉得,上面说的这种CPU的消耗差异,应该体现在用于处理网络收发的1核和2核上(我觉得应该是网口收到包,然后在收包的核上进入协议栈的处理过程,最后放到socket缓冲区去),而绑定ftpget任务的核只是从socket缓冲区取数据,完成从内核态到用户态的拷贝,这在我测试的两种情况下应该处理是一样的,但为什么现在实际看到的结果确是绑定ftpget人任务的cpu存在差异了?想不通,请各位指点一下。

难道网口收上来包以后,协议栈的处理是在绑定了ftpget任务的那个核完成的?请各位帮忙解惑!谢谢!

|
看你所谓绑定是怎么绑定的,如果只是指派CPU的中断处理的话,那么中断处理之后就跟你原来指派的调度无关了,也就是说,协议层的处理可以在任意cpu。

    
 
 

您可能感兴趣的文章:

  • socket发送端、接收端同一机器,kill掉接收端进程,发送端也被kill?
  • 从多个socket接收数据
  • socket 接收数据问题
  • socket 接收缓冲区大小如何查看?
  • getsockopt每次得到的socket的接收发送缓冲怎么都不一样
  • Linux下怎么用socket接收zip文件流?怎么把zip文件读成流?
  • socket接收字节数组不成功,请大侠指点迷津
  • 关于socket下的发送和接收缓冲区的问题
  • 多线程socket程序莫名其妙接收到SIGALRM信号问题。
  • 请教,socket中recv不能一次完全接收send发送的字节数?
  • UNIX下SOCKET怎么能象WINDOWS下用通信事件来响应接收数据呢?
  • 请教关于socket通讯中客户端接收服务端信息的问题
  • socket接收二进制数据流的问题!!(在线等待)
  • 求教:设置socket接收缓存区大小失败?
  • Linux下怎么用read或recv函数完全接收socket发来的数据?
  • java 与c++用socket通讯的问题??字符串不能接收到??急啊!
  • 客户端是linux通过socket编程实现服务器端win平台接收?
  • 我做了个socket服务器,但是客户端接收数据的时候用select()函数????可接受不到
  • linux下的socket接收数据的难题!
  • 怎么能接收通过socket传来的中文数据呢?我如果用BufferReader的话socket连接就无效了
  • 请教:多线程使用同一个socket进行数据收发会出现什么问题?
  • 请教: linux下用c++写最简单的socket程序如何写?
  • IP地址数字互转 iis7站长之家
  • 急!!请教关于linux socket编程的一个问题!!
  • socket双向通讯模式请教
  • 请教linux下管理多个socket用什么,难道只能用select?
  • 请教有关socket的问题,并求telnetd的c源码
  • 请教:socket编程中send和write的区别
  • 关于socket通信,C的代码,有个问题请教高手!
  • 请教各位一个socket问题
  • linux socket的使用问题,请教
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 請問用Socket來實現SMTP的發送功能﹐它的流程是怎樣呢﹖謝謝﹗﹗
  • java命名空间java.net类socket的类成员方法: socket定义及介绍
  • re socket编程中 ACCEPT返回的socket与原socket(他参数中的)端口号一样吗?
  • java命名空间java.nio.channels类socketchannel的类成员方法: socket定义及介绍
  • libevent2需要从socket读一段数据写入一个socket中,同时发送给另一个socket
  • java命名空间java.nio.channels类serversocketchannel的类成员方法: socket定义及介绍
  • socket 通讯开发包 Simple Sockets
  • java命名空间java.nio.channels类datagramchannel的类成员方法: socket定义及介绍
  • C++ Socket 库 C++ Sockets
  • java命名空间java.net类socket的类成员方法: getsendbuffersize定义及介绍
  • vc做的的socket应用和unix下socket?
  • java命名空间java.net类socket的类成员方法: getreceivebuffersize定义及介绍
  • QSocketDevice ( int socket, Type type )中那个 int socket 是哪里来得?
  • java命名空间java.net类socket的类成员方法: gettrafficclass定义及介绍
  • socket编程 通过man socket, 没有找到socket函数的第一参数该填什么 怎样利用man手册
  • java命名空间java.net类socket的类成员方法: getport定义及介绍
  • 线程间可否通过管道传递SOCKET句柄?还有其他方式传递SOCKET么?
  • java命名空间java.net类socket的类成员方法: getlocalport定义及介绍
  • [FreeBSD] 大神,求解,control socket : can‘t to any socket
  • java命名空间java.net类socket的类成员方法: getinetaddress定义及介绍
  • 两个 Socket 互相通信,其中一个如何判断另一个 Socket 是否已经意外断开了连接?
  • java命名空间java.net类socket的类成员方法: isconnected定义及介绍
  • 大家帮忙推荐一本linux socket编程的入门书,我刚接触socket,谢谢!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3