Mostrando entradas con la etiqueta Storage. Mostrar todas las entradas
Mostrando entradas con la etiqueta Storage. Mostrar todas las entradas

sábado, 7 de febrero de 2015

DiskSpd–testing de storage para SQL Server de Sharepoint

Microsoft siempre recomendó SQLIO o IOMETER para hacer testing sobre el storage. Ultimamente está recomendado utilizar DiskSpd (https://github.com/microsoft/diskspd). La tool puede simular diferentes tipos de workloads para el storage. Cómo la performance de SQL Server impacta directamente sobre la performance de Sharepoint, vamos a probarla sobre el SQL Server de un Sharepoint montado sobre azure (A6, 4 núcleos y 28 GB de RAM).

Para bajar los binarios, ingrese acá: http://aka.ms/DiskSpd. En el zip vienen tres versiones amd64fre (para 64-bit systems), x86fre (para 32-bit systems) y armfre (para ARM systems).

Vamos a usar amd64fre en este caso.

Les recomiendo leer el siguiente artículo Storage and SQL Server capacity planning and configuration (SharePoint Server 2013)

En una sección del artículo comenta que una base de contenido tienden a estar en el rango de 0.2 IOPS/GB a 0.5 IOPS/GB, obviamente dependiendo del tipo de contenido, usuarios, frecuencia, etc. Pero es en general rondan esos IOPS una base de contenido. Les dejo un resumen para que sepan de forma más exacta la cantidad de IOPS que necesitan

image

Para las bases del search pueden llegar a los 10 IOPS/GB, cómo siempre depende del tipo de contenido y el tamaño que estás indexando.

Las bases de contenido se deben optimizar para “Read Operations”, ya que en general el 80% son lecturas para las bases de contenido (de nuevo depende de tu ambiente). En cambio la TempDb debería estar optimizada para “Write Operations”, al igual que los transaction logs. Tanto para la TempDb y los transaction logs se recomienda tener 2 IOPSxGB.

Abro una consola de powershell, voy hasta el path donde esta DiskSpd, y ejecuto lo siguiente

diskspd.exe -c1G -d60 -b64k  -w20  -h -L C:\testfile.dat

-c = tamaño en bytes del archivo a probar

-d = tiempo de la prueba

-b = tamaño de la operación de IO en KB, en general se recomienda tener formateado los sql con 64KB de block size, por cuestiones de performance. Les dejo un post donde defino las best practices para SQL Server para Sharepoint.

-w = 20% de writes, 80% de lectura. Depende de donde hagas las pruebas (Ej: partición de la tempdb o partición de la content database, puede variar este porcentaje)

-h = disabled hardware y software caching

-l = capturo la información de la latencia

image

PS C:\Users\administrador\Desktop\Diskspd-v2.0.15\amd64fre> .\diskspd -c1G -d60 -b64k  -w20  -h -L C:\testfile.dat

Command Line: C:\Users\administrador\Desktop\Diskspd-v2.0.15\amd64fre\diskspd.exe -c1G -d60 -b64k -w20 -h -L C:\testfile
.dat

Input parameters:

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

 

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

actual test time:       60.00s
thread count:           1
proc count:             4

CPU |  Usage |  User  |  Kernel |  Idle
-------------------------------------------
   0|   2.66%|   1.43%|    1.22%|  97.34%
   1|   1.04%|   0.91%|    0.13%|  98.96%
   2|   0.18%|   0.18%|    0.00%| 100.47%
   3|   0.29%|   0.29%|    0.00%| 107.21%
-------------------------------------------
avg.|   1.04%|   0.70%|    0.34%| 101.00%

Total IO
thread |       bytes     |     I/Os     |     MB/s   |  I/O per s |  AvgLat  | LatStdDev |  file
-----------------------------------------------------------------------------------------------------
     0 |      1251147776 |        19091 |      19.89 |     318.18 |    6.299 |    21.863 | C:\testfile.dat (1024MB)
-----------------------------------------------------------------------------------------------------
total:        1251147776 |        19091 |      19.89 |     318.18 |    6.299 |    21.863

Read IO
thread |       bytes     |     I/Os     |     MB/s   |  I/O per s |  AvgLat  | LatStdDev |  file
-----------------------------------------------------------------------------------------------------
     0 |      1003880448 |        15318 |      15.96 |     255.30 |    4.260 |    17.148 | C:\testfile.dat (1024MB)
-----------------------------------------------------------------------------------------------------
total:        1003880448 |        15318 |      15.96 |    255.30 |    4.260 |    17.148

Write IO
thread |       bytes     |     I/Os     |     MB/s   |  I/O per s |  AvgLat  | LatStdDev |  file
-----------------------------------------------------------------------------------------------------
     0 |       247267328 |         3773 |       3.93 |      62.88 |   14.575 |    33.755 | C:\testfile.dat (1024MB)
-----------------------------------------------------------------------------------------------------
total:         247267328 |         3773 |       3.93 |      62.88 |   14.575 |    33.755


  %-ile |  Read (ms) | Write (ms) | Total (ms)
----------------------------------------------
    min |      0.088 |      6.141 |      0.088
   25th |      0.122 |      7.052 |      0.127
   50th |      0.173 |      8.019 |      0.215
   75th |      0.310 |     13.518 |      7.787
   90th |     13.661 |     22.534 |     15.612
   95th |     19.704 |     31.477 |     23.500
   99th |     31.262 |     84.047 |     37.936
3-nines |    245.343 |    525.326 |    267.420
4-nines |    485.116 |    880.573 |    878.033
5-nines |    528.841 |    880.573 |    880.573
6-nines |    528.841 |    880.573 |    880.573
7-nines |    528.841 |    880.573 |    880.573
8-nines |    528.841 |    880.573 |    880.573
    max |    528.841 |    880.573 |    880.573

Links recomendados:

http://www.emc.com/collateral/hardware/white-papers/h12468-sharepoint-server-best-practices-wp.pdf

http://blogs.technet.com/b/josebda/archive/2014/10/13/diskspd-powershell-and-storage-performance-measuring-iops-throughput-and-latency-for-both-local-disks-and-smb-file-shares.aspx

sábado, 13 de septiembre de 2014

Probar la performance de nuestro storage mediante SQLIO y powershell

La idea ejecutar un par de pruebas de stress sobre nuestro storage para evaluar la performance del mismo. En Sharepoint el cuello de botella suele ser nuestro SQL Server, mediante este script podremos probar si nuestro storage soporta la carga de IOPS requerida para que Sharepoint funcione correctamente.

Current enviroment:

  • Azure IaaS A6, Datacenter Sur de Brasil
  • Disco C (perpetuo, no se ve afectado por reinicios de la VM)
  • Disco D (temporario, Azure mantiene una partición D para workload temporario, ej: logs de Base de datos)

Primero descargamos el siguiente script y sqlio

http://gallery.technet.microsoft.com/scriptcenter/Storage-IO-Performance-d628bad9

http://www.microsoft.com/en-us/download/details.aspx?id=20163

Lo dejamos en una carpeta temporal del C, ej. C:\Temp

Editamos el archivo de powershel

image

Y cambiamos los parámetros.

image

Algunas cosas a tener en cuenta:

  • Trata de tener la cantidad de threads menor o igual a la cantidad de vCPU (threads <= vCPU). Yo por ejemplo tenía 8 cores, y le setee 1 a 4 threads.
  • SQL Server en general escribe sequencial, pero la idea es hacer un stress de nuestro storage, así que deja los dos.
  • El tamaño de los bloques de I/O dependerá de si se usa Eager Writes o Lazy Writer, pero has una prueba con los tres valores (8,64 y 256 KB).

Una vez que se ejecuta nos mostrará un archivo html con toda la información (IOPS, latencia, etc)

image

image

Estos datos podemos pasarlo a un excel y ver una comparativa de performance de nuestro storage.

Ej: promedio de IOPS y latencia de todas las combinaciones

image

image

En general Sharepoint requiere que tengamos tiempos de latencia promedio de :

Datafiles: <= 15ms

Logs: <= 5 ms

Obviamente depende del tipo de base que manejemos y del tamaño. Ej: las bases de search son las bases que más IOPS requieren, o bases de datos relacionadas a record center podriamos tener una latencia entre 20ms a 10 ms.

image

Les dejo un link a post que realicé hace un tiempo sobre las mejores prácticas de SQL Server para Sharepoint.

http://todosharepoint.blogspot.com.ar/2014/03/mejores-practicas-sql-server-para.html

Les dejo el link para descargar todos los archivos:

http://1drv.ms/1qMe0fa

 

Algunos links interesantes para entender estos resultados:

http://www.brentozar.com/archive/2008/09/finding-your-san-bottlenecks-with-sqlio/

http://blogs.technet.com/b/josebda/archive/2013/03/28/sqlio-powershell-and-storage-performance-measuring-iops-throughput-and-latency-for-both-local-disks-and-smb-file-shares.aspx

http://blogs.msdn.com/b/sqlmeditation/archive/2013/04/04/choosing-what-sqlio-tests-to-run-and-automating-sqlio-testing-somewhat.aspx

http://blogs.technet.com/b/sqlpfeil/archive/2012/12/04/working-with-sqlio-and-analyzing-it-s-output.aspx

http://technet.microsoft.com/en-us/library/cc966412.aspx

http://technet.microsoft.com/en-us/library/ff758657%28v=office.15%29.aspx

jueves, 17 de mayo de 2012

Tips/Info #21 Sharepoint 2010

1-Obtener los archivos wsp deployados

$miGranja = Get-SPFarm
$miWSP = $miGranja.Solutions.Item(“SharePointSolution.wsp”).SolutionFile
$miWSP.SaveAs(“C:\Downloads\SharePointSolution.wsp”)



2-Deshabilitar loopback check con powershell

New-ItemProperty HKLM:\System\CurrentControlSet\Control\Lsa -Name “DisableLoopbackCheck” –value “1″ -PropertyType dword

Más info: http://www.gavd.net/servers/sharepointv3/spsv3_item.aspx?top=4&itm=1041


3-Borrar una lista con stsadm


stsadm.exe -o forcedeletelist -url http://myserver:8080/Lists/Team%20Discussion

4-Obtener el path de la carpeta 14 con programación

SPUtility.GetGenericSetupPath(String.Empty)

Ej: si se mantuvo el default de path, se obtendrá: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14

Si deseas una carpeta específica podrás usar el método de la siguiente manera:

SPUtility.GetGenericSetupPath(@"TEMPLATE\FEATURES\")

Obtendrás: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\FEATURES\


5-El comando Export –SPWeb lanza el siguiente error: “There is not enough space on the disk“


El comando exporta todo el contenido a la carpeta TEMP de windows (variable de ambiente %TEMP%), si el disco donde está ubicado este path no tiene espacio, nos lanza este errror. Una solución es cambiar la variable de entorno para que apunte a otra partición o disco.


6-Eligiendo el tipo de definición de job


Los jobs pueden heredar de las siguientes clases del namespaces Microsoft.SharePoint.Administration






























SPAdministrationServiceJobDefinitionInvoca el SharePoint Administration Service
SPAllSitesJobDefinitionItera sobre todos los sitios en una Web Application
SPContentDatabaseJobDefinitionSe ejecuta por Web Application y cada Content Databasees procesada por jobs individuales (es Pausable)
SPFirstAvailableServiceJobDefinitionTimer Job que ejecuta sobre el primer servidor disponible donde el servicio específico existe(es Pausable)
SPJobDefinitionClase base para los Timer Jobs (RECOMENDADO 1)
SPPausableJobDefinitionTimer Job que puede ser pausado
SPServerJobDefinitionEjecutado en un  servidor específico (Pausable)
SPServiceJobDefinitionSe ejecuta en cada servidor de la granja, donde existe el servicio (pausable). RECOMENDADO 2
SPWorkItemJobDefinitionFunciona con el  Timer Job para procesar items de trabajo (Pausable)

7-Manejadores de eventos sobre workflows Sharepoint 2010 (SPWorkflowEventReceiver)


  • Cuando el flujo de trabajo está empezando (WorkflowStarting)
  • Cuando se inicia el flujo de trabajo (WorkflowStarted)
  • Cuando el flujo de trabajo se ha completado (WorkflowCompleted)
  • Cuando el flujo de trabajo se pospone (WorkflowPostponed)

  • Más info: http://www.sharepointkings.com/2012/05/workflow-event-handlers-in-sharepoint.html


    8-Permiso: View Usage Data  -  View reports on Web site usage.


    Permite ver los informes, pero no otorga permisos de administración.


    9-Error "Workbook is larger than the maximum workbook size" Excel Services


  • Ir al Central Administration
  • Click en Application Management
  • Click en Manage Service Applications
  • Click en Excel Service Application
  • Click en Trusted File Locations y después agregar la ubicación del file donde se encuentra y en la propiedad “Maximum Workbook Size” en la sección Workbook Properties editar el campo con el tamaño adecuado.

  • 10-Obtener el tamaño de las content databases con powershell


    Get-SPDatabase | Sort-Object disksizerequired -desc | Format-Table Name, @{Label ="Size(MB)"; Expression = {$_.disksizerequired/1024/1024}}


    11-Recalcular el almancenamiento de los sitios


    $URL = "http://sitio2010”

    $Site = Get-SPSite -identity $URL

    $Site.RecalculateStorageUsed()

    12-Error: An error occurred in the claim provider configured for this Site Collection


    Agregar la url en la sección de  Alternate Access Mapping de la Central Admin