Propósito: aumentar el rendimiento en un router con chip BCM6358 (p.ej HG556a) usando el primer core en lugar del segundo
Explicación: en los BCM6358, el segundo core tiene la mitad de caché que el primero, si el router está usando el segundo core, no estamos aprovechando todo el potencial que por ahora nos ofrece la CPU.
Routers que se pueden beneficiar: aquellos que están usando el segundo core por defecto (p.ej HG556a, HG553). Para saber si podemos beneficiarnos del cambio vemos el dmesg:
[ 0.000000] Primary instruction cache 16kB, VIPT, 2-way, linesize 16 bytes.
Si vemos eso, entonces podremos beneficiarnos del cambio de core.
Como cambiamos de core: Para el cambio de core he compilado una pequeña utilidad testada en el HG566a. De esto ya se habló en el hilo del HG556a. Donde también se detallaba como hacerlo manualmente. La aplicación la he llamado
tp0set, y el binario solo funciona para versiones
iguales of inferiores a Barrier Braker. Lo he testeado varias veces sobre un HG556a versión B, y jamás obtuve un brick como resultado, así que la considero totalmente fiable.
Esta es la aplicación empaquetada:
tp0set_1.0-1_brcm63xx.ipkEste paquete se instala con opkg. Ahí va una sesión de instalación, y ejecución. Después de ello hay que reiniciar para que surta efecto.
root@OpenWrt:/tmp# opkg install tp0set_1.0-1_brcm63xx.ipk
Installing tp0set (1.0-1) to root...
Configuring tp0set.
root@OpenWrt:/tmp# tp0set 0
setting TP0 main core
MTD Type: 3
MTD total size: 20000 bytes
MTD erase size: 20000 bytes
Eraseing Block 0
Writting to /dev/mtd0...
Done!!
root@OpenWrt:/tmp#
para saber si efectivamente surtió efecto podemos comprobar el dmesg
antes
[ 0.000000] Primary instruction cache 16kB, VIPT, 2-way, linesize 16 bytes.
después
[ 0.000000] Primary instruction cache 32kB, VIPT, 2-way, linesize 16 bytes.
para volver de nuevo al core1, ejecutaríamos
tp0set 1
Esta aplicación debería servir para cualquier router con SoC BCM6358, como por ejemplo el HG553 el cual presumiblemente también se ejecuta por defecto el segundo core con menos caché. Tampoco espereis un aumento espectacular de rendimiento, es más bien una
minioptimización.
Quiero remarcar que la utilidad solo fue testada sobre un HG556a. Además la utilidad espera que el tamaño de la partición /dev/mtd0 sea de 128KB que es lo que tiene el HG566a, y supongo que también el resto de BCM6358.
El código fuente de la aplicación aquí:
tp0set.tar.gzEn resumen lo que hace es cambiar el un byte dentro CFE, el cual CFE lee para saber que core iniciará como principal. Como los cambios se hacen en CFE, estos sobreviven para siempre, da igual el firmware que instalemos posteriormente aunque no sea OpenWrt.
Saludos.