?>/script>'; } ?> BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt Widgets Magazine

Autor Tema: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt  (Leído 20387 veces)

0 Usuarios y 1 Visitante están viendo este tema.

danitool

  • Visitante
BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
« en: 09-02-2015, 11:16 (Lunes) »
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:
Citar
[    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.ipk

Este 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.

Código: [Seleccionar]
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
Citar
[    0.000000] Primary instruction cache 16kB, VIPT, 2-way, linesize 16 bytes.
después
Citar
[    0.000000] Primary instruction cache 32kB, VIPT, 2-way, linesize 16 bytes.

para volver de nuevo al core1, ejecutaríamos
Código: [Seleccionar]
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.gz

En 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.
« Última modificación: 12-02-2015, 16:19 (Jueves) por danitool »

manuelacantasaetas

  • Visitante
Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
« Respuesta #1 en: 09-02-2015, 16:10 (Lunes) »
 >:(

Desconectado jar229

  • Moderador
  • *
  • Mensajes: 4607
Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
« Respuesta #2 en: 10-02-2015, 11:55 (Martes) »
Añadido al [Índice] Hilos relevantes de OpenWrt

Le pongo 'chicheta' unas semanitas  >:( >:( >:(

danitool

  • Visitante
Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
« Respuesta #3 en: 10-02-2015, 14:30 (Martes) »
Haciendo un test simple de transferencia directa hacia dentro del router. En concreto haciendo esto:
Código: [Seleccionar]
wget -O- ftp://server.cablered/archivo.grande > /dev/null
He calculado que usando el core0 tengo un incremento de rendimiento del de entre el 15% al 20% con respecto a usar el core1, lo cual no está mal.

Saludos

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
« Respuesta #4 en: 10-02-2015, 19:22 (Martes) »
Haciendo un test simple de transferencia directa hacia dentro del router. En concreto haciendo esto:
Código: [Seleccionar]
wget -O- ftp://server.cablered/archivo.grande > /dev/null
He calculado que usando el core0 tengo un incremento de rendimiento del de entre el 15% al 20% con respecto a usar el core1, lo cual no está mal.

Saludos

A mi eso no me parece una "minioptimización"...  ;D ;D ;D

Edito: He bajado el tiempo de arranque en más de 4 segundos, y se ha incrementado en alrededor de un 15% la transferencia wifi grabando a un disco USB/NTFS.
« Última modificación: 10-02-2015, 21:39 (Martes) por Tki2000 »

seny

  • Visitante
Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
« Respuesta #5 en: 12-02-2015, 11:19 (Jueves) »
Muy bueno, solo son 16kb caché  pero resulta que es el doble de lo que habia.. se tiene que notar  >:(
La forma de aplicarlo de danitool, genial.
saludos

darkvier

  • Visitante
Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
« Respuesta #6 en: 13-03-2015, 20:24 (Viernes) »
Funciona a la perfeccion   >:(

mitsurugi

  • Visitante
Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
« Respuesta #7 en: 21-03-2015, 15:05 (Sábado) »
Lo probe con una backport_10.03.1 y tras reiniciar el router, me funciona correctamente!
Aprovecho para preguntar, ¿sera recomendable actualizar la version de openwrt a la Barrier Braker? o con la que tengo sera mas que suficiente?
Gracias.

artistaInvitado

  • Visitante
Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
« Respuesta #8 en: 21-03-2015, 20:22 (Sábado) »
Genial!!!

seny

  • Visitante
Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
« Respuesta #9 en: 25-03-2015, 19:18 (Miércoles) »
Lo he instalado desde un pincho usb, pego la sesión que a alguno le será útil ver como hacerlo por esta via:
Citar
root@OpenWrt:~# mount /dev/sda1 /mnt
root@OpenWrt:~# cp -f /mnt/tp0set_1.0-1_brcm63xx.ipk /tmp
root@OpenWrt:~# opkg install /tmp/tp0set_1.0-1_brcm63xx.ipk
Installing tp0set (1.0-1) to root...
Configuring tp0set.
root@OpenWrt:~# tp0set 0
setting TP0 main core
MTD Type: 3
MTD total size: 20000 bytes
MTD erase size: 10000 bytes
Eraseing Block 0
Eraseing Block 0x10000
Writting to /dev/mtd0...
Done!!
root@OpenWrt:~#
Aunque no se porque motivo hay una línea con distinto valor,
MTD erase size: 10000 bytes en lugar de 20000.., funcionó igualmente.

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
« Respuesta #10 en: 25-03-2015, 20:59 (Miércoles) »
Lo he instalado desde un pincho usb, pego la sesión que a alguno le será útil ver como hacerlo por esta via:
Citar
root@OpenWrt:~# mount /dev/sda1 /mnt
root@OpenWrt:~# cp -f /mnt/tp0set_1.0-1_brcm63xx.ipk /tmp
root@OpenWrt:~# opkg install /tmp/tp0set_1.0-1_brcm63xx.ipk
Installing tp0set (1.0-1) to root...
Configuring tp0set.
root@OpenWrt:~# tp0set 0
setting TP0 main core
MTD Type: 3
MTD total size: 20000 bytes
MTD erase size: 10000 bytes
Eraseing Block 0
Eraseing Block 0x10000
Writting to /dev/mtd0...
Done!!
root@OpenWrt:~#
Aunque no se porque motivo hay una línea con distinto valor,
MTD erase size: 10000 bytes en lugar de 20000.., funcionó igualmente.

20000 es el valor total de longitud a borrar
10000 es el valor de longitud de bloque
Por lo tanto borra dos bloques, el 0x00000 y el 0x10000, y después los escribe con los valores nuevos.

seny

  • Visitante
Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
« Respuesta #11 en: 25-03-2015, 22:39 (Miércoles) »
Ok, por lo que veo comparando la sesión de instalación de danitool, su router tiene definido el MTD en un solo bloque de 20000 bytes y el mio tiene 2 bloques de 10000 bytes, esto supongo que se podrá definir porque el router es el mismo.

Hay alguna ventaja con el MTD en un solo bloque? y si es así donde lo definimos?

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
« Respuesta #12 en: 26-03-2015, 08:30 (Jueves) »
Ok, por lo que veo comparando la sesión de instalación de danitool, su router tiene definido el MTD en un solo bloque de 20000 bytes y el mio tiene 2 bloques de 10000 bytes, esto supongo que se podrá definir porque el router es el mismo.

Hay alguna ventaja con el MTD en un solo bloque? y si es así donde lo definimos?

No es nada que se pueda configurar. Depende del chip de memoria que tengas instalado en el router.
Visita la página http://wiki.openwrt.org/toh/huawei/hg556a y verás que hay varios chips de memoria para ese router, y que, sus respectivos bloques de borrado, tienen diferentes tamaños.

seny

  • Visitante
Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
« Respuesta #13 en: 26-03-2015, 16:19 (Jueves) »
Pues por lo que veo creo que tengo un submodelo que no está catalogado correctamente en el wiki, lo voy a postear en el hilo del router para ver si algun otro forero lo puede ratificar.

venturi

  • Visitante
Re: Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
« Respuesta #14 en: 30-03-2015, 16:57 (Lunes) »
Lo he instalado desde un pincho usb, pego la sesión que a alguno le será útil ver como hacerlo por esta via:
Citar
root@OpenWrt:~# mount /dev/sda1 /mnt
root@OpenWrt:~# cp -f /mnt/tp0set_1.0-1_brcm63xx.ipk /tmp
root@OpenWrt:~# opkg install /tmp/tp0set_1.0-1_brcm63xx.ipk
Installing tp0set (1.0-1) to root...
Configuring tp0set.
root@OpenWrt:~# tp0set 0
setting TP0 main core
MTD Type: 3
MTD total size: 20000 bytes
MTD erase size: 10000 bytes
Eraseing Block 0
Eraseing Block 0x10000
Writting to /dev/mtd0...
Done!!
root@OpenWrt:~#
Aunque no se porque motivo hay una línea con distinto valor,
MTD erase size: 10000 bytes en lugar de 20000.., funcionó igualmente.
Muchas gracias, me ha venido muy bien;);D

theocles

  • Visitante
Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
« Respuesta #15 en: 19-01-2016, 00:45 (Martes) »
perdon que diga como instalo este paquete pero no se donde tengo que meter el archivo para que puede instalarlo desde ssh. gracias

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
« Respuesta #16 en: 19-01-2016, 10:20 (Martes) »
perdon que diga como instalo este paquete pero no se donde tengo que meter el archivo para que puede instalarlo desde ssh. gracias

He puesto una sección en las FAQ . Léetela.

theocles

  • Visitante
Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
« Respuesta #17 en: 19-01-2016, 17:41 (Martes) »
perdon que diga como instalo este paquete pero no se donde tengo que meter el archivo para que puede instalarlo desde ssh. gracias

He puesto una sección en las FAQ . Léetela.

Gracias tki2000 por la ayuda, lo he conseguido instalar mediante usb pero cuando hago el dmesg esta linea [    0.000000] Primary instruction cache 16kB, VIPT, 2-way, linesize 16 bytes. la tengo igual que antes ,sera por la version que tengo instalada?tengo la Chaos Calmer 15.05.

Warryor

  • Visitante
Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
« Respuesta #18 en: 19-01-2016, 18:01 (Martes) »
Si es por la versión yo tuve que poner una versión antigua y después volver a CC
Te lo pone en el primer post
Solo funciona para versiones iguales o inferiores a Barrier Braker

theocles

  • Visitante
Re: BCM6358: Cambiar el core sobre el que se ejecuta OpenWrt
« Respuesta #19 en: 19-01-2016, 19:02 (Martes) »
Si es por la versión yo tuve que poner una versión antigua y después volver a CC
Te lo pone en el primer post
Solo funciona para versiones iguales o inferiores a Barrier Braker
si pongo la version de barrier braker y le aplico el ipk y despues actualizo a CC se guardaran los cambios??