Tarea 3: Ejecución de AIM Multiuser Benchmark
Carlos Antonio Bulnes Domínguez
En este trabajo se compiló y programó el software AIM Multiuser Benchmark. Las pruebas ejecutadas fueron sobre un procedado AMD A10 y un ARM 7 el cuál fue emulado por medio del software GEM 5.
Los pasos para realizar las pruebas se muestran a continuación:
Compilación y Configuración de GEM 5
- Se descargó GEM5 del sitio http://repo.gem5.org/gem5-stable
- Una vez descargado y descomprimido lo compilamos desde una terminal con el comando: scons build/ARM/gem5.opt
Por un problema de dependencias en Fedora la compilación sea realizó en una máquina virtual con Arch
- Después de un tiempo de compilación de aproximadamente 2 horas se probó el funcionamiento del emulador por medio del comando build/ARM/gem5.opt configs/example/se.py -c tests/test-progs/hello/bin/arm/linux/hello el cuál carga un archivo de ejemplo al emulador y lo ejecuta.
- Para poder ejecutar el Benchmark fue necesario cargar una imagen al emulador para poder así correrlo desde un sistema mínimo
- Primero se descargaron las imágenes con ARM del mismo sitio donde descargamos GEM5
- Después de descargar y descomprimir modificamos el archivo .bashrc para agregar el PATH donde se descomprimieron las imágenes. Esto es importante pues será la forma en que el emulador buscará todo lo necesario para montar la imágen de disco. En mi caso la última línea del bashrc quedó: export M5_PATH=/home/cbulnes/Descargas/full_system/
- Corremos el comando: build/ARM/gem5.opt configs/example/fs.py --disk-image=/home/cbulnes/Descargas/full_system/disks/linux-aarch32-ael.img para cargar el sistema.
- Ahora abrimos otra terminal y por medio de telnet localhost 3456 nos conectamos al sistema emulado.
Compilación y configuración del Benchmark
Se usó la version AIM9, la cuál se descargó de
http://aimbench.cvs.sourceforge.net/viewvc/aimbench/caldera/suite9 . Una vez descargado y descomprimido se compiló utilizando el ejecutable con nombre
S9setup y se proporcionan los datos que pide como el compilador, las opciones de compilación y el linker.
Con esto se crea toda la información necesaria para poder compilar y ejecutar el Benchmark. Ejecutando el comando make lo compilamos, esto nos generará el ejecutable con el cuál realizar las pruebas de nombre
singleuser. Por último ejecutamos este comando en modo super usuario en nuestra máquina para comenzar a realizar las pruebas.
Al final además de los datos mostrados en la terminar se generará un reporte en el archivo
suite9.ss
Ejecución del benchmark en GEM5
Uno de los problemas descubiertos durante las pruebas realizadas fue que el ejecutable generado en la máquina era incompatible cuando se trataba de ejecutar dentro del emulador ARM, esto porque la compilación debía hacerse para este tipo de arquitectura. Para lograr esto se descargó la herramiento de compilación cruzada
arm-linux-gnueabi-gcc, con esta generamos el binario compilado especialmente para ARM, a continuación se detallan los pasos realizados para pner en marcha dicha ejecución.
- Se editó el archivo make y se modificaron las variables CC y CCOPT, a la primera se le indicó que el compilador sería arm-linux-gnueabi-gcc mientras que a la segunda se le agregó la bandera -static para que el binario resultado tuviera una asociación de memoria estática. El resultado al finalizar el comando make lo podemos verificar mediante el comando file.
- Una vez que tenemos un ejecutable listo para correr en ARM tenemos que meterlo al disco del sistema mínimo que estamos montando para así poder ejecutarlo por medio de GEM5. Primero se crea una carpeta donde se montará el disco, después, por medio del comando sudo mount -o loop,offset=32256 disks/linux-aarch32-ael.img tempdir montamos el disco. Una vez montado copiamos todo el contenido de la carpeta del benchmark al directorio /root del disco montado. Una vez terminada esta tarea desmontamos con sudo umount tempdir.
- Ahora volvemos a ejecutar el comando para montar la imagen con GEM5 y nos conectamos por telnet desde otra terminal. Iniciamos con usuario root en el emulador. Si revisamos con ls veremos que se encuentran todos los archivos del benchmark, ahora solo lo mandamos a ejecutar y esperamos. Cabe mencionar que la ejecución del benchmark es el emulador se tardó aproximadamente 3 días y medio. El programa se modificó ligeramente para poner los datos de entrada en código duro y para permitir ingresar el número de prueba en la que se comenzaría, esto con el fin de poder interrumpir la ejecución para efectos de transportación del equipo.
Resultados
Los resultados obtenidos en la máquina con AMD A10 se pueden encontrar
Aquí
Los resultados obtenidos en la máquina con ARM7 se pueden encontrar
Aquí
Mediante el comando
./rpt9 suite9.ss rep.ps podemos generar un reporte en PDF. Se hace esto para ambas arquitecturas. El reporte para AMD A10 se encuentra
aquí y el de ARM
aquí. Los resultados los podemos apreciar también en las siguientes imágenes: