El gobernador por defecto en el GT-I9500 se llama "ondemand-sec". Estoy utilizando el firmware XXUEMJ9 (Android 4.3). Es una versión modificada del gobernador ondemand. 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
Asignaciones de frecuencia
En cuanto a qué frecuencia activa qué núcleos, no recuerdo si se puede consultar a través de sysfs
pero lo recuerdo:
- Por debajo de 600 Mhz, sólo los núcleos A7 están activos, y funcionan a un factor de 2. Por ejemplo, a 400 Mhz, los núcleos A7 funcionan realmente a 800 Mhz.
- Por encima de 600 Mhz, sólo los núcleos A15 están activos, y funcionan a un factor 1x. Por ejemplo, a 1,2 Ghz, los núcleos A15 funcionan realmente a 1,2 Ghz.
La asignación de frecuencias puede encontrarse en las fuentes del núcleo 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 desplazamiento de bits en la "frecuencia virtual" por 1 a la izquierda. Esto es en efecto una multiplicación por 2.
Gran parte del resto del código se ocupa de consultar las frecuencias de CPU soportadas por cada tipo de núcleo y de fusionarlas para obtener el resultado cpufreq
tabla (ver cpufreq_merge_tables
alrededor de la línea 197).
Puede encontrar más información sobre cómo hacerlo en este conjunto de diapositivas por Linaro.
Estado del núcleo
Puede comprobar qué núcleos están activos utilizando un nodo del 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
La salida anterior indica que sólo los núcleos A7 están activos.
1 votos
¿Qué método ha utilizado para fijar los reguladores? ¿Ha visto esta pregunta ?
0 votos
Creo que el gobernador OnDemand es el predeterminado, pero no estoy 100% seguro.
0 votos
@ dotVezz He rooteado el dispositivo usando oDin y estoy escribiendo en /sys/devices/system/cpu/cpuX/cpufreq/scaling_governor el gobernador requerido, pero se me olvidó cuál era por defecto. En Quadcore (GT-I9500) es onDemand pero no estoy seguro en este dispositivo. Estoy haciendo algunos experimentos relacionados con el consumo de energía y necesito mantenerlo lo más cerca posible de la configuración por defecto.