Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández...

27
Implementación en C del Implementación en C del benchmark de transacciones benchmark de transacciones distribuidas TPC-C. distribuidas TPC-C. Autores: Autores: Julio A. Hernández Gonzalo. Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Eduardo Hernández Perdiguero. Tutor: Tutor: Diego R. Llanos Ferraris. Diego R. Llanos Ferraris. Departamento de Informática Departamento de Informática Escuela Universitaria Politécnica Escuela Universitaria Politécnica Universidad de Valladolid Universidad de Valladolid

Transcript of Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández...

Page 1: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

Implementación en C del benchmark de Implementación en C del benchmark de transacciones distribuidas TPC-C.transacciones distribuidas TPC-C.

Autores:Autores:

Julio A. Hernández Gonzalo.Julio A. Hernández Gonzalo.

Eduardo Hernández Perdiguero.Eduardo Hernández Perdiguero.

Tutor:Tutor:

Diego R. Llanos Ferraris.Diego R. Llanos Ferraris.Departamento de InformáticaDepartamento de Informática

Escuela Universitaria PolitécnicaEscuela Universitaria Politécnica

Universidad de ValladolidUniversidad de Valladolid

Page 2: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

IntroducciónIntroducción

Benchmark: programa que mide el rendimiento de un Benchmark: programa que mide el rendimiento de un sistema.sistema.

Objetivo:Objetivo:– Construir una implementación de la versión 5 del Construir una implementación de la versión 5 del

benchmark de transacciones distribuidas TPC-C: benchmark de transacciones distribuidas TPC-C: • Multiplataforma. Comparación de máquinas UNIX/linux. Multiplataforma. Comparación de máquinas UNIX/linux.

• Libre distribución.Libre distribución.

• Medir el rendimiento de un cluster experimental en el Medir el rendimiento de un cluster experimental en el Departamento de Informática.Departamento de Informática.

El nombre adoptado para esta implementación ha sido TPCC-UVA.El nombre adoptado para esta implementación ha sido TPCC-UVA.

Page 3: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

TPC-C:TPC-C:– Transaction Processing Performance CouncilTransaction Processing Performance Council (TPC). (TPC).– No hay implementación de dominio público.No hay implementación de dominio público.– Simula un entrorno de aplicación OLTP (On-Line Simula un entrorno de aplicación OLTP (On-Line

Transaction Processing).Transaction Processing).– Se compone de una serie de terminales que solicitan la Se compone de una serie de terminales que solicitan la

ejecución de transacciones contra una base de datos. ejecución de transacciones contra una base de datos. – La medida de rendimiento se expresa en tpmC: La medida de rendimiento se expresa en tpmC:

transacciones por minuto.transacciones por minuto.

IntroducciónIntroducción

Page 4: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

¿Por qué TPC-C?:¿Por qué TPC-C?:– Es un benchmark de base de datos.Es un benchmark de base de datos.

• Además de operaciones numéricas pone en juego otros Además de operaciones numéricas pone en juego otros recursos del sistema: accesos a disco, entradas y salidas, recursos del sistema: accesos a disco, entradas y salidas, comunicaciones...comunicaciones...

• La información resulta relevante en sectores comerciales.La información resulta relevante en sectores comerciales.

– TPC-C es uno de los benchmark de bases de datos TPC-C es uno de los benchmark de bases de datos más utilizados en la actualidad.más utilizados en la actualidad.

IntroducciónIntroducción

Page 5: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

Simula la actividad de una empresa de venta al Simula la actividad de una empresa de venta al por mayor con almacenes y distritos de ventas por mayor con almacenes y distritos de ventas distribuidos geográficamente. distribuidos geográficamente.

TPCC-UVATPCC-UVA

CompañíaCompañía

Almacén 1Almacén 1 Almacen WAlmacen W

Distrito 1Distrito 1 Distrito 2Distrito 2 Distrito 10Distrito 10

2211 3k3k 30k30k

Clientes

Page 6: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

Carga de trabajo: un conjunto de terminales Carga de trabajo: un conjunto de terminales solicitan la ejecución de una mezcla de cinco tipos solicitan la ejecución de una mezcla de cinco tipos de transacciones. de transacciones.

Las transacciones son:Las transacciones son:• New-Order: Introduce una nueva orden.New-Order: Introduce una nueva orden.

• Payment: Pago de una orden.Payment: Pago de una orden.

• Order-Status: Consulta del estado de una orden.Order-Status: Consulta del estado de una orden.

• Delivery: Reparto de las órdenes de un almacén.Delivery: Reparto de las órdenes de un almacén.

• Stock-Level: Consulta las existencias de los artículos. Stock-Level: Consulta las existencias de los artículos.

TPCC-UVATPCC-UVA

Page 7: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

Las transacciones se ejecutan según una mezcla Las transacciones se ejecutan según una mezcla ponderada: ponderada:

• New-Order:New-Order:

• Payment:Payment:• Order-Status:Order-Status:

• Delivery:Delivery:

• Stock-Level:Stock-Level:

El número de New-Order ejecutadas por minuto El número de New-Order ejecutadas por minuto determina la tasa de rendimiento tpmC.determina la tasa de rendimiento tpmC.

TPCC-UVATPCC-UVA

N/DN/D

40%40%

4%4%

4%4%

4%4%

43,47%43,47%

43,47%43,47%

4,35%4,35%

4,35%4,35%

4,35%4,35%

Page 8: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

Base de datos:Base de datos:– Se compone de nueve tablas con distintas Se compone de nueve tablas con distintas

características en cuanto a su esquema y cardinalidad.características en cuanto a su esquema y cardinalidad.– El tamaño viene determinado por el número de El tamaño viene determinado por el número de

almacenes.almacenes.– Utilizamos SQL embebido en C para implementar las Utilizamos SQL embebido en C para implementar las

operaciones con la base de datos.operaciones con la base de datos.– Utilizamos el motor postgreSQL-7.1.3 para gestionar Utilizamos el motor postgreSQL-7.1.3 para gestionar

el sistema de base de datos. el sistema de base de datos.

TPCC-UVATPCC-UVA

Page 9: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

Esquema del TPCC-UVAEsquema del TPCC-UVA

Controlador de Limpiezas

Controlador

delbenchmark

Controlador de Checkpoints

postgreSQL

ETR

MT

BDBD

BitácorasBitácoras MTMT

Bitácora ETRBitácora ETR

ETR ETR ETR

SeñalesSeñales

Accesos a discoAccesos a disco

Comunicación entre Comunicación entre procesosprocesos

Page 10: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

Controlador del benchmark.Controlador del benchmark.– Proporciona el interfaz con el usuario para el acceso a las Proporciona el interfaz con el usuario para el acceso a las

operaciones del benchmark:operaciones del benchmark:• Creación de una nueva base de datos.Creación de una nueva base de datos.• Restauración de una base de datos existente.Restauración de una base de datos existente.• Comprobación de las condiciones de consistencia de la base de datos.Comprobación de las condiciones de consistencia de la base de datos.• Ejecución de un test de rendimiento.Ejecución de un test de rendimiento.• Recuento de resultados del último test realizado.Recuento de resultados del último test realizado.• Comprobación del estado de la base de datos.Comprobación del estado de la base de datos.• Eliminación de la base de datos.Eliminación de la base de datos.

Esquema del TPCC-UVAEsquema del TPCC-UVA

Page 11: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

Emulador de Terminal Remoto -ETR-.Emulador de Terminal Remoto -ETR-.– Emulación de Usuario: Emulación de Usuario:

• Selección de la siguiente transacción.Selección de la siguiente transacción.

• Generación de los datos de transacción. Generación de los datos de transacción.

• Simulación de los tiempos de teclado y de pensar.Simulación de los tiempos de teclado y de pensar.

– Emulación de terminal: Emulación de terminal: • Muestra los datos generados. Muestra los datos generados.

• Muestra los datos resultantes de la ejecución de Muestra los datos resultantes de la ejecución de transacciones.transacciones.

Esquema del TPCC-UVAEsquema del TPCC-UVA

Page 12: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

Emulador de Terminal Remoto -ETR-.Emulador de Terminal Remoto -ETR-.– Envía las solicitudes de transacción y recibe los Envía las solicitudes de transacción y recibe los

resultados.resultados.– Mide los tiempos de respuesta de las transacciones.Mide los tiempos de respuesta de las transacciones.– Registra en la bitácora los datos necesarios para el Registra en la bitácora los datos necesarios para el

cálculo del rendimiento.cálculo del rendimiento.

Esquema del TPCC-UVAEsquema del TPCC-UVA

Page 13: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

Esquema del TPCC-UVAEsquema del TPCC-UVA

Monitor de Transacciones -MT-:Monitor de Transacciones -MT-:– Ejecuta las transacciones enviadas por los ETR según Ejecuta las transacciones enviadas por los ETR según

su orden de llegada.su orden de llegada.– Mide el tiempo de ejecución de la transacción Mide el tiempo de ejecución de la transacción

Delivery.Delivery.– Escribe en un fichero los resultados de la transacción Escribe en un fichero los resultados de la transacción

Delivery. Delivery. – Registra en una bitácora los posibles errores Registra en una bitácora los posibles errores

resultantes de la ejecución de las transacciones.resultantes de la ejecución de las transacciones.

Page 14: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

Esquema del TPCC-UVAEsquema del TPCC-UVA

Controlador de Checkpoints.Controlador de Checkpoints.

– Checkpoint: operación en la que se trasladan las Checkpoint: operación en la que se trasladan las modificaciones de la base de datos de unos ficheros modificaciones de la base de datos de unos ficheros intermedios a los registros de la base de datos.intermedios a los registros de la base de datos.

– Realiza checkpoints periódicos. Realiza checkpoints periódicos.

Page 15: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

Esquema del TPCC-UVAEsquema del TPCC-UVA

Controlador de Limpiezas.Controlador de Limpiezas.– PostgreSQL mantiene información residual en la PostgreSQL mantiene información residual en la

base de datos que relentiza las transacciones.base de datos que relentiza las transacciones.– El Controlador de Limpiezas se encarga de realizar El Controlador de Limpiezas se encarga de realizar

las limpiezas (vacuum) periódicamente sobre la las limpiezas (vacuum) periódicamente sobre la base de datos.base de datos.

– El usuario decide realizar o no las limpiezas. De El usuario decide realizar o no las limpiezas. De hacerlo determina el intervalo entre ellas.hacerlo determina el intervalo entre ellas.

Page 16: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

Comunicaciones ETR - MTComunicaciones ETR - MT

Memoria compartida

Semáforo de sincronismo

ETRETR

MT

Se utilizan los mecanismos IPC del estándar Se utilizan los mecanismos IPC del estándar UNIX System V.UNIX System V.

Cola de mensajes

Page 17: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

ETR

ttWWttWW

ETRETR

Periodo de rampa Periodo de medida

Controlador de Limpiezas

Controlador

delbenchmarkControlador de

Checkpoints

MT

Periodo de fin de test

Ejecución del test de rendimientoEjecución del test de rendimiento

TiempoTiempo

Page 18: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

Resultados obtenidosResultados obtenidos

Características del sistema:Características del sistema:• Procesador AMD Athlon XP 1900+ (1,6GHz).Procesador AMD Athlon XP 1900+ (1,6GHz).

• Disco duro 60 Gb a 7200 rpm.Disco duro 60 Gb a 7200 rpm.

• Memoria Ram 512 Mb a 333 MHz.Memoria Ram 512 Mb a 333 MHz.

Características del test:Características del test:• Cinco almacenes en la base de datos. Cinco almacenes en la base de datos.

• Periodo de rampa 20 minutos.Periodo de rampa 20 minutos.

• Periodo de medida 2 horas.Periodo de medida 2 horas.

• Sin limpiezas en la base de datos.Sin limpiezas en la base de datos.

Rendimiento medido: 61,375 tpmC.Rendimiento medido: 61,375 tpmC.

Page 19: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

Resultados obtenidosResultados obtenidos

Salida del programa:Salida del programa:

Page 20: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

Resultados obtenidosResultados obtenidos

Page 21: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

Resultados obtenidosResultados obtenidos

Page 22: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

Resultados obtenidosResultados obtenidos

Page 23: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

Resultados obtenidos.Resultados obtenidos.

Page 24: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

Tests de larga duraciónTests de larga duración

Rendimiento medido: 42,302 tpmC.Rendimiento medido: 42,302 tpmC.Test fallido.Test fallido.

Test de 8 horas Test de 8 horas sin limpiezassin limpiezas

Test de 8 horasTest de 8 horas con limpiezas cada 60 minutoscon limpiezas cada 60 minutos

Rendimiento medido: 55,956 tpmC.Rendimiento medido: 55,956 tpmC.Test pasado.Test pasado.

Page 25: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

PostgreSQL no es capaz de mantener el rendimiento en PostgreSQL no es capaz de mantener el rendimiento en tests de larga duración.tests de larga duración.

El Monitor de Transacciones utiliza una cola de El Monitor de Transacciones utiliza una cola de mensajes para procurar el aislamiento de las mensajes para procurar el aislamiento de las transacciones. transacciones.

Los resultados del TPCC-UVA no deben compararse con Los resultados del TPCC-UVA no deben compararse con los obtenidos con otras implementaciones del TPC-C.los obtenidos con otras implementaciones del TPC-C.

Comentarios sobre la implementaciónComentarios sobre la implementación

Trabajo futuro:Trabajo futuro: paralelizarlas.

Page 26: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

Se ha construido una herramienta válida para medir Se ha construido una herramienta válida para medir el rendimiento de sistemas UNIX/Linux siguiendo las el rendimiento de sistemas UNIX/Linux siguiendo las especificaciones del estándar TPC-C.especificaciones del estándar TPC-C.

Se han comunicado los procesos mediante los Se han comunicado los procesos mediante los mecanismos IPC del estándar UNIX System V.mecanismos IPC del estándar UNIX System V.

Se ha utilizado como motor de base de datos Se ha utilizado como motor de base de datos postgreSQL. Gracias a ello TPCC-UVA puede postgreSQL. Gracias a ello TPCC-UVA puede distribuirse libremente. distribuirse libremente.

ConclusionesConclusiones

www.infor.uva.es/~diego/TPCC-UVA.htmwww.infor.uva.es/~diego/TPCC-UVA.htm

Page 27: Implementación en C del benchmark de transacciones distribuidas TPC-C. Autores: Julio A. Hernández Gonzalo. Eduardo Hernández Perdiguero. Tutor: Diego.

ConclusionesConclusiones

Se ha realizado una traducción literal de las especificaciones Se ha realizado una traducción literal de las especificaciones de la versión 5 del benchmark TPC-C (130 páginas) para de la versión 5 del benchmark TPC-C (130 páginas) para iniciar una línea de investigación en benchmarking.iniciar una línea de investigación en benchmarking.

Se ha escrito un artículo que ha sido aceptado y que será Se ha escrito un artículo que ha sido aceptado y que será defendido en las Jornadas de Paralelismo de Lérida el defendido en las Jornadas de Paralelismo de Lérida el próximo mes de Septiembre.próximo mes de Septiembre.

““TPCC-UVA: Implementación del TPC-C”TPCC-UVA: Implementación del TPC-C”

J. A. Hernández, E. Hernández y D. R. Llanos.J. A. Hernández, E. Hernández y D. R. Llanos.

XIII Jornadas de Paralelismo, Lérida, Septiembre 2002XIII Jornadas de Paralelismo, Lérida, Septiembre 2002