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

linux下发送tcp,发现数据大了以后,cpu占用很高,如何解决

    来源: 互联网  发布时间:2017-03-29

    本文导语:  我采用的方法是使用 while(1) 循环发送,并没有使用线程,硬件平台是arm。 有人说是因为tcp的封包非常耗费cpu,但是我在想,tcp的封包不是硬件自己完成的吗。 | 20MB/s,,你的网速估计也达...

我采用的方法是使用 while(1) 循环发送,并没有使用线程,硬件平台是arm。
有人说是因为tcp的封包非常耗费cpu,但是我在想,tcp的封包不是硬件自己完成的吗。

|
20MB/s,,你的网速估计也达不到那么快吧。这样send时就会出现-1, errno == EAGAIN  (因为发送缓冲会被你填满)。send返回-1是立即的。
你只是在每个循环时固定延时纳秒是没用的!仍然会出现大量发送失败的情况(-1,errno == EGAIN)。CPU占用率当然会高了!你可以检测下。
你应该使用select,poll这样的东西。你的情况使用select就行了。 select能监视sockfd的可写(可读)事件,一直睡眠直到可写(可读)事件发生。。这样每次send都会成功,发送缓冲满时,进程会阻塞在select中,不占CPU!! 用法百度/GOOGLE  linux select

    
 
 

您可能感兴趣的文章:

  • linux下进程占用内存空间详解
  • 求一款占用内存小的linux版本
  • linux下通讯进程启动后cpu占用100%
  • 新手问题:Linux下如何获取进程占用的系统资源
  • linux服务器 apache占用内存问题
  • 哪位大哥知道?我怎样知道LINUX redhat 7.2下声音设备由哪个应用程序占用?
  • linux9.0下内存占用一直是95%以上怎么解决
  • 有没有使用最新内核的占用空间较小的linux操作系统
  • 该怎么样减小使用LINUX时,所占用的内存,
  • Linux下怎样查看一个文件夹占用了多少空间?
  • linux下怎么查看一个目录下所有文件所占用的空间?
  • linux下怎么查看一个端口被哪个程序占用了
  • 关于LINUX SOCKET连接CPU占用问题
  • Linux 系统内存占用问题
  • 怎么取会linux占用的空间?你会吗?
  • 如何linux下监控进程及其子进程占用资源?
  • 求助:java实现显示linux下的cpu占用率,内存使用情况,硬盘占用情况
  • 请教:是不是 linux 所以文件系统一共最大只能占用 4000 空间
  • 请问如何在Linux下测量程序占用的内存
  • 如何让linux没有到达内存瓶颈时回收内存页并占用最少资源
  • 为什么我的linux kswapd 这个进程占用了30%以上的cpu时间,以致无法响应任何请求
  • 怎么实现Windows和Linux之间数据的接收发送
  • Linux下怎样发送广播信息?
  • Linux mail发送 Email,急...
  • 用LINUX串口发送数字和字符串遇到问题
  • linux下几个设备通过串口串行连接,如何协调各串口发送数据
  • linux中邮件发送后是否会保存在服务器中
  • LINUX下如何发送邮件
  • 怎么用LINUX发送HTTP请求??
  • 我想在windows下往linux发送udp包,为什么收不到呀,请指教!
  • 关于linux下如何向操作系统发送按键的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 刚接触linux,发现安装好后通过grep memtotal查询发现比实际物理内存小。
  • 如何查看linux现在有没有发现机器的内猫?
  • 发现一个Linux牛人的博客
  • 我发现在Redhat Linux中有个选项可以连上MSN,不知怎么才可以连上,谢谢
  • ~发现在国内关于linux的教材真的很少~
  • 搜索别的的时候,发现了这个:“将 MFC 应用程序移植到 Linux”
  • SOS!我装好LINUX后发现中文全变成了乱码,请各位学兄赐教!
  • linux 下设置环境变量 使用了setenv 和putenv 在程序结束以后 发现变量又变回去了
  • 听说freebsd很强大,但我发现好像是unix的。。可我现在想学linux。。unix/linux有什么区别。。请高人指点
  • 现在我用c语言在linux下写一个服务端程序现发现了内存泄漏问题
  • 刚装了redhat Linux9,进入csdn发现左边的目录是乱码,我是新手请大家帮帮忙,谢谢!
  • linux下使用无线模块wifi发现不了网卡
  • 重大发现!广州地铁的闸门机的操作系统---Linux !
  • 我按了Slax Linux V5.1.8.1版,但是浏览网页时发现了一个严重的问题!!
  • 急,急,急!!!在linux下Apache配置完成后,发现80端口被用掉了,如何才能知道被哪个进程用掉。
  • 在Windows下通过Telnet登陆到FedoraCore3时发现中文都是乱码,而Linux下Shell里的中文可以正常显示
  • 同事新装的suse linux server 11,在装好后发现原来160G的硬盘只能加载15G,谁知道怎么挂载余下的硬盘呀?
  • 请问:我正在编linux下的openssl程序,调试时要用443号端口,但我发现不通,应是linux系统占用了,我怎可停了它以作我用,或停了系统的openssl
  • 我通国光盘安装了CENTOS4.4 但发现没有安装上LINUX源码 不知道 则么安装上去阿
  • 我用virtual pc装linux 9.0时,最后正常启动时发现图像极其模糊!!!
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • HTML标签参考手册 iis7站长之家


  • 站内导航:


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

    ©2012-2021,