Hace 9 años | Por gallir
Publicado hace 9 años por gallir

Si tenéis una Raspberry 2 y podéis echarme una mano midiendo unos tiempos de los siguientes programas que están en https://github.com/gallir/concurrencia_source_samples

Necesito que ejecutéis
$ time programa
tres veces y me paséis los resultados y el SO que tenéis (Ubuntu, la claśica de raspberry, etc.). Antes de ejecutar entrad a los directorios hardware y spinlocks y ejecutad make para generar los ejecutables.

Los programas que necesito tiempos son los siguientes:

hardware/counter_test_and_set
hardware/counter_compare_and_swap

spinlocks/test_compare_and_swap
spinlocks/compare_and_swap_backoff
spinlocks/compare_and_swap_yield

spinlocks/test_test_and_set
spinlocks/test_and_set_backoff
spinlocks/test_and_set_yield

spinlocks/ticket_lock
spinlocks/mcs_spinlock
spinlocks/clh_spinlock

Me lo podéis dejar en comentarios o email a gallir en gmail.com.

Muchas gracias, es para el libro https://gallir.wordpress.com/principios-de-concurrencia/

Comentarios

e

#6 Quizá pruebe el tarball de aquí http://dave.cheney.net/unofficial-arm-tarballs

e

#9 Hay dos que no compilan pero ya le he mandado el resto.

e

Yo tengo una pero no voy a dedicar 2h a instalarme el go, lo siento. No hay paquete ni binario ni nada que yo sepa.

e

#2 Con 'make', supongo que se compila así, me salen errores de que no encuentra el comando go. Y eso, una búsqueda rápida por google y la web del go me dice que no hay binarios, que a compilar, y eso significará buscar dependencias a mano, etc. Como que no. Lo siento, lo he intentado.

D

#2 golang es el paquete en Debian Wheezy.

Y si no quieres volverte majara:
sudo apt-get install qemu-arm
sudo kpartx -av 2015-02-16-raspbian-wheezy.img
add map loop0p1 (252:0): 0 114688 linear /dev/loop0 8192
add map loop0p2 (252:1): 0 6277120 linear /dev/loop0 122880

sudo mkdir rpi
sudo mount /dev/mapper/loop0p2 rpi
sudo cp /usr/bin/qemu-arm-static rpi/usr/bin/
sudo -s
chroot rpi

Ahí instalas todo, y cuando acabes:

sudo umount ./rpi

Y copias la imagen a la RPI.

Aunque mejor si manejas el uso de x delta3

img1 = la imagen original de la RaspBerryPi con Debian. Cópiala a la Pi tal cual.
img2 = copia de la 1, modificada con el chroot
img.delta=archivo de cambios

(Quita el | a xdelta)

xdelta delta img1 img2 img.delta
sudo xdelta patch img.delta img1 /dev/sdc (o donde tengas la SD de la Rpi, se ve en el Gparted)

e

#5 Estoy flipando fuerte. Creo que entiendo el 80% de lo que has puesto. Estaría bien que hubieses dicho desde un principio qué se supone que es eso. Entiendo que me indicas cómo modificar una imagen de rpi desde otro debian. No tengo otro debian y no me lo voy a montar ni haría todo esto aunque lo tuviera. Yo no pediría a la gente que hiciese todo esto, buscaría una alternativa o al menos se lo simplificaría al máximo. Tengo instalado raspbian. Cuando pueda miraré si está ese paquete y si no me temo que nada.

Gracias por tu esfuerzo y lo siento.

D

#6 Te explico:

Desde un Linux como Ubuntu instalamos qemu-arm, un emulador que también sirve para usar binarios de Linux hechos desde otras plataformas traduciendo.

Con kpartx le indicamos la ruta al archivo 2015-wheezy... para que sean legibles las partiones en /dev/mapper
nos devuelve como resultado app map... que significa que ya han sido asignadas y la particiones dentro de la imagen de rpi es "montable" como si fuera un disco duro más.

Con mkdir creamos la carpeta y con el comando de mount montamos la 2a partición en la carpeta rpi. la "/" de la rpi en Linux

Luego el comando de cp lo que hacemos es copiar el qemu-arm a rpi/usr/bin/, es decir, a la carpeta /usr/bin/ de la partición de la imagen rpi montada

Finalmente con el comando de chroot hacemos una especie de "sandbox" pero con plataformas cruzadas: Intel->ARM. Es como si tuvieras una terminal dentro de la imagen RPI ejecutandose para recibir comandos. Puedes hacer apt-get update y lo que sea como si estuvieras funcionando el Linux de la SD bajo RPI.

Vamos, puedes instalar golang y demás.

Sobre el comando x delta, es util, pues como digo:

Copias la imagen1 (que es la misma que la de la SD) a imagen2 , montas las cosas como te he dicho en la imagen2, desmontas, con x.delta haces un parche que contiene las diferencias entre la imagen1 e imagen2 y finalmente con x.delta igualmente metes en tu SD las diferencias entre imagen2 y el parche.

Es complejo pero te ahorras escrituras largas en muchos casos.

e

#8 ¡Gracias! Pues tomo nota para otra cosa, pero para esto parece que con saber que el paquete se llama golang ya no necesitaba más lol Sí que está en raspbian.

D

¿A cuanto pagas la hora?

D

Las Raspberry Pi 2 cuestan unos 4.000 yenes, qué caros.

D

$ time spinlocks/ticket_lock éste lleva 5 minutos ...