Simulación y Modelación de Sistemas

Anuncio
Simulación y Modelación de Sistemas
“Simulación sobre la utilización
de un servidor de base de datos”
Samuel Garrido Daniel, Dennis Bazán Sandoval
sgarrido,dbazan@computacion.cs.cinvestav.mx
CINVESTAV-IPN
Departamento de Ingeniería Eléctrica
Sección de Computación
México, D.F. 26/Abril/2004
Un servidor de base de datos recibe consultas remotas con interllegada de tipo
exponencialmente distribuida  . Cada consulta requiere una búsqueda en la base de
datos. Esta operación toma  log(n) unidades de tiempo, donde n es el número de
registros en la base de datos. Hay también m usuarios conectados al servidor a través de
la red de área local. Éstos generan peticiones de lectura, escritura o eliminación con
probabilidades p1, p2 y p3, respectivamente ( p1  p2  p3  1) . Cada petición necesita el
mismo monto de tiempo para ser completada como se mostró anteriormente. Aunado a
esto, el resultado de una petición de escritura incrementa el tamaño de la base de datos
en un registro, mientras que las peticiones de eliminación lo reducen en un registro. Las
peticiones locales son exponencialmente distribuidas µ. Este tiempo corresponde sólo a
un periodo entre la terminación de la petición previa y la generación de una nueva, así los
usuarios locales no puede generar una nueva transacción antes de completar una que ha
sido enviada. Todas las peticiones son puestas en una cola y su servicio se basa en el
first-come first-server (primero en llegar, primero en ser servido) con prioridad a las
peticiones locales. Las consultas externas son almacenadas en un buffer hasta de b items.
Si una nueva petición encuentra que el buffer esta lleno, ésta es puesta en espera.
Asumiendo que la base de datos inicialmente tiene R registros, determine la utilización
del servidor, el coeficiente de consultas perdidas, y un porcentaje de tiempos de respuesta
con respecto a las peticiones de los usuarios locales y las peticiones remotas.
Introducción
La primera parte de este trabajo muestra el modelo del sistema, la identificación de sus
parámetros de entrada, los eventos y el diseño de los datos de salidas además de la forma
en cómo deben ser interpretados, en tanto que la segunda parte del trabajo consiste en
mostrar cómo se traslado el sistema modelado a un programa de software desarrollado
con Visual Basic 6.0.
1. Análisis y diseño del modelo de simulación
El sistema a simular trata sobre la utilización de un servidor de base de datos en cuanto a
las consultas que recibe y que debe procesar para regresar resultados o realizar las
operaciones necesarias en la base de datos. Para el sistema existen dos tipos de consultas,
las remotas y las de usuarios conectados en la misma red local donde se encuentra el
servidor de la base de datos.
Todas las consultas son encoladas en una estructura de datos llamada cola de prioridad,
en donde la prioridad la tienen las consultas locales.
La figura 1, muestra una perspectiva general del modelo.
Figura 1. Vista general del modelo.
Se puede apreciar que se tienen dos distribuciones exponenciales que corresponden a la
generación de consultas locales y a las remotas. Consideraciones sobre estos dos eventos
son las siguientes:
Las consultas locales, llegarán una a la vez. Podemos tomar en consideración que existe
un bloque de la base de datos, para que esto suceda así. La distribución exponencial 
denota el tiempo en que tarda en completarse una consulta ya generada y la generación de
otra, sucediendo esto hasta que la consulta en proceso es completada.
Las consultas remotas, pueden llegar aunque no hayan sido atendidas previas consultas
enviadas, por esta razón se cuenta con el buffer de consultas externas, ya que estas son
colocadas en dicha estructura. Para su posterior incorporación a la cola de prioridad que
recibe todas las consultas, tanto remotas como locales.
Las consultas pueden ser de tres tipos, y generan diferentes acciones sobre la base de
datos. Las consultas de lectura, no afectan el número de registros, únicamente son
servidas y como se daría en un servidor de base de datos real, sólo devuelven los datos
pedidos de acuerdo a la consulta de selección que en el lenguaje SQL son realizadas con
la sentencia SELECT.
Las consultas de eliminación, generan un decremento en 1 en el número de registros de la
base de datos. La sentencia DELTE en SQL, realiza la acción generada por este tipo de
consulta.
Las consultas de inserción, generan un incremento en 1 en el número de registros de la
base de datos.
1.2. Parámetros de entrada
Los parámetros de entrada identificados al realizar el análisis del problema propuesto se
detallan a continuación:
Número de Usuarios
Este parámetro se refiere al número de usuarios locales conectados al servidor de base de
datos. Es un valor entero mayor a 0.
Número de Registros de la Base de Datos
Este parámetro indica la cantidad inicial de registros almacenados en la base de datos.
Es un valor entero mayor a 0.
Probabilidades de tipo de consultas
Las consultas a la base de datos pueden ser de tres tipos, de lectura (consultas de datos),
eliminación (eliminación de registros en la base de datos) y de tipo inserción (inserción
de registros en la base de datos), la suma de estas tres probabilidades es p1 + p2 + p3 =1
Probabilidad consulta lectura
Probabilidad p1.
Probabilidad consulta eliminación
Probabilidad p2.
Probabilidad consulta inserción
Probabilidad p3.
Tamaño del buffer de consultas externas
Este dato establece un límite para almacenar consultas externas, dentro del buffer que
sirve para ese propósito. Es un valor entero.
Tiempo de simulación
Es el tiempo a simular de la utilización del servidor de base de datos. El tiempo se
expresa en horas.
1.3. Variables Aleatorias
En un problema de colas, los tiempos de ínter llegada y los tiempos de servicio suelen ser
estocásticos[3]. Para el caso del modelo del servidor de base de datos esta especificado en
la definición del problema que se utilizan distribuciones exponenciales. Precisamente es
con las distribuciones exponenciales que generaremos variables aleatorias para generar
los tiempos de ínter llegada de las consultas a la cola de prioridad del servidor de base de
datos.
Las distribuciones exponenciales se utilizan como modelo para representar tiempos de
funcionamiento o tiempos de espera. Su función de densidad que depende de un
parámetro k es de la forma f(x)=ke - kx
La generación de consultas locales depende de una variable aleatoria generada con una
distribución exponencial.
La generación de consultas externas depende de otra variable aleatoria generada con una
distribución exponencial propia.
Por lo tanto se tienen dos distribuciones exponenciales que trabajan de manera paralela.
En un modelo, se tendrán dos procesos generadores, que se ocuparan de generar las
llegadas de las consultas locales y remotas respectivamente. El proceso de servir estas
consultas generalmente se realiza con otra distribución exponencial que simula el tiempo
de servicio. Para el caso del modelo diseñado, el tiempo de servicio es un tiempo
constante por lo que no es necesario otra distribución exponencial.
1.4. Eventos
Un evento puede ser definido como una ocurrencia instantánea que puede cambiar el
estado del sistema. La identificación para sistemas complejos puede ser una tarea difícil y
requiere de métodos de identificación como el método event-graph que es mencionado en
[1]. Sin embargo como se menciona en la misma obra, la identificación para un sistema
de colas relativamente sencillo puede no ser necesario el utilizar este tipo de métodos.
Los eventos que se involucran en la presente simulación fueron fácilmente detectables y
son los siguientes:
Inicio de la simulación
Este evento inicializa los eventos Generación de consulta externa y Generación de
consulta local. La inicialización ocurre sólo si ya han sido establecidos los parámetros de
entrada que afectan a la simulación, en caso contrario no se tendrán resultados válidos.
Figura 2. Inicio de la simulación y el proceso en general de ésta.
Finalización de la simulación
La finalización de la simulación puede ocurrir por dos eventos; uno, que la simulación se
lleve a cabo correctamente atendiendo al parámetro tiempoSimulación o que el usuario
decida terminar la simulación. Para este evento no se presenta diagrama de flujo dado su
sencillez de interpretación.
Generación de una consulta externa
La generación de una consulta externa se realiza con base en una distribución
exponencial, Primero el tiempo de la próxima generación de una consulta externa es
generado y puesto en la lista de eventos. Colocada en la cola de prioridad, sucede
entonces que en el caso de que la cola de prioridad se encuentre llena, entonces ésta
consulta es colocada en el buffer de consultas remotas, para esto se realiza una
verificación del buffer, ya que este cuenta con un límite b. Si dicho buffer es sobrepasado
de su capacidad máxima, la consulta se toma como una consulta perdida generándose el
evento Consulta remota perdida.
El diagrama de flujo de la siguiente figura muestra este evento.
Figura 3. Evento desencadenado por la generación de una consulta externa.
Generación de una consulta local
Una consulta local es generada en base a las variables aleatorias generadas por una de las
distribuciones exponenciales con media .
Figura 4. Generación de una consulta local
Generación de un tipo de consulta
Al generarse cualquiera de los dos eventos mencionados anteriormente, se lleva a cabo
este evento, el cual con base en las probabilidades p1, p2 y p3 genera el tipo de consulta.
Figura 5. Evento para genera el tipo de consulta.
Llegada de consultas remotas al servidor de base de datos
Al llegar una consulta remota inmediatamente es colocada en el buffer de consultas
remotas. En el diagrama del evento de generación de consultas remotas se aprecia este
evento.
Llegada de consultas locales al servidor de base de datos
La llegada de una consulta local a la cola de prioridad del servidor de base de datos, es
contemplada en este evento.
Modificación del número de registros en la base de datos
Cuando de la cola de prioridad sale una consulta para ser atendida, entonces es cuando se
dispara el evento para modificar el número actual de registros en la base de datos, con
base en el tipo de consulta que es atendida. En la figura 6 se muestra el diagrama de flujo
para éste evento.
Figura 6. Generación del tipo de consulta
Pérdida de consultas externas
La pérdida de una consulta es consecuencia del desborde del buffer que almacena las
consultas externas debido a que la cola de prioridad se llena, este evento al generarse
deber ser almacenado en el registro de consultas perdidas, para tener un estimado de
cuántas consultas se pierden ante las que son atendidas al final de la simulación, ya que
es uno de los resultados que se piden.
Figura 7. Evento que se produce al tener consultas perdidas.
1.4. Análisis de Resultados
Los resultados que se piden en la especificación del sistema a simular son los siguientes.
Utilización del servidor de base de datos.
Coeficiente de consultas perdidas.
Porcentaje de tiempos de respuesta con respecto a las peticiones de los usuarios locales y
las peticiones remotas.
2. Implementación del sistema
Una vez obtenido el diseño, el modelo se trasladó al programa de software. El proceso se
describe en los siguientes puntos.
2.1 Consideraciones sobre las herramientas de software utilizadas
La decisión con respecto a que lenguaje de programación se debe de usar depende de
varios factores, de los cuales el conocimiento y la disponibilidad son los más importantes
[3]. Para el caso particular del trabajo aquí presentado, se optó por desarrollar el sistema
con el entorno de programación MS Visual Basic 6.0 (VB 6.0).
Y como se menciona anteriormente el conocimiento y la experiencia que el equipo de
desarrollo posee utilizando el entorno de programación VB 6.0 fue determinante para
decidir entre éste y el paquete de simulación ARENA.
Cabe mencionar que el paquete de simulación ARENA incluye gráficos estándar para
mostrar colas, estatus de recursos, flujo de información, flujo de entidades, entre otros.
Por lo tanto es fácil crear animaciones, ya que incorpora herramientas de dibujo y soporte
para integrar galerías clip art, AutoCAD, Visio y otros tipos de gráficos. Sin embargo
todas estas características están disponibles para ser utilizadas con Visual Basic.
Los datos históricos de las simulaciones realizadas, se almacenan en una base de datos de
MS Access, con acceso a través del control DAO. Cabe mencionar que no es necesario
configurar el acceso a la base de datos, es decir dicha característica es transparente para el
usuario.
Los reportes generados por el sistema son desarrollados con el control Crystal Reports
versión 7.0.
2.2 Consideraciones sobre la programación del sistema
Para la traslación a un programa de software del modelo diseñado que fue presentado en
la primera parte de este trabajo, se trabajó con un enfoque orientado a objetos para la
representación de las entidades y eventos y las relaciones entre estos.
Sin embargo la codificación no se llevo a cabo mediante clases ya que se optó por
codificar de la manera tradicional en Visual.
2.2.1 Identificación de objetos y características con respecto a la programación
Objetos identificados dentro del sistema:
BaseDatos
Consultas
ColaEspera
BufferCExternas
NumeroAleatorio
DistribucionExponencial
GeneradorConsultas
Timers
A continuación se muestran las variables que se utilizan en el código fuente y las
funciones que se definieron.
Estructuras de datos
Type consulta
id As Integer
idGrupo As Integer
usuarioM As Integer
tipo As Integer
tiempoResupuesta As Single
tiempoLlegada As Single
End Type
Parámetros de entrada
Public M As Integer
Public r As Integer
Public P1 As Single
Public P2 As Single
Public P3 As Single
Public b As Integer
Public T As Single
Public C As Integer
Public lambda1 As Single
Public lambda2 As Single
Public idGrupo As Single
Public descSimulacion As String
Variables del sistema
Public idSimulacion As Integer
Public regConsulta0 As consulta
Public regConsulta1 As consulta
Public temp As consulta
Public aux As consulta
Public t1 As Double
Public t2 As Double
Public regfinal As Integer
Public usuarioAct As Integer
Public totConsRemota As Integer
Public totConsLocal As Integer
Public totConsPerdidas As Integer
Public numConsultas As Integer
Public X1 As Double
Public X2 As Double
Public Xr1 As Single
Public Xr2 As Single
Public ColapLocal() As consulta
Public ColapRemota() As consulta
Public Frente1 As Integer
Public Final1 As Integer
Public Frente2 As Integer
Public Final2 As Integer
Public dbaccess As ADODB.Connection
Public consulta As ADODB.Command
Public rs As ADODB.Recordset
Public avgLocal As Single
Public avgRemota As Single
Public sumaSimulation As Single
Public Tsimulacion As Single
Public coeficiente As Single
Funciones globales
Public Function Dexponencial(Lambda As Single, ByRef Na As Single) As Double
Public Function EligeUsuario(M As Integer) As Integer
Public Function ModificaBD(tipo As Integer)
Public Function iniciaSimulacion()
Public Function insertaColaRemota(regConsulta1 As consulta)
Public Function eliminaColaLocal() As consulta
Public Function eliminaColaRemota() As consulta
Public Function ColaLocalvacia() As Boolean
Public Function ColaRemotavacia() As Boolean
Public Function ColaLocalllena() As Boolean
Public Function ColaRemotallena() As Boolean
Public Function registraConsPerdidas()
Public Function generaTipoCons() As Integer
Public Sub guardaGLocal()
Public Sub guardaGRemota()
Public Function guardaAtendidos(temp As consulta)
Public Function BloqueaUsuario(User As Integer) As Boolean
Public Function verificaParametrosEntrada()
Public Function generaRepCorto()
Public Function generaRepDetalleAct()
Public Function generaRepDetalleHist()
Public Function graficaDLambda2()
Public Function graficaDLambda1()
2.6 Pantallas del Sistema y la animación
Los opciones del menú del sistema son las siguientes:
Contiene dos menús principales


Sistema
Reporte
El menú sistema tiene los siguientes submenús:



Parámetros de entrada
Iniciar simulación
Repetir simulación
Nueva
Actual
El menú Reporte

Reporte actual
 Historial
El submenú parámetros de entrada le permite al usuario introducir los valores de los
parámetros de entrada para poder iniciar la simulación como se ven en la figura siguiente
Como podar observar en la figura se encuentra un botón que le permite al usuario
activar los valores por default al sistema, para llevar a cabo una rápida prueba
El submenú Iniciar Simulación con esta opción se inicia la simulación permitiendo al
usuario ver gráficamente lo que esta sucediendo.
Como se muestra en la figura siguiente:
Al finaliza la simulación se muestra en la esquina inferior derecha los resultados de la
simulación de una forma muy breve
La opción repetir simulación nueva , le permite correr una simulación con diferentes
parámetros, es decir una simulación diferente a la que realizo.
La opción repetir simulación nueva , le permite ejecutar la misma simulación y los
resultados son almacenados en un historial en la base de datos utilizada por este sistema,
y estos puede ser consultados posteriormente a con las opciones de reporte
2.7 Pruebas del sistema
Nota: Se utilizo Crystal Reports para la generación de reportes
Ejecutando la primera simulación se muestran sus parámetros y sus salidas
Ejecutan la segunda simulación
Ejecutando una tercera simulación 5 veces
2.8 Requerimientos del sistema
Sistema Operativo Windows 98 ó superior
Memoria Ram: 32 mb
Conclusiones
Seguir los pasos que son sugeridos en la mayoría de la literatura acerca del tema, facilita
la implementación de modelos de simulación. Este trabajo sirvió como motivación para
aplicar los conocimientos adquiridos en la asignatura acerca de los eventos modelados
por fenómenos de espera. Se presentaron las complicaciones habituales que todo proceso
de simulación posee. En especial, en la fase de diseño del sistema, la abstracción de las
interrelaciones entre las distintas variables y los tiempos asociados de respuesta. En
general se puede concluir que la simulación de eventos estocásticos es una herramienta
útil y poderosa para el estudio de los sistemas en tiempo discretos.
Bibliografía
[1] Averill Law, Kelton, “Simulation Moeling & Analysis” MacGrawHill (1991)
[2] Robert E. Shanon, “Systems Simulation, the art and science”, Prentice Hall (1975)
[3] George S. Fishman, “Conceptos y Métodos en la Simulación Digital de Eventos
Discretos”, Edit. Limusa (1978)
Descargar