Intel® Collaboration Suite for WebRTC
Community support and discussions on the Intel® Collaboration Suite for WebRTC (Intel® CS for WebRTC).

请教一下性能问题

Bo_M_
Beginner
16,665 Views

你好,我想请教一下,在MCU模式下,使用GPU加速的情况下,CPU还会消耗很多用于混音吗?我测试下来,GPU基本没有消耗,但是CPU消耗很是很多,这个是为什么?

软件安装:

Intel® Media Server Studio for Linux* 2016

Intel® Collaboration Suite for WebRTC Version 3.2 Update 1

CentOS 7.1 1503

 

硬件配置:4核Corei5 cpu

[root@localhost bin]# cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 60
model name      : Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz
stepping        : 3
microcode       : 0x1c
cpu MHz         : 3381.984
cache size      : 6144 KB

GPU信息:

[root@localhost bin]# lspci -nn -s 00:02.0
00:02.0 VGA compatible controller [0300]: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller [8086:0412] (rev 06)

./video_agent/video.toml配置如下:

[video]
#If true and the machine has the capability, the mixer will be accelerated by hardware graphic chips
hardwareAccelerated = true

#This configuration is only for software media engine. Hardware graphic acceleration provides H.264 by default
#true means OpenH264 is deployed for H.264. Otherwise no support of H.264 in MCU
openh264Enabled = false

配置的使用是使用硬件加速。

一个房间里面9个路视频接入,采用MCU模式。

4核总共消耗CPU16%左右,

top - 09:47:14 up 18:21,  2 users,  load average: 0.66, 0.60, 0.54
Tasks: 175 total,   1 running, 174 sleeping,   0 stopped,   0 zombie
%Cpu(s): 15.9 us,  2.2 sy,  0.0 ni, 81.3 id,  0.3 wa,  0.0 hi,  0.3 si,  0.0 st
KiB Mem :  7917976 total,  5334756 free,  1229376 used,  1353844 buff/cache
KiB Swap:  8126460 total,  8126460 free,        0 used.  6392068 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
13968 root      20   0 2419068  80228  20788 S  32.9  1.0   1:04.80 woogeen_video
13920 root      20   0 3035880  67848  13796 S  25.2  0.9   0:48.56 woogeen_audio
13732 root      20   0 3699600  82440  18700 S  16.6  1.0   0:31.86 woogeen_access
 2571 root      20   0  130056   1844   1268 R   0.7  0.0   0:00.13 top
13507 rabbitmq  20   0 2164268  69340   2880 S   0.7  0.9   7:10.38 beam.smp
13615 root      20   0 1028912  47748   8608 S   0.3  0.6   2:45.63 node
13670 root      20   0 1015752  32284   8660 S   0.3  0.4   0:42.95 node
13680 root      20   0  129928   1756   1272 S   0.3  0.0   2:30.14 top
13716 root      20   0 1019116  34100   8672 S   0.3  0.4   0:41.92 node
13726 root      20   0   21656   1968   1612 S   0.3  0.0   0:38.38 nload
13810 root      20   0 1016840  34064   8660 S   0.3  0.4   0:42.62 node
13820 root      20   0  129928   1764   1272 S   0.3  0.0   2:30.53 top
13914 root      20   0  129928   1776   1272 S   0.3  0.0   2:29.67 top
13962 root      20   0  130032   1780   1272 S   0.3  0.0   2:30.13 top

使用intel_gpu_top命令查看GPU消耗,GPU似乎基本没有消耗

                   render busy:   2%: ▌                                      render space: 2/131072
                bitstream busy:   0%:                                     bitstream space: 0/131072
                  blitter busy:   0%:                                       blitter space: 0/131072

                          task  percent busy
                           TSG:   1%: ▎                       vert fetch: 0 (0/sec)
                           GAM:   1%: ▎                       prim fetch: 0 (0/sec)
                           VFE:   1%: ▎                    VS invocations: 0 (0/sec)
                           TDG:   0%:                      GS invocations: 0 (0/sec)
                                                                GS prims: 0 (0/sec)
                                                           CL invocations: 0 (0/sec)

0 Kudos
21 Replies
Bo_M_
Beginner
14,988 Views

我重新尝试把./video_agent/agent.toml 文件配置如下:把hardwareAccelerated设置为false ,openh264Enabled=true,设置成不用硬件加速,仅仅使用CPU的情况

[video]
#If true and the machine has the capability, the mixer will be accelerated by hardware graphic chips
hardwareAccelerated = false

#This configuration is only for software media engine. Hardware graphic acceleration provides H.264 by default
#true means OpenH264 is deployed for H.264. Otherwise no support of H.264 in MCU
openh264Enabled = ture

测试下来看CPU消耗也是16%左右,和上面的使用硬件加速的情况一样,硬件加速没有起作用,是我哪里配置有问题吗?

0 Kudos
Lei_Z_Intel1
Employee
14,988 Views

请确认你使用的是VP8 Codec还是H.264,只有H.264才能利用硬件加速,对于VP8即使是硬件加速版也是使用软件编解码。目前Chrome浏览器对H.264已经支持比较好,所以H.264是不错的选择。

另外对于v3.2软件版启用,除了改openh264Enabled = ture,还要按照Conference Server Guide文档下载Cisco OpenH264,以及做一些相关配置。请知晓。

如果还不能解决你的疑问,请把以下log打开,然后看看video的log就知道是细节了。

dist/video_agent/ log4cxx.properties

log4j.logger.woogeen.VCMFrameDecoder=DEBUG

log4j.logger.woogeen.VCMFrameEncoder=DEBUG

log4j.logger.mcu.media.SoftVideoCompositor=DEBUG

log4j.logger.woogeen.MsdkFrameDecoder=DEBUG

log4j.logger.woogeen.MsdkFrameEncoder=DEBUG

log4j.logger.mcu.media.MsdkVideoCompositor=DEBUG

0 Kudos
Bo_M_
Beginner
14,988 Views

@Lei

谢谢你的解答,我已经按配置文档下载了Cisco OpenH264,软件编解码应该是没有任何问题。

对于硬件加速的,我怎么看是否使用的是H.264,这个需要在哪里配置吗?

0 Kudos
Lei_Z_Intel1
Employee
14,988 Views

客户端没有特别设置默认是采用VP8的。如果要看到细节客户端可以通过getConnectionStats等接口获得,服务端打开video-agent的DEBUG log,可以在log文件中看到codec的情况。

0 Kudos
Bo_M_
Beginner
14,988 Views

@Lei

怎么配置客户端采用H264?

你说的那几个日志项,前三个是有的我已经打开DEBUG了,但是后三个没有找到。video日志如下

我硬件加速已经开启,Hardware acceleration enabled

0 Kudos
Lei_Z_Intel1
Employee
14,988 Views

以JS端为例,publish和subscribe时都用codec参数指定。具体请参见Client SDK guide。

你提供的log确实说明是采用的是VP8的codec,你可以用VP8或者264作为关键词去搜索。

0 Kudos
Bo_M_
Beginner
14,988 Views

@Lei

以你们给的实例代码为例该修改哪个文件?是woogeen.sdk.js吗?能告知怎么修改不,具体是哪一个接口进行设置的

0 Kudos
Bo_M_
Beginner
14,988 Views

你们给的代码好像都是经过处理了,根本就没法看了,想修改感觉无从下手

0 Kudos
Lei_Z_Intel1
Employee
14,988 Views

那是SDK部分,example代码的目录位置请参见conference guide内的描述,在Release-<Version>/extras/basic_example/目录下。

0 Kudos
Bo_M_
Beginner
14,988 Views

@Lei

已经修改好了,能正常使用,谢谢。不过又出现了很奇怪的问题,我建立一个房间没有出问题。但是见两个房间的时候,每个房间九路视频,过一会儿那台做服务器的PC就直接崩溃掉了。

操作系统:Centos 7.1 1503

4核处理器Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz,4G内存,使用的是物理PC机。挂掉的时候CPU,内存,GPU消耗并没有特别高。

0 Kudos
Lei_Z_Intel1
Employee
14,988 Views

是否稳定重现,请多试几次,可以查看一下系统崩溃前的MCU log和系统coredump信息,看看有没有有价值的信息提供给我们。

0 Kudos
Bo_M_
Beginner
14,988 Views

稳定重现,需要哪些log,具体路径和文件名是啥?

出现的情况是这样的:我是从其他pc远程过去的,挂的时候是远程直接断了,到本机看是鼠标键盘都实现,但是显示器是有显示的,只能通过电源键强制重启。

0 Kudos
Lei_Z_Intel1
Employee
14,988 Views

可以关闭MCU后, 把Release-v3.2.1/logs 目录清空,然后重新启动MCU测试,crash后把新生成的logs目录打包发给我们。

0 Kudos
Bo_M_
Beginner
14,988 Views

系统崩溃的时候,鼠标键盘都失效了,显示器也定格在之前的画面,只能通过电源键强制重启

0 Kudos
Bo_M_
Beginner
14,988 Views

两个房间,每个房间9路视频

我是先清空了logs目录,再跑起来的,崩溃后日志打包如下,烦请分析一下,谢谢

0 Kudos
Lei_Z_Intel1
Employee
14,988 Views

MCU log看过了,没有任何异常信息,机器配置是msdk2016, haswell

只能看看系统级的log,是不是机器的各方面配套不完善,比如散热等。

  1. 配置Core dump, if crash happened, related coredump file would be generated in /tmp/ folder with core.xxx file name.
    • ulimit -c unlimited
    • echo “/tmp/core.%e.%p.%h.%t" > /proc/sys/kernel/core_pattern
  2. CPU温度监控
  • sudo yum install lm_sernsors
  • sudo sensors-detect
  • sensors

            运行一个脚本监控mcu运行时的温度,检查crash前是否有温度过高的情况

  1. 系统log

/var/log/*

/var/log/messages

/var/log/boot.log

/var/log/dmesg

0 Kudos
Bo_M_
Beginner
14,988 Views

@Lei

没有找到core文件,系统日志,和温度监控见附件

0 Kudos
Lei_Z_Intel1
Employee
14,988 Views

请问机器crash发生在哪两次Reloading的时间段?

Jan 23 09:36:51 localhost systemd: Reloading.

Jan 23 09:38:41 localhost systemd: Reloading.

Jan 23 10:00:02 localhost systemd: Reloading.

Jan 23 10:37:02 localhost systemd: Reloading.

0 Kudos
Bo_M_
Beginner
14,988 Views

是下面这个时间段

Jan 23 10:00:02 localhost systemd: Reloading.

Jan 23 10:37:02 localhost systemd: Reloading.

那个附件里面的截图上有显示,应该是10:31:06左右挂掉的,过了几分钟,我强制重启的。基本跑半个小时左右就会复现

0 Kudos
Lei_Z_Intel1
Employee
14,937 Views

关于这个问题,目前没有特别的发现。由于春节假期,工程师需要节后才能继续分析。如果着急,有两个思路,一个是用FFPlay之类的播放器软件试着把系统的负载加到类似温度查看时候有同样crash现象。另外,可以试着换一台机器看看有没有类似的问题。抱歉带来的不便。

0 Kudos
Reply