analizando la performance del subsistema de io

29
Analizando la performance del subsistema de I/O 27 de Abril 2016 (12 pm GMT -5) Javier Villegas Resumen: Analizaremos el subsistema de I/O para detectar los posibles cuellos de botella. Para llevar a cabo esto utilizaremos distintas técnicas y herramientas Está por comenzar: Moderador: Carlos Ulate Próximos Eventos Creación de un modelo de análisis predictivo en la nube 04 de Mayo Patricio Cofre Power BI con MS Dynamics AX 11 de Mayo Juan Manuel Rafael Fabian Administrando la Continuidad del Negocio con Azure SQL Database 18 de Mayo Adrian Miranda

Upload: spanishpassvc

Post on 15-Apr-2017

394 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Analizando la performance del subsistema de IO

Analizando la performance del subsistema de I/O27 de Abril 2016 (12 pm GMT -5)

Javier VillegasResumen:

Analizaremos el subsistema de I/O para detectar los posibles cuellos de botella. Para llevar a cabo esto utilizaremos distintas técnicas y herramientas

Está por comenzar:

Moderador: Carlos Ulate

Próximos EventosCreación de un modelo de

análisis predictivo en la nube04 de Mayo

Patricio Cofre

Power BI con MS Dynamics AX

11 de MayoJuan Manuel Rafael Fabian

Administrando la Continuidad del Negocio con

Azure SQL Database18 de Mayo

Adrian Miranda

Page 2: Analizando la performance del subsistema de IO

Manténgase conectado a nosotros!

Visítenos en http://globalspanish.sqlpass.org

/SpanishPASSVC

lnkd.in/dtYBzev

/user/SpanishPASSVC

/SpanishPASSVC

Page 3: Analizando la performance del subsistema de IO

3

Page 4: Analizando la performance del subsistema de IO

4

Oportunidades de Voluntariado

PASS no pudiera existir sin personas apasionadas y dedicadas de todas partes del

mundo que dan de su tiempo como voluntarios.

Se un voluntario ahora!!

Para identificar oportunidades locales visita volunteer.sqlpass.org

Recuerda actualizar tu perfil en las secciones de “MyVolunteering” y MyPASS para mas

detalles.

Page 5: Analizando la performance del subsistema de IO

Sigan Participando!• Obtén tu membresía gratuita en sqlpass.org

• Linked In: http://www.sqlpass.org/linkedin• Facebook: http://www.sqlpass.org/facebook• Twitter: @SQLPASS• PASS: http://www.sqlpass.org

Page 6: Analizando la performance del subsistema de IO

Analizando la performance del subsistema de I/O

27 de Abril de 2016Javier VillegasMCP y MCTS.Trabajando como profesional de SQL Server desde 1997DBA Manager en Mediterranean Shipping Company desde 2006Miembro de la comunidad PASS desde 2008Moderador: Carlos Ulate

Page 7: Analizando la performance del subsistema de IO

7

Agenda

• Mejores Practicas• Métricas• Métodos para medir la performance de I/O• Queries de diagnostico de I/O• Herramientas• Tipos de Storage para SQL Server

Page 8: Analizando la performance del subsistema de IO

8

SQL Mejores Practicas

• Identificar tipo de Workload• Online Transaction Processing (OLTP)

• Alta escritura• Relational Data Warehouse (DW)

• Alta lectura• Online Analytical Processing (OLAP)

• Sequencial Throughput • Backup/Restore

• Asignar “Perform volumen maintenance tasks” a la SQL Service Account• Utilizar Backup compression

• Utiliza un poco mas de CPU pero menos I/O

• Mantener los VLF bajo control• Creación y Mantenimiento de índices• Usar la opción MAXDOP para mejorar la performance durante el mantenimiento de índices• Utilizar Data Compression donde sea apropiado para reducir el I/O

Page 9: Analizando la performance del subsistema de IO

9

SQL Mejores Practicas

• Es importante diseñar el Sistema de I/O de nuestro entorno SQL Server siguiendo las mejores practicas.

• Solicitar las mejores practicas de SQL Server para SAN en cuestión

• La performance del SQL Server I/O es crucial para la performance general del entorno dado que el acceso a datos en disco es mucho mas lento que memoria

• Conocer nuestro Sistema de I/O

• Muchos DBAs se preocupan solo por chequear los backups y hacer tunning de queries pero también es importante saber que ocurre con el Sistema de I/O y el storage

Page 10: Analizando la performance del subsistema de IO

10

SQL Mejores Practicas

• Las 3 métricas mas importante para la performance del storage• Latencia

Es el tiempo que toma en completar un I/O• I/O operaciones por segundo (IOPS)• Directamente relacionado con la latencia.

• Sequencial Throughput (MB/sec o GB/sec)• Importante para Backup/Restore, Creación y mantenimiento de índices,

• Estas 3 métricas están interrelacionadas entre si. No podemos solo mirar una de ella en forma separada sin saber acerca de las otras

Page 11: Analizando la performance del subsistema de IO

11

SQL Server I/O Métricas

• Lectura vs Escritura• DMV

• I/O rates• Reads/sec, Writes/sec desde PerfMon• Disk read bytes/sec, Disk writes/sec es Throughput

• Latencia promedio• Average disk sec/read, Average disk sec/write

Page 12: Analizando la performance del subsistema de IO

12

Métodos para medir la performance de I/O

• Task Manager en Windows 2012 o Windows 2012 R2 (Dependiendo del tipo de storage que se use)

• Windows Resource Monitor (sección de Discos)• Contadores de PerfMon (LogicalDisk)• DMV• Herramientas de medición de performance

• CrystalDiskMark• SQLIO• DiskSpd (SQLIO mejorado)

Page 13: Analizando la performance del subsistema de IO

13

Task Manager

Page 14: Analizando la performance del subsistema de IO

14

Resource Monitor

Page 15: Analizando la performance del subsistema de IO

15

PerfMon

Page 16: Analizando la performance del subsistema de IO

16

Tipos de Storage para SQL Server

Internal drives (3.5”, 2.5” o 1.8”)RAID / SSD

Direct-attached storage (DAS)External Enclosure / Fácil de configurar y administrar / Dedicado, no compartido

Storage area networks (SAN)Compartido / muchas bahías / gran tamaño de cacheFiber-Channel / iSCSI

PCIe flash-based (ex. Fusion-IO)Seq. Throughput y Random I/O muy alto

Server Message Block (SMB) 3.0/3.02 file sharesSQL 2012 o superior.

Page 17: Analizando la performance del subsistema de IO

17

DEMOI/O Diagnostic Queries

Page 18: Analizando la performance del subsistema de IO

18

Patrones comunes de los resultados de DMV

• Es común ver alta la latencia de escritura en los archivos de datos de la TempDBAsegurarse de tener múltiples archivos de datos (4 – 8)Usar Trace Flag 1118Considerar ubicar la TempDB en discos SSD

• Si se ven alta latencia de lectura en los archivos de datos de bases de usuariosBuscar signos de presión de memoria.Realizar mantenimientos de índicesConsiderar agregar mas RAMEn SQL 2014 considerar el uso de Buffer Pool Extension BPE

Page 19: Analizando la performance del subsistema de IO

19

Herramientas para evaluar performance de I/O

Diskspd (evolución del SQLIO) – Herramienta ideal para el testeo y validación del storagehttps://gallery.technet.microsoft.com/DiskSpd-a-robust-storage-6cd2f223

Ejemplo 1

Especifica un tamaño de bloque de 256K, se ejecuta secuencialmente, 100% lectura. Corre por 10 segundos. Corre 8 IO simultáneos y 4 threads por destino. Se ejecuta en el disco físico n# 9

Diskspd.exe -b256K -d10 -o8 -t4 -a0,1 #9

Page 20: Analizando la performance del subsistema de IO

20

Herramientas para evaluar performance de I/O

Command Line: Diskspd.exe -b256K -d10 -o8 -t4 -a0,1 #9

Input parameters:

        timespan:   1        -------------        duration: 10s        warm up time: 5s        cool down time: 0s        random seed: 0        advanced affinity: 0, 1        path: '#9'                think time: 0ms                burst size: 0                using software and hardware cache                performing read test                block size: 262144                number of outstanding I/O operations: 8                stride size: 262144                thread stride size: 0                threads per file: 4                using I/O Completion Ports                IO priority: normal

Page 21: Analizando la performance del subsistema de IO

21

Herramientas para evaluar performance de I/O

Results for timespan 1:*******************************************************************************

actual test time:       10.01sthread count:           4

Total IOthread |       bytes     |     I/Os     |     MB/s   |  I/O per s |  file------------------------------------------------------------------------------     0 |      1385431040 |         5285 |     132.02 |     528.06 | #9 (186GB)     1 |      1385431040 |         5285 |     132.02 |     528.06 | #9 (186GB)     2 |      1385431040 |         5285 |     132.02 |     528.06 | #9 (186GB)     3 |      1385693184 |         5286 |     132.04 |     528.16 | #9 (186GB)------------------------------------------------------------------------------total:        5541986304 |        21141 |     528.09 |    2112.35

Read IOthread |       bytes     |     I/Os     |     MB/s   |  I/O per s |  file------------------------------------------------------------------------------     0 |      1385431040 |         5285 |     132.02 |     528.06 | #9 (186GB)     1 |      1385431040 |         5285 |     132.02 |     528.06 | #9 (186GB)     2 |      1385431040 |         5285 |     132.02 |     528.06 | #9 (186GB)     3 |      1385693184 |         5286 |     132.04 |     528.16 | #9 (186GB)------------------------------------------------------------------------------total:        5541986304 |        21141 |     528.09 |    2112.35

Write IOthread |       bytes     |     I/Os     |     MB/s   |  I/O per s |  file------------------------------------------------------------------------------     0 |               0 |            0 |       0.00 |       0.00 | #9 (186GB)     1 |               0 |            0 |       0.00 |       0.00 | #9 (186GB)     2 |               0 |            0 |       0.00 |       0.00 | #9 (186GB)     3 |               0 |            0 |       0.00 |       0.00 | #9 (186GB)------------------------------------------------------------------------------total:                 0 |            0 |       0.00 |       0.00

Page 22: Analizando la performance del subsistema de IO

22

Herramientas para evaluar performance de I/O

Ejemplo 2

Especifica un tamaño de bloque de 8K, Corre por 60 segundos ,deshabilita todo el chache de hardware y software . Corre 2 IO simultáneos y 4 threads por destino. Aleatoriamente 30% de escritura y 70% de lectura. Crea un archive de test de 50MB

Diskspd.exe -b8K -d60 -h -L -o2 -t4 -r -w30 -c50M c:\io.dat

Page 23: Analizando la performance del subsistema de IO

23

Herramientas para evaluar performance de I/O

Command Line: Diskspd.exe -b8K -d60 -h -L -o2 -t4 -r -w30 -c50M c:\io.dat

Input parameters:

        timespan:   1        -------------        duration: 60s        warm up time: 5s        cool down time: 0s        measuring latency        random seed: 0        path: 'c:\io.dat'                think time: 0ms                burst size: 0                software and hardware cache disabled                performing mix test (write/read ratio: 30/100)                block size: 8192                using random I/O (alignment: 8192)                number of outstanding I/O operations: 2                stride size: 8192                thread stride size: 0                threads per file: 4                using I/O Completion Ports                IO priority: normal

Page 24: Analizando la performance del subsistema de IO

24

Herramientas para evaluar performance de I/O

Results for timespan 1:*******************************************************************************

actual test time:       60.00sthread count:           4

Total IOthread |       bytes     |     I/Os     |     MB/s   |  I/O per s |  AvgLat  | LatStdDev |  file-----------------------------------------------------------------------------------------------------     0 |        44900352 |         5481 |       0.71 |      91.35 |   21.910 |    27.633 | c:\io.dat (50MB)     1 |        44720128 |         5459 |       0.71 |      90.98 |   21.987 |    26.877 | c:\io.dat (50MB)     2 |        44761088 |         5464 |       0.71 |      91.07 |   21.981 |    26.822 | c:\io.dat (50MB)     3 |        45817856 |         5593 |       0.73 |      93.22 |   21.466 |    26.323 | c:\io.dat (50MB)-----------------------------------------------------------------------------------------------------total:         180199424 |        21997 |       2.86 |     366.61 |   21.834 |    26.916

Read IOthread |       bytes     |     I/Os     |     MB/s   |  I/O per s |  AvgLat  | LatStdDev |  file-----------------------------------------------------------------------------------------------------     0 |        31842304 |         3887 |       0.51 |      64.78 |   12.384 |    13.325 | c:\io.dat (50MB)     1 |        31121408 |         3799 |       0.49 |      63.32 |   12.258 |    13.198 | c:\io.dat (50MB)     2 |        31326208 |         3824 |       0.50 |      63.73 |   12.344 |    13.800 | c:\io.dat (50MB)     3 |        32366592 |         3951 |       0.51 |      65.85 |   11.886 |    12.602 | c:\io.dat (50MB)-----------------------------------------------------------------------------------------------------total:         126656512 |        15461 |       2.01 |     257.68 |   12.216 |    13.235

Write IOthread |       bytes     |     I/Os     |     MB/s   |  I/O per s |  AvgLat  | LatStdDev |  file-----------------------------------------------------------------------------------------------------     0 |        13058048 |         1594 |       0.21 |      26.57 |   45.140 |    37.837 | c:\io.dat (50MB)     1 |        13598720 |         1660 |       0.22 |      27.67 |   44.251 |    35.563 | c:\io.dat (50MB)     2 |        13434880 |         1640 |       0.21 |      27.33 |   44.453 |    35.090 | c:\io.dat (50MB)     3 |        13451264 |         1642 |       0.21 |      27.37 |   44.518 |    35.010 | c:\io.dat (50MB)-----------------------------------------------------------------------------------------------------total:          53542912 |         6536 |       0.85 |     108.93 |   44.585 |    35.880

Page 25: Analizando la performance del subsistema de IO

25

Herramientas para evaluar performance de I/O

  %-ile |  Read (ms) | Write (ms) | Total (ms)----------------------------------------------    min |      0.152 |      3.474 |      0.152   25th |      4.242 |     20.145 |      6.114   50th |      8.638 |     34.130 |     12.401   75th |     15.380 |     57.890 |     27.417   90th |     27.425 |     89.141 |     52.325   95th |     37.417 |    112.730 |     74.555   99th |     63.537 |    173.054 |    129.1223-nines |    114.707 |    285.271 |    228.0234-nines |    156.141 |    423.908 |    317.2515-nines |    157.008 |    423.908 |    423.9086-nines |    157.008 |    423.908 |    423.9087-nines |    157.008 |    423.908 |    423.9088-nines |    157.008 |    423.908 |    423.908    max |    157.008 |    423.908 |    423.908

Page 26: Analizando la performance del subsistema de IO

26

Herramientas para evaluar performance de I/O

CristalDiskMark – Disk Benchmark utility - http://crystalmark.info/download/index-e.html

Page 27: Analizando la performance del subsistema de IO

27

DEMOSET Statistics IO

Perfmon/Powershell

Page 28: Analizando la performance del subsistema de IO

28

Preguntas ?

Page 29: Analizando la performance del subsistema de IO

Creación de un modelo de análisis predictivo en la nube

04 de Mayo 2016(12 pm GMT -5)

Patricio CofreResúmen:

Microsoft Azure ofrece una solución de análisis predictivo 100% Cloud, donde es posible realizar el proceso analítico de búsqueda de patrones en los datos, y a la vez la explotación de estos modelos en un ambiente de producción altamente disponible y escalable como lo es Microsoft Azure.

Próximo Evento