He estado jugando con los gobernadores CPUFreq de la versión octacore del Samsung Galaxy S4 y olvidé cuál era el dispositivo gobernador predeterminado que Samsung configuró para operar.
El regulador predeterminado en el GT-I9500 se llama "ondemand-sec". Estoy ejecutando el firmware XXUEMJ9 (Android 4.3). Es una versión modificada del gobernador bajo demanda. Aquí hay un listado en /sys/devices/system/cpu/cpufreq
:
root@ja3g:/sys/devices/system/cpu/cpufreq # ls -al
drwxr-xr-x 5 0 0 0 Nov 14 12:38 .
drwxr-xr-x 9 0 0 0 Nov 14 12:38 ..
drwxr-xr-x 2 0 0 0 Nov 14 12:38 iks-cpufreq
drwxr-xr-x 2 0 0 0 Nov 14 12:38 ondemand
drwxrwxrwx 2 0 0 0 Nov 14 12:39 ondemand-sec
root@ja3g:/sys/devices/system/cpu/cpu0/cpufreq # cat scaling_governor
ondemand-sec
En cuanto a qué frecuencia activa qué núcleos, no recuerdo si puede consultarlo sysfs
, pero sí recuerdo:
El mapeo de frecuencia se puede encontrar en las fuentes del kernel en drivers/cpufreq/exynos-ikcs-cpufreq.c
, alrededor de la línea ~56:
#define ACTUAL_FREQ(x, cur) ((cur == CA7) ? (x) << 1 : (x))
#define VIRT_FREQ(x, cur) ((cur == CA7) ? (x) >> 1 : (x))
La primera línea encuentra la frecuencia real del núcleo. Si el núcleo actual es un A7, entonces realizamos un cambio de bits en la "frecuencia virtual" de 1 a la izquierda. Esto es en efecto una multiplicación por 2.
Gran parte del resto del código trata de consultar las frecuencias de CPU admitidas de cada tipo de núcleo y fusionarlas para obtener la cpufreq
tabla resultante (consulte cpufreq_merge_tables
la función alrededor de la línea 197).
Más información sobre cómo se puede encontrar esto en este conjunto de diapositivas de Linaro.
Puede verificar qué núcleos están activos usando un nodo de dispositivo en /dev/bL_status
.
root@ja3g:/dev # cat bL_status
0 1 2 3 L2 CCI
[A15] 0 0 0 0 0
[A7] 1 1 1 1 1
El resultado anterior indica que solo los núcleos A7 están activos.
cat /dev/bL_status
. Modifiqué mi respuesta con la salida. Sin embargo, para verificar, creo que podría necesitar volver a verificar la fuente del kernel./sys/devices/system/cpuX/cpufreq/stats/time_in_state
y descubrí que los cuatro núcleos funcionaban a 600 MHz todo el tiempo, ¿eso significa? la frecuencia real era de 1,2 GHz y en realidad A7 estaba operando a 1,2 GHz? Su respuesta creó más preguntas para mí. ¿Puede verificar esta pregunta también? gracias
puntovezz
Compro01
Zohaib Hassan