---
title: 设置cfct_config配置文件（配置方案一）
description: "通过cfct_config文件配置参数可以灵活配置视频流云手机使用的资源，使性能达到最优。云手机启动时必须在启动路径下存放cfct_config配置文件，云手机容器会使用该文件中的配置，使用时应确保cfct_config配置文件中的配置正确。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2530/armnative15/kunpengcpsvideo_20_0061.html
sourcePath: /source/zh/kunpengboostkithistory/2530/armnative15/kunpengcpsvideo_20_0061.html
indexId: e3ffdaf911b4fed783c8f6858a688ff28c14a27ce3b6dc9ff873f2ff032eaaf679
---
# 设置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编码卡的节点在不同服务器中会有区别，请参见4并结合实际情况修改cfct_config中NETINT的值，保证编码不会因跨片导致性能损失。
4. 针对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的查询方式。

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

#### 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。


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

当前图形加速层使能了两个功能：

- GPUMock：对GPU厂商、GPU型号、OpenGL ES版本、GLMax能力值、OpenGL ES拓展进行模拟。
- ShaderCache：通过预构建着色器二进制、多云手机共享缓存，消除着色器编译链接等处理时间，降低OpenGL ES大型应用运行卡顿率。

以上两个功能均可使用kbox_render_accelerating_configuration.xml配置文件进行功能配置。图形加速层的使能步骤如下：

1. 修改云手机启动配置文件cfct_config中“ENABLE_RENDER_LAYER”设置为1。
2. 从软件包Kbox-AOSP15.zip中复制kbox_render_accelerating_configuration.xml配置文件到启动路径/home/kbox_video/。

```
cp /home/kbox_video/Kbox-AOSP15/deploy_scripts/kbox_render_accelerating_configuration.xml /home/kbox_video/
```


3. 打开kbox_render_accelerating_configuration.xml配置文件，对应用的图形加速层功能进行配置。具体配置项描述请参见图形加速层配置项章节的图形加速层配置项说明。

- 首次启动云手机后，若需要修改图形加速层功能的配置，修改配置文件中应用对应的配置，手动将其拷贝到云手机容器“/data/local/tmp”路径，重启应用生效。
- 宿主机上多容器共享一个着色器缓存路径，可以先启动一路云手机预收集应用尽可能完整的着色器，其他云手机通过将配置文件对应的应用设置为只读模式来使能ShaderCache功能，此时性能最佳。
- ShaderCache功能没有缓存淘汰机制，若是缓存文件系统存储已满或者游戏版本更新，为了避免着色器和二进制文件不能对应，请清理整个文件系统的缓存。
