发送优化方面,主要就是调整live555的缓冲区大小和每次发送的数据大小,众所周知,流媒体发送的是各种大小的音视频数据,而这些数据大的几百k,小的就几个字节,如果每一个零散的数据都要走一遍发送循环,对于live555这种单线程的架构来说,性能吃紧,所以做了几点调整:

MediaSink.cpp
114行:
unsigned OutPacketBuffer::maxSize = 30000;StreamParser.cp
宏定义:
#define BANK_SIZE 150000,改为2400000;MultiFramedRTPSink.cpp
47行:
setPacketSizes(1000, 8192);RTPInterface.cpp
129行:
increaseSendBufferTo(envir(), fGS->socketNum(), 512*1024);
//数据累积发送,不再单独发送
//注释掉332行,修改为以下:
//if (!sendDataOverTCP(socketNum, framingHeader, 4, False)) break;
//if (!sendDataOverTCP(socketNum, packet, packetSize, True)) break;struct iovec iov[2];iov[0].iov_base = framingHeader;iov[0].iov_len = 4;iov[1].iov_base = packet;iov[1].iov_len = packetSize;writev(socketNum, iov, 2);

调度方面优化

MultiFramedRTPSink.cpp
402 行
//当前的数据缓冲区如果没有发送完成,就继续发送,不再走一遍live555的eventloop流程,提高效率!#if 0// We have more frames left to send.  Figure out when the next frame// is due to start playing, then make sure that we wait this long before// sending the next packet.struct timeval timeNow;gettimeofday(&timeNow, NULL);int secsDiff = fNextSendTime.tv_sec - timeNow.tv_sec;int64_t uSecondsToGo = secsDiff*1000000 + (fNextSendTime.tv_usec - timeNow.tv_usec);if (uSecondsToGo < 0 || secsDiff < 0) { // sanity check: Make sure that the time-to-delay is non-negative:uSecondsToGo = 0;}if (uSecondsToGo > 0)printf("uSecondsToGo: %d\n", uSecondsToGo);// Delay this amount of time:nextTask() = envir().taskScheduler().scheduleDelayedTask(uSecondsToGo, (TaskFunc*)sendNext, this);
#elsesendNext(this);
#endif

这样几点修改,大大提升了 live555 在网络数据发送方面的性能

live555 调优总结相关推荐

  1. JVM内存调优原则及几种JVM内存调优方法

    JVM内存调优原则及几种JVM内存调优方法 1.堆大小设置. 2.回收器选择. 1.在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因 ...

  2. pyspark性能调优参数

    20220311 参数调节 把executor数量调小,其他参数值调大,不容易报错 一.指定spark executor 数量的公式 executor 数量 = spark.cores.max/spa ...

  3. MindSpore模型精度调优实践

    MindSpore模型精度调优实践 引论:在模型的开发过程中,精度达不到预期常常让人头疼.为了帮助用户解决模型调试调优的问题,为MindSpore量身定做了可视化调试调优组件:MindInsight. ...

  4. 2021年大数据Hive(十一):Hive调优

    全网最详细的大数据Hive文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 Hive调优 一.本地模式 1.空key处理 二.SQL ...

  5. Tomcat 调优及 JVM 参数优化

    Tomcat 本身与 JVM 优化 Tomcat:调整Server.xml JVM:bat启动服务方式的话修改catalina.bat 服务式启动的话参考:http://www.cnblogs.com ...

  6. linux内核调优参考

    对于新部署的机器,需要做一些基本的调优操作,以更改一些默认配置带来的性能问题 1 修改打开文件数 root@mysql:/data/tools/db# vim /etc/security/limits ...

  7. php设置backlog,高并发调优backlog多大合适?

    么对于nginx,对于php-fpm,backlog应该设置多大,是越大越好吗?backlog怎么设置合适?这是上篇文章中遗留的几个问题 接着上篇文章Nginx高并发调优中常被忽略的参数中,最后部分, ...

  8. linux7 kernel.sem,centos7.4内核调优,tcp单服务器万级并发

    在使用linux的centos7.4遇到的各种坑,其中一个项目采用四层架构,配置层,平台层,逻辑服务器管理层和集体逻辑服务器层的,一个整体的游戏项目,其中,作为整个项目负责人和架构打架着,项目运行一年 ...

  9. mysql 5.7 驱动_这些 MySQL 调优配置,你都知道吗?

    关注我的头条号,获取更多运维相关知识. 你想了解哪方面的运维知识,请评论区告诉我,我会尽快更新~ MySQL 数据库,基本上运维都会接触到,而对于数据库的性能优化,想必是大家比较关注的,下面分享一些调 ...

最新文章

  1. 基于TensorFlow理解三大降维技术:PCA、t-SNE 和自编码器
  2. 信息检索Information Retrieval评价指标
  3. 使用FastReport报表工具生成报表PDF文档
  4. 【BZOJ 4103】 [Thu Summer Camp 2015]异或运算 可持久化01Trie
  5. php callback 多线程,PHP cURL并发里的callback那行是什么效能
  6. Spark报错 Failed to send RPC xxx to/ip:43074 java.nio.channels.ClosedChannelException
  7. 大火C4D元素,电商大促海报背景BANNER素材
  8. 马云行业预测:人工智能下,未来10年机器人占领职场
  9. LeetCode刷题(9)
  10. AI攻城狮,你需要那个数据集的种子么?
  11. 转:10+年程序员总结的20+条经验教训
  12. ajax有哪些回调函数
  13. Django发送电子邮件
  14. Ceph常见问题处理(octopus 15.2.13)
  15. 屏幕录制和视频剪辑Filmage Screen
  16. jquery实现手风琴展开效果
  17. OptiView® XG 网络分析平板电脑特性(上)
  18. 我投资失败的 7 个项目,都是这样死掉的!|徐小平
  19. 31年前,中国第一封电子邮件:Across the Great Wall we can reach every corner in the world.
  20. 从时频特性出发——什么是循环卷积?

热门文章

  1. 超实用干货:这6个好方法,瞬间提升你的工作效率
  2. 今日学习内容--机器学习的测试集选择方法
  3. scrapy 智联 mysql_Python利用Scrapy爬取智联招聘和前程无忧的招聘数据
  4. java跟onenet平台交互_中移物联OneNET平台HTTP协议接入
  5. CSDN日报190813:一个野生程序员的自我修养
  6. ModelArts第二次培训(声音分类和文本分类)
  7. 科普:身份证号为什么不会重复?
  8. Java swing五种常见的布局方式【转载】
  9. Delphi 7启动后提示Unable to rename delphi32.dro的解决办法
  10. 玄武云科技冲刺上市:收入整体呈增长态势,未获“玄武”相关商标