Why performance is higher on LITTLE cores?

Hi all,

I am using the HiKey970 board to run inferences on neural networks. The board comprises ARM Cortex-A73 and ARM Cortex-A53 cores.
I am using `taskset` to pin the inference process (that spawns 4 threads) once on the LITTLE cores (0-3) and once on the big cores (4-7). Contrary to what I was expecting, the inference time is almost double when running on big cores, compared to LITTLE cores.

Is there an explanation for this behavior? Are there tools that can help me understand why the threads are slower when using big cores?

To be more precise, the board is flashed with kernel version 4.9.78-147538-g244928755bbe, the code that I am using can be found in this repo.

Parents
  • Hi zois,

    Big processor consumes more energy, hence generates more heat.
    It is possible that temperature could be a cause of poor performance while running on the big cluster.

    You can check transition tables between states on cooling devices due to the temperature with:

    cat /sys/devices/virtual/thermal/cooling_device*/stats/trans_table

    You can check if the corresponding cooling_device affects CPU frequency:

    cat /sys/devices/virtual/thermal/cooling_device*/type

    You could run this script before and after your application and check differences.

    #!/bin/bash
    
    for cdev in `ls -d /sys/devices/virtual/thermal/cooling_device*`
    do
        echo ${cdev}
        cat ${cdev}/type
        cat ${cdev}/stats/trans_table
        echo ""
    done

Reply
  • Hi zois,

    Big processor consumes more energy, hence generates more heat.
    It is possible that temperature could be a cause of poor performance while running on the big cluster.

    You can check transition tables between states on cooling devices due to the temperature with:

    cat /sys/devices/virtual/thermal/cooling_device*/stats/trans_table

    You can check if the corresponding cooling_device affects CPU frequency:

    cat /sys/devices/virtual/thermal/cooling_device*/type

    You could run this script before and after your application and check differences.

    #!/bin/bash
    
    for cdev in `ls -d /sys/devices/virtual/thermal/cooling_device*`
    do
        echo ${cdev}
        cat ${cdev}/type
        cat ${cdev}/stats/trans_table
        echo ""
    done

Children
More questions in this forum