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

对于这样的问题该如何提高其效率?

    来源: 互联网  发布时间:2015-07-25

    本文导语:  就是接收到一个UDP数据包后,对其中数据进行简单的处理(对数据内容有修改,处理时间不是太长),然后再转发出去(也是UDP方式),但是要求效率能高些,不至于在高峰时期发生丢包现象. 请问如何提高其效率? | ...

就是接收到一个UDP数据包后,对其中数据进行简单的处理(对数据内容有修改,处理时间不是太长),然后再转发出去(也是UDP方式),但是要求效率能高些,不至于在高峰时期发生丢包现象.
请问如何提高其效率?

|
Creating two threads and one message queue (for capability you should implement the queue yourself and not make use of SYSTEM V message queue ), one is responsible to receive data and send it into a queue and the other is responsible to receive data from queue and transfer data.

If your system has not enough capability, the data maybe is lost.

|
1.用C
2.多进程或者多线程
3.加大缓冲区大小
4.优化程序(代码优化,结构优化等等)

|
多线程
加大缓冲区

|
如果流量真的非常大的话,还是不要单纯依赖这些手段。
自己在UDP上实现一些丢包检测之类的机制吧,就像NFS那样。
性能和稳定性总是矛盾的。

|
这跟缓冲区有什么关系,一次只能处理一个包

多线程加为速度优化的代码
比如:预分配内存,用C/C++基本数据类型(用char*而不是CString或string),用inline,减少系统调用特别是互斥、信号之类(线程同步可以巧妙设计以避免使用这些奢侈对象)

|
用队列不会丢包,最多队列越来越长。但是对于实时性要求较高的地方用队列不好,我做的测试发现延时很严重。
在linux下我使用多线程(设为实时)转发和多进程转发在实时性方面竟没有多少区别,不知为啥
还有如果想让多个线程为实时又有同样高的优先级不知道该怎么设置priority的值.

|
在UDP方式下丢包是绝对的,不丢包只在一些特殊情况下才会发生,譬如你的网络负荷非常低,而且不存在突发的网络传输高峰,如果你需要保证可靠传输,只能采取附加手段
采用多线程和多进程从理论上是完全一样的,基本上不会有性能突破,单线程和多线(进)程的区别是在多线(进)程模式下,你可以采取阻塞读方式,在系统负荷不高的情况下,可以立刻把收到的数据读走,尽量避免丢包
常用的方式是使用两个线程,一个阻塞读,读到数据以后存放到循环缓冲区,另一个线程从循环缓冲区读数据,处理后发送,这样做的主要原因是为了避免接收时丢包,发送线程如果发的太快也会丢包,事实上如果单线程程序设计好了也可以达到同样的效果

|
多线程是可以优化的
一个线程负责接收数据,然后将数据发给子线程处理
优化点是创建线程的开销,不要自动结束线程,处理完成后等待下一个任务
调度线程不能等待,因为数据必须被及时接收,否则就会丢失
子线程则不必及时启动,子线程可以定时检查是否已经有了新任务,子线程休眠的时间对于客户来讲是无关紧要的,对于服务器却省去了线程同步的开销

    
 
 

您可能感兴趣的文章:

  • 请问RPC的效率问题。
  • 关于加密算法的效率问题
  • FIFO和Socket通信的并发效率问题
  • 一个效率问题
  • cdt效率问题?
  • JavaMail效率问题
  • 关于AF_LOCAL的效率问题
  • Linux里计算器的一个问题 关于效率的!
  • 请教进程fork()相关的,执行效率的问题,看我这段程序. iis7站长之家
  • 关于java效率的问题.
  • 关于TCP效率问题
  • 引用与指针的效率问题
  • 求助:用虚拟机运行linux/unix效率问题
  • 小问题一个:vmware和真正机器的效率比
  • 关于POSIX message queue的效率问题?
  • JDBC效率问题,才2,3张表连接查询就慢得受不了?高分求解......
  • 请教进程fork()相关的,执行效率的问题,看我这段程序.
  • 关于Bean的生命周期与效率的问题
  • 来一个高难的问题:怎样能保证文件的物理连续存储?或者说如何能最大限度提高文件I/O的效率?
  • ###用JAVA做聊天室的一个效率问题,请帮忙!###
  • @@@@@@@ 提两个80386保护编程方面的问题,为提高本版的贴子量尽点力 @@@@@@@@@@@
  • 用户态代码性能提高的问题,如何让出CPU利用率??
  • 再问一遍,关于syslog的问题(提高分数了!)
  • MySQL中Stmt 预处理提高效率问题的小研究
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • 简单问题简单问题简单问题简单问题
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • 小问题,急问题,重大问题!!!
  • sharepoint 2010中item.Update()和item.SystemUpdate 修改数据版本问题解决
  • 弱弱的一问,linux下的中文问题及网络问题,分不是问题
  • 八个问题帮你快速了解Docker
  • 请教两个小问题:一个cgywin下使用vi的问题,另一个socket的问题
  • 错误:将'const x'作为'x'的'this'实参时丢弃了类型限定问题解决
  • 网页的编码问题!或者java的编码问题,由此引出一条解决中文问题的思路
  • nginx Windows版相关问题及使用说明
  • 死锁的问题 多级锁定问题 循环锁定问题
  • vs2010下禁用vmware的方法以及解决vmware插件导致vs2010变慢的问题
  • [问题]双系统出现的问题!求问题的原因和解决办法!
  • Linux下时钟同步问题:Clock skew detected原因分析及解决方法
  • 初学者问题。一个是编译hello world的问题,一个是配置ssh的问题
  • c/c++服务器程序内存泄露问题分析及解决
  • C程序问题:哪个高手帮我解释下下面的问题,主要是a[0]和&[0] 的区别 和编译器的问题??
  • ​部署 Docker 前必须问自己的四个问题
  • swing的问题还是jbuiler的问题??
  • spring的事务类型及spring和hibernate可能导致的问题分析
  • 菜鸟第一次安装红帽子7.2的一箩筐问题。每个问题会开个帖子,各放100分!请有安装经验的老鸟们帮忙解决。第二个问题:什么是LILO?怎么样


  • 站内导航:


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

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

    浙ICP备11055608号-3