simul_data - Manual de usuario

Anuncio
simul_data
Manual de usuario
Universidad Miguel Hernández 1
3 de mayo de 2011
1 Copyright
(c) 2008 P. Pablo Garrido Abenza. Todos los derechos reservados.
Resumen
El presente manual describe el programa simul_data, que se incluye con el paquete
de programas simul_xxx. Ha sido desarrollado por P. Pablo Garrido Abenza (pgarrido@umh.es), dentro del Grupo de Arquitectura y Tecnología de COMputadores
(GATCOM) de la Universidad Miguel Hernández.
Índice general
1. Introducción
3
2. Instalación
6
2.1. Requerimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.2. Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.2.1. Posibles problemas . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.3. Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.3.1. Posibles problemas . . . . . . . . . . . . . . . . . . . . . . . . .
8
3. Uso del programa
9
3.1. Sintaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3.2. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3.3. Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
3.4. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
2
Capítulo 1
Introducción
El objetivo de esta herramienta es extraer datos desde una serie de archivos binarios .ov generados por el programa simul_run, el cual invoca a la utilidad op_runsim
de OPNET Modeler. Los datos son exportados a ficheros de texto para facilitar
su posterior procesado. El programa simul_data invoca a ov2txt para cada simulacion, aunque este programa tambiéen se puede ejecutar manualmente por el usuario. Finalmente, simul_data se puede ejecutar en un cluster Condor [2], ejecutando varias instancias de ov2txt en paralelo, simplemente especificando una opción
(-cluster).
Además de utilizar el programa simul_data, para extraer los datos de las simulaciones realizadas con OPNET Modeler [?] también se puede utilizar:
• El entorno gráfico de OPNET Modeler (GUI).
• Desde línea de órdenes con la utilidad op_cvov.
Aunque utilizar el entorno gráfico puede ser más sencillo, tiene el inconveniente
de que se trabaja de forma interactiva, lo cual puede ser muy repetitivo si se han
realizado muchas simulaciones en una secuencia. Cuando se desarrolló simul_data,
no existía otra posibilidad de hacerlo. Sin embargo, actualmente (desde la versión
14.0?) existe la utilidad op_cvov con objeto de realizar esta tarea desde línea de
órdenes. A continuación se muestran tres ejemplos de uso de esta utilidad. En el
primero de ellos se extraerán los datos de todas las simulaciones realizadas del proyecto completo.
op_cvov -m simul_run
-mod_dirs ~/op_models/simul_run
-output_file_path ~/op_models/simul_run/data/file.txt
-vector_header -vector_data
En este segundo caso se considerarán todas las simulaciones pero del escenario
especificado.
op_cvov -m simul_run-mymodel
-mod_dirs ~/op_models/simul_run
-output_file_path ~/op_models/simul_run/data/file.txt
-vector_header -vector_data
3
simul_data
Manual de usuario
Por último, en el tercer ejemplo se extraerán los datos vectoriales de una única simulación del escenario especificado. En todos los casos se exportan todas las
variables estadísticas seleccionadas a la hora de realizar la simulación.
op_cvov -m simul_run-mymodel-DES-1 -mod_dirs ~/op_models/simul_run
-output_file_path ~/op_models/simul_run/data/file-1.txt
-vector_header -vector_data
Con simul_data, no se dispone de la primera posibilidad, siempre se trabaja con
un escenario concreto, ya sea una única simulación, todas, o un rango específico.
Aunque se verán más ejemplos en la sección 3.4, a modo de comparativa con la utilidad op_cvov, dos formas de uso de simul_data parecidas a los dos últimos ejemplos
anteriores serían:
simul_data.sh -m simul_run-mymodel -i ~/op_models/simul_run/results
-o ~/op_models/simul_run/data -f rh
simul_data.sh -m simul_run-mymodel -i ~/op_models/simul_run/results
-o ~/op_models/simul_run/data -f rh -first 1 -last 1
En resumen, las principales diferencias de simul_data respecto op_cvov son:
1. Con simul_data se pueden seleccionar las columnas o variables estadísticas a
exportar, en vez de exportar todas las que contenga el archivo .ov. Además, dichas columnas se pueden especificar de varios modos (por índice, por nombre,
. . . ).
2. El formato generado por op_cvov, aunque sea texto, es difícil de procesar de
forma automática. Por ejemplo, en el caso de extraer los datos de varias simulaciones (escenario o todo el proyecto), todos los datos van en el mismo archivo,
mientras que con simul_data, cada archivo .ov (es decir, cada simulación) tiene
su propio archivo de salida.
3. Con simul_data se puede indicar el formato de salida, que aunque siempre es
en modo texto, es diferente para Excel que para el paquete estadístico R (p.e., el
carácter fin de línea, el carácter separador, el carácter utilizado como separador
de decimales en caso de utilizar Excel con un idioma distinto del inglés, etc.).
4. Con simul_data se pueden realizar operaciones sobre los datos vectoriales generados para obtener datos escalares: MIN, MAX, AVG, MEAN, VAR, SUM,
etc. Estas mismas operaciones se pueden definir desde OPNET Modeler para
generar archivos de datos escalares (.os), excepto la función SUM que no la
ofrece OPNET. La ventaja de esto es que no es necesario haber generado dichos archivos .os para obtener tales valores, ya que el programa simul_data los
calcula a partir de los datos vectoriales.
5. El programa simul_data puede ejecutar en paralelo la extracción de datos, realizando la extracción de cada simulacióon en un procesador de un cluster Condor.
4
simul_data
Manual de usuario
El paquete de programas simul_xxx, consta básicamente de varios programas
independientes que se ejecutarán uno tras otro, desde línea de órdenes. Estos programas son los siguientes:
• simul_run: para realizar secuencias de simulaciones con OPNET Modeler sin
utilizar el entorno gráfico del simulador.
• simul_data: para extraer los datos que nos interesan de entre todas las estadísticas recogidas durante una secuencia de simulaciones.
• ov2txt: invocado por simul_data para extraer los datos de una simulación concreta. También se puede ejecutar por el usuario de forma manual.
• simul_graphs: para generar gráficos a partir de los datos extraídos, utilizando
el paquete R o gnuplot.
• simul_reports: para generar un único informe que contenga todos los gráficos
generados, así como los datos utilizados para ellos.
Además de los programas anteriores, hay otras utilidades más específicas para
el caso de realizar simulaciones de redes MANETs:
• simul_geoloc: para distribuir aleatoriamente los nodos de una red durante el
diseño del mismo y calcular el grado de partición según su rango de transmisión.
• simul_ah2r: para transformar un archivo de histórico de animación de formato
binario .ah a formato de texto .as, al tiempo que se calcula el grado de partición
de la red en cada instante de la simulación.
• simul_manet: para generar de forma sencilla archivos .ef de parámetros de entrada para simul_run, especificando por ejemplo un rango de transmisión, y el
programa escribirá en el archivo de salida los valores apropiados para ciertas
propiedades de algunos objetos del modelo.
A diferencia de los lenguajes de script, como estos programas se han desarrollado en lenguaje C ha sido bastante fácil portarlos a otras plataformas. Actualmente
están disponibles para Windows y sistemas de tipo UNIX como Linux o Mac OS X1 .
1
Actualmente OPNET Modeler solo esta disponible para Windows y Linux, aunque podría ser
que se ejecutase en Mac OS X utilizando X11.
5
Capítulo 2
Instalación
El proceso de instalación del programa simul_data es muy sencillo, muy similar
al resto de programas del paquete simul_xxx. Los pasos a seguir son los siguientes:
1. Copiar el ejecutable simul_data en cualquier directorio.
2. Añadir a la variable de entorno PATH la ruta absoluta del directorio donde esté
el ejecutable (por conveniencia).
3. Bajo Linux, añadir a la variable de entorno LD_LIBRARY_PATH la ruta absoluta de las librerias de OPNET, la cual depende del directorio de instalación de
OPNET y de su versión (p.e. /usr/opnet/16.0.A/sys/pc_intel_linux/lib).
4. Instalar el programa ov2txt (ver la siguiente sección).
Respecto a los pasos relacionados con variables de entorno, la explicación detallada de cómo establecer una variable de entorno sale fuera del ámbito de este
manual, pero a continuación se explica brevemente. Se deben especificar rutas absolutas, siendo indiferente si las rutas terminan con la barra separadora o no.
2.1.
Requerimientos
El programa simul_data requiere que se tenga instalado el programa ov2txt del
paquete simul_xxx, el cual requiere ser compilado con la misma versión que la versión de OPNET Modeler instalado (ver manual de ov2txt para más detalles). Por
conveniencia, el programa simul_datano llama al ejecutable directamente sino a un
script o archivo por lotes llamado ov2txt.sh (Linux) o ov2txt.bat (Windows), el cual
debe existir en una ruta accesible. Es dicho script el que invoca al ejecutable según
la versión de OPNET Modeler.
2.2.
Windows
Supongamos que el directorio en el que hemos copiado el programa simul_data
es:
6
simul_data
Manual de usuario
C:\Archivos de programa\utils
En resumen, la forma de modificar la variable de entorno PATH seria la siguiente:
• Windows 98 o anteriores: modificar el archivo C:\AUTOEXEC.BAT, añadiendo la línea siguiente al final. Dependiendo de nuestra versión de Windows,
puede que tengamos que escribir el directorio entre comillas dobles si el nombre del directorio es de mas de 8 letras o tiene espacios en blanco:
SET PATH=%PATH%;C:$\Archivos de programa\utils
• Windows NT, 2000 o XP: en la configuración del sistema, Panel de Control
>Sistema >solapa Avanzado >pulsar botón [Variables de entorno]. Podemos
modificar la variable de entorno PATH, añadiendo el directorio anterior al final,
separado con un ’;’. También podemos modificar el archivo Autoexec.NT de la
misma forma que en el caso anterior.
2.2.1.
Posibles problemas
Algunos mensajes de error en Windows relacionados con esto son:
1. Mensaje ’Error al iniciar la aplicación porque no se encontró opema.dll. La reinstalación de la aplicación puede solucionar el problema’: este mensaje indica
que no se ha instalado OPNET en el ordenador o alguna variable de entorno
mal establecida. Asegurarse de que el directorio siguiente aparece en la variable de entorno PATH:
C:\Archivos de programa\OPNET\16.0.A\sys\pc\_intel\_win32$\bin
2. Mensaje ’No se encuentra el punto de entrada del procedimiento Vos_Error_Fstack–
_Discrepancy_Detected en la biblioteca de vínculos dinámicos opvos.dll’: indica que se tiene instalado una versión de OPNET Modeler distinta de la utilizada para generar el programa. Caso de tener varias versiones instaladas, en
la variable PATH debe aparecer primero el directorio bin de la versión correspondiente, y ejecutar el programa compilado con la misma versión.
3. Mensaje (aviso): ’Error: Invalid port assignment’: asegurarse de que: (1) la
propiedad license_port está establecida a port_a, port_b, o port_c y
(2) la propiedad license_server o license_server_standalone está bien establecida. Se pueden establecer las siguientes variables de entorno:
license_port=port_a y license_server_standalone=true.
2.3.
Linux
Supongamos que el directorio en el que hemos copiado el programa simul_data
es:
$HOME/bin
7
simul_data
Manual de usuario
En Linux hay que establecer las variables PATH y LD_LIBRARY_PATH. En esta
última hay que establecer la ruta de las librerías de OPNET, ya que es necesario para
poder ejecutar programas que utilicen el API EMA (creados con op_mkema). Esta
ruta depende del directorio de instalación de OPNET y de su versión. La forma de
hacerlo y fichero a modificar depende del shell o interprete de órdenes utilizado
(bash, ksh, . . . ):
• Linux (shells: bash, ksh, zsh, sh): $HOME/.bash_profile or $HOME/.profile:
PATH=.:$PATH:$HOME/bin
LD_LIBRARY_PATH=/usr/opnet/16.0.A/sys/pc_intel_linux/lib
export PATH
export LD_LIBRARY_PATH
• Linux (shells: csh, tcsh): $HOME/.login:
setenv PATH .:$PATH:$HOME/bin
setenv LD_LIBRARY_PATH /usr/opnet/16.0.A/sys/pc_intel_linux/lib
A la hora de establecer la variable LD_LIBRARY_PATH, hay algunas distribuciones Linux que no lo permiten. En este caso, será necesario establecer su valor cada
vez que vayamos a ejecutar el programa simul_data o abramos la consola.
Para simplificar este proceso, se puede escribir un pequeño archivo por lotes llamado simul_data.sh similar al siguiente, y copiarlo junto al ejecutable de simul_data.
Para pasar los argumentos desde el script al ejecutable también se puede utilizar
"$@" (con las comillas) en vez de $*.
#!/bin/sh
export LD_LIBRARY_PATH=/usr/opnet/16.0.A/sys/pc_intel_linux/lib
exec simul_data-en-x86.bin $*
2.3.1.
Posibles problemas
Algunos mensajes de error que se pueden obtener en Linux son:
1. Mensaje ’error while loading shared libraries: libopema.so: cannot open shared
object file: No such file or directory’. En este caso, el problema se debe a no
haber establecido la variable de entorno LD_LIBRARY_PATH.
2. Mensaje ’error while loading shared libraries: libopxml.so: cannot open shared
object file: No such file or directory’ puede ser debido a que se tiene instalada
la version OPNET Modeler v16.0.A, mientras que el ejecutable de simul_data
fue compilado para otra versión anterior. La versión v14.0.A utiliza la librería
libopxml.so, pero la v16.0.A ya no.
3. Mensaje (aviso): ’Error: Invalid port assignment’: asegurarse de que: (1) la
propiedad license_port está establecida a port_a, port_b, o port_c y
(2) la propiedad license_server o license_server_standalone está bien establecida. Se pueden establecer las siguientes variables de entorno:
license_port=port_a y license_server_standalone=true.
8
Capítulo 3
Uso del programa
En este apartado vamos a explicar el uso del programa simul_data. Suponemos
que hemos escrito el script simul_data.sh explicado en el apartado anterior.
3.1.
Sintaxis
simul_data -?
simul_data -m <input-file> [-w <path>] [-i <path>] [-o <path>]
[-q] [-v] [-f <output-format>] [-x <data-to-export>] [-s <suffix>]
[-first <n>] [-last <n>] [-dont_run]
[-cluster <np> <met> [<notif> <email>]]
3.2.
Descripción
El programa simul_data extrae datos a partir de los archivos binarios (.ov) obtenidos como resultado de la ejecución de una secuencia de simulaciones de OPNET
Modeler, exportando los datos a archivos en modo texto con objeto de procesarlos
posteriormente con Excel, el paquete estadístico R, etc. Estos archivos de texto tienen
una serie de datos ordenados por columnas separadas con algún carácter separador
(csv). El programa permite la ejecución secuencial (por defecto) o en paralelo en un
cluster Condor.
El programa no funciona de manera interactiva, es decir, no pide ningún dato al
usuario una vez lanzado. Por ello, siempre hay que especificar las opciones necesarias al invocar al programa, y son las siguientes:
Argumentos generales (ayuda, ...):
-----------------------------------------?: muestra esta ayuda.
-v: modo ’verbose’.
Argumentos para pasar directamente a ov2txt:
-------------------------------------------Las siguientes opciones se pasaran directamente a ov2txt.
9
simul_data
Manual de usuario
Consulta la ayuda de ov2txt para mas detalles:
-m, -w, -i, -o, -q, -v, -f, -x, -s
Argumentos para definir la secuencia de simulaciones:
----------------------------------------------------Si el escenario especificado con -m es ’mymodel’, los archivos de los
que se extraeran datos seran:
’mymodel-DES-001.ov’, ’mymodel-DES-002.ov’, ...
Por defecto, se comienza por el 001 y se termina cuando no se encuentre
un archivo, a menos que se especifique las opciones -first o -last:
-first <n>: indice de simulacion (n) desde donde comenzar.
Por defecto desde la primera de la secuencia (1).
-last <n>: indice de simulacion (n) hasta donde realizar.
Por defecto hasta la ultima de la secuencia encontrada.
-dont_run: no extrae ningun dato, solo mostrara informacion con
los datos a extraer, y en el caso de utilizar un cluster Condor,
generara archivos necesarios pero sin lanzar los jobs.
Argumentos para utilizar un cluster (Condor):
---------------------------------------------cluster <np> <met> [<notif> <email>]: ejecucion de la secuencia de
simulaciones en paralelo (cluster Condor). Si ’simul_data’ se ejecuta
en un cluster y no se especifica esta opcion, los procesos se
ejecutaran secuencialmente en un mismo procesador.
Los argumentos para esta opcion son:
<np>
= numero de procesadores a utilizar, es decir, numero maximo
de jobs simultaneos, uno para cada simulacion (np>=0).
Como los usuarios de OPNET Modeler deben tener un numero
de licencias, el valor <np> debera ser menor o igual que
el numero de licencias disponibles; en otro caso muchas
simulaciones fallaran por no tener licencia disponible.
<met>
= metodo para lanzar los jobs en el cluster:
1-jobs sueltos; 2-DAG; 3-DAG parametrizado
En caso de que el numero de simulaciones (jobs) sea mayor
que <np>, el metodo 1 no puede utilizarse, ya que podria
significar que no hay suficientes licencias de OPNET.
Si se detecta este caso, se cambia al metodo 2.
<notif> = eventos a notificar al <email> indicado:
0-Nunca; 1-Completado; 2-Errores; 3-Siempre
<e-mail> = Direccion de correo al que notificar los eventos.
3.3.
Archivos
El programa simul_data utiliza los archivos binarios .ov como entrada (mymodel-DES-001.ov,
mymodel-DES-002.ov, ...), los cuales han sido generados por la utilidad simul_run
(y op_runsim). Por otro lado, el programa generará un fichero de texto por cada archivo .ov como salida (con la extensión .data o .xls).
Opcionalmente, en caso de utilizar un cluster Condor (opción -cluster), el
programa simul_data generará también los archivos necesarios de forma automática
para lanzar las simulaciones en paralelo (.sh/.job/.dag), así como otros con mensajes y/o errores (.out/.err/.log). Estos últimos se generarán en un subdirectorio
10
simul_data
Manual de usuario
del directorio actual o directorio de trabajo, llamado: ./condor1, ./condor2, o
./condor3, dependiendo del método empleado para lanzar los trabajos (1-3). Para
más detalles sobre los archivos generados para el cluster ver el manual de simul_run.
3.4.
Ejemplos
Los siguientes ejemplos muestran cómo utilizar el programa. En resumen, los
mismos ejemplos mostrados en el manual ov2txt se pueden aplicar aquíi, ya que
la mayoríia de los argumentos pasados desde líinea de órdenes son los mismos.
Sólo cuatro argumentos son nuevos a simul_data: -first, -last, -dont_run, and
-cluster. Como podemos comprobar, estos argumentos están relacionados con
el número de veces (intervalo) que se invocará a ov2txt para extraer datos de cada
simulación dentro de una secuencia de simulaciones, así como para especificar si
se utilizará o no un cluster Condor. El resto de argumentos (-m, -w, -i, -o,
-q, -v, -f, -x, -s) se pasarán a ov2txt en cada invocación tal cual. Para más
detalles y ejemplos relacionados con estas opciones ver el manual de ov2txt.
En este primer ejemplo se extraen los datos de todas las simulaciones ejecutadas
utilizando el modelo mymodel.nt.m. Los archivos resultantes de estas simulaciones son unos archivos .ov generados por simul_run (en realidad por op_runsim), los
cuales fueron almacenados en un subdirectorio relativo al directorio actual llamado ./results. Notar que la extensión .ov no se debe especificar. Por defecto, los
archivos .ov que finalmente se utilizarán se determina buscando en la lista de directorios especificados en la preferencia mod_dirs de OPNET Modeler, exactamente
en el mismo orden en que aparezcan. Sin embargo, podemos forzar el directorio a
utilizar mediante la opción -i, y sin la necesidad de modificar dicha preferencia.
simul_data -m mymodel
-i ./results
-x 1,2,3
-f rh
En el ejemplo anterior, se asume el argumento -first 1, es decir, que el proceso
comenzará extrayendo datos desde el archivo llamado mymodel-DES-001.ov. Por
otra parte, como la opción -last no se ha especificado, el proceso continuará hasta
el último fichero mymodel-DES-xxx.ov que se encuentre, donde xxx=001,002,. . . En
todos los casos, sólo se extraerán las tres primeras estadísticas almacenadas, y el formato a utilizarse para el archivo de salida será válido para ser procesado por el
paquete estadístico R, incluyéndose una línea de cabecera al principio del archivo
con los nombres de esas estadísticas.
Si necesitásemos extraer datos únicamente para un rango de las simulaciones
(o una simulación específica), podemos ejecutar el programa ov2txt de forma manual, o especificar los argumentos -first y -last al programa simul_data, como
se muestra en el siguiente ejemplo:
simul_data -m mymodel -i ./results
-first 5 -last 6
-x 1,2,3
-f rh
De esta forma, sólo se extraeráan datos de dos archivos (mymodel-DES-005.ov
y mymodel-DES-006.ov). Alternativamente, como habíamos dicho antes, podemos ejecutar manualmente el programa ov2txt, dos veces en este caso:
11
simul_data
ov2txt -m mymodel-DES-005
ov2txt -m mymodel-DES-006
Manual de usuario
-i ./results
-i ./results
-x 1,2,3
-x 1,2,3
-f rh
-f rh
En caso de tener un gran número de simulaciones, se recomienda ejecutar el programa en un cluster Condor con múltiples procesadores, en caso de que esté diponible. El programa simul_data permite hacer uso del cluster de forma automática tan
sólo especificando la opción -cluster con los argumentos adecuados, sin que el
usuario necesite tener conocimientos sobre cómo lanzar procesos en un cluster. Los
argumentos que recibe esta opción son el número de procesadores disponibles (número máximo de instancias de ov2txt a ejecutar de forma simultánea), y el método
utilizado para lanzar jobs (ver el manual de simul_run para más detalles).
simul_data -m mymodel -i ./results -x 1,2,3
-first 1 -last 500 -cluster 100 3
-f rh
En este ejemplo, se extraerán datos de 500 archivos .ov, pero no de forma secuencial sino en paralelo ejecutando hasta 100 instancias del programa ov2txt simultáneamente (o hasta el número de procesadores disponibles). Para ello, el usuario no
necesita saber nada sobre cómo lanzar trabajos (jobs) en el cluster, ya que todos los
archivos necesarios para ello (.job/.dag/.sh/. . . ) se generan de forma automática en
un subdirectorio llamado: ./condor1, ./condor2, o ./condor3, dependiendo
del método utilizado para lanzar los trabajos (1-3).
Finalmente, podría ser de utilidad la opción -dont_run, especialmente cuando
se utiliza un cluster por primera vez. En ese caso, los ficheros necesarios para el
cluster Condor se generan pero no se ejecutan, permitiendo al usuario comprobar
su contenido antes de lanzarlos finalmente, o incluso modificar algo y lanzarlos de
forma manual sin el programa simul_data.
12
Bibliografía
[1] R Development Core Team. R: A language and environment for statistical computing. ISBN 3-900051-07-0, 2007.
[2] The Condor Team. Condor.
13
Descargar