Rate This Document
Findability
Accuracy
Completeness
Readability

Testing the Video Stream Cloud Phone Density

  1. Extract the cfct_config file from the DemoVideoEngine.tar.gz package.
    #cd /home/kbox_video/
    #tar -xvf DemoVideoEngine.tar.gz cfct_config
    #chmod 644 cfct_config
  2. Check BIOS configuration parameters and the GPU working mode. For details, see Configuring the BIOS and Configuring the GPU Working Mode.
  3. Use the BMC to adjust the server fan speed percentage to 100%.
    1. Log in to the BMC over SSH.
      ssh {BMC_user_name}@{BMC_IP_address}
    2. Set the fan speed adjustment mode to manual.
      ipmcset -d fanmode -v 1 0
    3. Set the fan speed percentage to 100%.
      ipmcset -d fanlevel -v 100
    4. Query the fan status.
      ipmcget -d faninfo

    The command output is as follows:

  4. Bind the GPU driver processes to idle cores. For details about how to bind NIC interrupts to idle cores, see "Binding NICs to CPUs" in the Kbox Cloud Phone Container Feature Guide.
    #ps -ef |grep gfx
    #taskset -pc 32-33 1379
    #taskset -pc 64-65 1511

    If four GPU driver processes are displayed, bind the first two driver processes to cores 32 to 33 and the last two driver processes to cores 64 to 65.

  5. Scatter single-queue NIC interrupts. For a single-queue NIC, the RPS service can be used to distribute interrupts to each core. This prevents performance bottlenecks caused by high soft interrupts centralized to a single core. The method is as follows. NIC enp125s0f1 is used as an example.
    #systemctl stop irqbalance.service
    #systemctl disable irqbalance.service
    #echo ff > /sys/class/net/enp125s0f1/queues/rx-0/rps_cpus
    #echo 4096 > /sys/class/net/enp125s0f1/queues/rx-0/rps_flow_cnt
    #echo 32768 > /proc/sys/net/core/rps_sock_flow_entries
  6. Set the CPU_BIND_MODE field in the cfct_config file to the value in Table 1 (0 indicates two containers, two cores).
    Table 1 Mapping between test specifications and CPU_BIND_MODE

    Test Specifications

    CPU_BIND_MODE

    7265F processor + W6800, 115 channels (higher density), Subway Surfers (novice level), 720p@30 fps

    0

    7260 processor + W6600, 100 channels (higher density), Subway Surfers (novice level), 720p@30 fps

    0

    If the 7260 processor + W6600 density test in Table 1 is performed, ensure that Modifying the W6600 Density Test Configuration has been performed.

  7. When using the cfct_video script to start multiple containers, decide the number of containers to be started based on Table 1 in step 6. The following uses 115 as an example. Run the following commands in sequence.
    The four commands are used to start cloud phones, start the game app, play the novice level, and capture screens, respectively.
    #./cfct_video qstart 1 115
    #./cfct_video start_game 1 115
    #./cfct_video play_game 1 115
    #./cfct_video screencap 1 115

    After screen capture is complete, download the screenshots to the local host. If all screenshots are game screens of Subway Surfers, as shown in the following figure, the app is successfully started.

  8. Prepare two Kbox cloud phones (for example, kbox_1 and kbox_2) on another server to install the pressure test tool (CloudPhoneClientEmulator_20230413.apk) or video stream client APK.

    Kbox cloud phone specifications: 8 cores, 32 GB memory, and 64 GB storage space. After installing the pressure test tool on the two Kbox cloud phones, connect them to the server (each pressure test tool supports a maximum of 58 concurrent connections) and collect data for 15 minutes.

    Open the pressure test tool, input 15 in the upper left corner, and click Start in the upper right corner.

    After the 15-minute countdown ends, a frame rate analysis report is generated.

  9. Obtain native_perf_tools_20230415.tar.gz from Video Stream Engine and decompress it. Then go to the native_perf_tools folder, and run the following commands in sequence to collect data for 15 minutes: `{prefix_number}` is the prefix of the folder for storing collected data. In the following figure, 115 is used as an example.
    #source env.sh
    #./native_get_perf_data.sh all {prefix_number}

  10. After the collection is complete, download the following files to the local host, parse the files, and generate test reports.
    1. log folder in the native_perf_tools folder on the server, which contains performance data of the server, such as performance data of CPUs, GPUs, and encoding cards.
    2. /home/mount/data/kbox_1/data/media/0/logs and /home/mount/data/kbox_2/data/media/0/logs directories on the client, which contains receiving frame rate data collected by the pressure test tool.
    3. The client.log file in the /sdcard/log directory on the mobile phone client is the client log file, including information about the decoding frame rate and network lag.
    4. Place the preceding files and folders in the same path, for example, D:\tmp.
      Download ExtractingData_20230310.tar.gz and decompress it. Go to the ExtractingData folder and run the following command:
      python parse.py D:\tmp

      An output folder is generated in D:\tmp, which contains tables and images.