鲲鹏社区首页
中文
注册
开发者
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

设置cfct_config配置文件(配置方案一)

通过设置cfct_config配置文件可以灵活配置视频流云手机使用的资源,使性能达到最优。云手机启动时必须在启动路径下存放cfct_config配置文件,云手机容器会使用该文件中的配置,使用时应确保cfct_config配置文件中的配置正确。

cfct_config配置文件配置项和配置方法如下所示。

  1. 解压cfct_config配置文件并设置文件权限,使文件拥有者有读写权限而其他属组用户和其他用户只有读权限。
    1
    2
    3
    cd /home/kbox_video/
    tar -xvf DemoVideoEngine.tar.gz cfct_config
    chmod 644 cfct_config
    
  2. 通过配置GPU、CPU、ENC、USERDATA等map中对应路数的值,选择该路容器使用的GPU、CPU、NETINT编码卡,以及数据卷存放路径。

    为确保视频流云手机的稳定运行与最佳性能,请保障每个容器所绑定的CPU物理核和GPU渲染节点同属于一个CPU片。

  3. NETINT编码卡的节点在不同服务器中会有区别,应根据实际情况修改cfct_config中NETINT的值,保证编码不会因跨片导致性能损失。
  4. 如果要使能Quadra/T432编码卡硬解,需要将cfct_config中的“T432_QUADRA_DECODE_ENABLE”设置为“1”
  5. 针对1张GPU卡环境:需要修改cfct_config配置文件中VIDEO_CPU_MAP_{CPU总核数}CORE_MODE{CPU_BIND_MODE变量值}。NETINT编码卡芯片节点所属NUMA查询方式请参见NETINT编码卡芯片节点所属NUMA查询方式

    以VIDEO_CPU_MAP_128CORE_MODE0为例,保留该配置变量下与GPU绑定的CPU配置,删除其他配置,当GPU卡插在CPU0上时,删除MODE0_CPUS2和MODE0_CPUS3所有相关引用;若GPU卡插在CPU1上时,删除MODE0_CPUS0和MODE0_CPUS1所有相关引用。GPU卡所属NUMA查询方式请参见AMD GPU渲染节点所属NUMA的查询方式

  6. 针对1张编码卡环境:需要修改cfct_config配置文件中“VIDEO_ENC_MAP_CORE”
  7. 当编码卡插在CPU0上时,删除“${NETINT1}”;若编码卡插在CPU1上时,删除“${NETINT0}”
  8. 如果要使能WebRTC特性,需要将cfct_config中的“ENABLE_WEBRTC_CONNECTION”设置为“1”。若视频帧采用CPU进行软编码,需要将cfct_config中的“CPU_BIND_MODE”设置为“1”,以防卡顿。
  9. 如果需要使能图形加速层,需要将cfct_config中“ENABLE_RENDER_LAYER”设置为1。详细说明请参见图形加速层的基本功能和使用说明

NETINT编码卡芯片节点所属NUMA查询方式

  1. 通过nvme list命令查看编解码卡芯片对应节点号。
    1
    nvme list
    

    以下回显为NETINT编码芯片NVMe节点,该内容为回显示例,请以实际为准。

    1
    2
    3
    4
    Node          SN                   Model            Namespace Usage                    Format           FW Rev
    ------------- -------------------- ---------------- --------- ------------------------ ---------------- --------
    /dev/nvme0n1  Q2A325A11DC082-0454A QuadraT2A        1         8.59  TB /   8.59  TB    4 KiB +  0 B     48F6rKr1
    /dev/nvme1n1  Q2A325A11DC082-0454B QuadraT2A        1         8.59  TB /   8.59  TB    4 KiB +  0 B     48F6rKr1
    
  2. 查看NVMe节点与PCIe bus号对应关系。
    {index}1回显信息所示的NVMe节点编号。例如/dev/nvme1n1,该节点{index}即为1。
    1
    find /sys/devices/ -name nvme{index}
    

    回显如下,其中0000:05:00.0为该设备对应的busID:

    1
    2
    /sys/devices/pci0000:00/0000:00:0e.0/0000:05:00.0/nvme/nvme1
    /sys/devices/virtual/nvme-subsystem/nvme-subsys1/nvme1
    
  3. 通过bus号找到该节点与NUMA从属关系。
    {busID}为上一步骤获取的bus号。以nvme1设备的回显为例,{busID}即为0000:05:00.0。
    1
    lspci -vvvs {busID} | grep NUMA
    

    回显如下。

    1
    NUMA node: 0
    
  4. 根据编码卡NVMe设备节点对应的NUMA修改cfct_config中NETINT的值。

    鲲鹏920 7265F/7260服务器:从属于0、1号NUMA的NVMe节点写在NETINT0字段中,从属于2、3号NUMA的NVMe节点写在NETINT1字段中。

    字段中每个设备需添加两个节点。例如2号NVMe设备,需添加“/dev/nvme2”、“/dev/nvme2n1”两个节点。

    # NETINT编码卡设备节点
    NETINT0="/dev/nvme0,/dev/nvme0n1,/dev/nvme1,/dev/nvme1n1"
    NETINT1="/dev/nvme2,/dev/nvme2n1,/dev/nvme3,/dev/nvme3n1"

AMD GPU渲染节点所属NUMA的查询方式

AMD GPU每张卡对应1个GPU渲染节点。

  1. 获取GPU渲染节点命令。
    1
    ll /dev/dri/by-path/ | grep renderD
    

    回显示例如下。

    1
    2
    lrwxrwxrwx 1 root root 13 Oct 25 10:58 pci-0000:03:00.0-render -> ../renderD128
    lrwxrwxrwx 1 root root 13 Oct 25 10:58 pci-0000:83:00.0-render -> ../renderD129
    

    说明该服务器插了两张AMD GPU,渲染节点分别为renderD128,renderD129。

  2. 查询NUMA节点命令。
    1
    cat /sys/bus/pci/devices/0000\:XX\:00.0/numa_node 
    

    其中,指令中的“XX”应按1中的实际回显IP地址进行修改。以回显renderD128为例,查询指令应为:

    1
    cat /sys/bus/pci/devices/0000\:03\:00.0/numa_node
    

    回显如下所示。

    1
    0
    

    该回显表明GPU渲染节点renderD128所在NUMA节点为0。

图形加速层的基本功能和使用说明

当前图形加速层使能了两个功能:
  • ShaderCache:通过预构建二进制、多云手机共享缓存,消除着色器编译链接等处理时间。
  • GPUMock:对GPU的厂商、型号、GLMax、GLES版本、拓展进行模拟。

以上两个功能均可使用kbox_render_accelerating_configuration.xml文件进行配置。配置步骤如下:

  1. 复制xml配置文件。
    cp Kbox-AOSP11/deploy_scripts/kbox_render_accelerating_configuration.xml /home/kbox_video/
  2. 打开配置文件,对应用的图形加速层功能进行配置,配置规则如下:
    • 首先读取系统通用配置,然后读取具体应用配置。若具体的应用没有进行自己的配置,则采用系统配置;若有,则对系统配置进行覆盖。
    • 系统通用配置禁止使能ShaderCache功能。
    • 仿照配置文件注释中的“应用配置示例”对具体应用进行配置;图形加速层功能可进行选配,默认关闭;每个功能下的具体配置参数可按需求进行选填。
    • 应用使能ShaderCache功能会自动使能GPUMock功能。
  3. 使能应用的某个功能,只需将对应的应用以及功能的“isEnable”字段设置为“true”
  • 首次启动云手机后,若需要修改图形加速层功能的配置,修改配置文件中应用对应的配置,手动将其拷贝到云手机容器“/data/local/tmp”路径,重启应用生效。
  • 宿主机上多容器共享一个着色器缓存路径,可以先启动一路云手机预收集应用尽可能完整的着色器,其他云手机通过将配置文件对应的应用设置为只读模式来使能ShaderCache功能,此时性能最佳。
  • ShaderCache功能没有缓存淘汰机制,若是缓存文件系统存储已满或者游戏版本更新,为了避免着色器和二进制文件不能对应,请清理整个文件系统的缓存。