UDP服务器性能优化:Perf和GCP的对比

RTC服务器是UDP协议,存在以下几个难点:

  1. UDP包数目众多,包普遍比较小。比如一个视频关键帧,可能会被分成几十个UDP发送。比如每个Opus包,几十到一百多字节不等。
  2. 不同协议需要复用端口(才能支持K8S云原生平台),每个包都需要找到对应的Session处理,客户端地址可能还会变更。
  3. 高实时性,每个Session要即时的收发数据,不能做主动聚集包后收发,每个Session短时间就一两个包处理,没有太多可以批量处理的包。
  4. 内核对UDP协议的性能优化,不如TCP高,优化方式也不如TCP多。
  5. 需要加密和解密,除了CPU消耗,还导致内存拷贝。

尽管这样,还是有不少可以做的,详细可以看下面的链接:

优化过程中,最关键的是压测工具srs-bench,以及Perf+GCP

发现Perf和GCP的数据有点差距,比如67%左右CPU使用时:

top - 14:58:57 up 25 days,  1:58,  4 users,  load average: 0.66, 0.76, 0.73
Tasks:  92 total,   2 running,  90 sleeping,   0 stopped,   0 zombie
%Cpu(s): 30.1 us,  5.1 sy,  0.0 ni, 61.8 id,  0.0 wa,  0.0 hi,  3.1 si,  0.0 st
KiB Mem :  8008964 total,   460028 free,  1390824 used,  6158112 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  6311680 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 8375 root       0 -20 1120556 992436   4192 R  68.1 12.4  24:14.17 srs
 8462 root      20   0  312104  36364   3800 S   1.0  0.5   0:25.25 perf
 6745 root      20   0  150332   6664   2380 S   0.7  0.1   0:15.11 dstat
    6 root      20   0       0      0      0 S   0.3  0.0  49:03.07 ksoftirqd/0

SRS的统计信息:

Hybrid cpu=70.00%,969MB, cid=47984,8, timer=24421,4394,19973, clock=0,45,4,0,0,0,0,0,0, 
objs=(pkt:0,raw:0,fua:0,msg:0,oth:401,buf:0,drop:0), 
cache=(pkt:20-31w,raw:109113-69w,fua:32227-41w,msg:1-41w,buf:19-34w)

RTC: Server conns=401, rpkts=(47734,rtp:47726,stun:1,rtcp:7), 
spkts=(1710,rtp:117,stun:1,rtcp:1592), rtcp=(pli:0,twcc:3982,rr:398), 
snk=(39826,a:19913,v:19913,h:0), rnk=(2,2,h:2,m:0), 
fid=(id:0,fid:5272,ffid:42461,addr:1,faddr:47734
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

winlinvip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值