Compartir vía


Comparación de rendimiento entre la lectura del disco y la de la caché de AppFabric

Este ejemplo muestra que almacenar y leer datos en la caché de AppFabric resulta más eficiente que hacerlo desde un disco.

El ejemplo lee varios archivos de imagen para simular solicitudes de usuario de acceso a los archivos del disco o de la caché y compara el tiempo que tarda en obtenerlos.

Nota

Los ejemplos se proporcionan únicamente con fines de aprendizaje. No están concebidos para su uso en un entorno de producción ni se han probado en este tipo de entorno. Microsoft no proporciona asistencia técnica para estos ejemplos.

Requisitos previos

Preferiblemente, los usuarios deben estar familiarizados con el lenguaje de scripting de Windows PowerShell.

Para el ejemplo se supone lo siguiente:

  • Windows PowerShell 2.0 está instalado.

  • Microsoft AppFabric 1.1 para Windows Server está instalado. (Esto agrega los archivos .DLL necesarios a la GAC).

Configuración de la caché de AppFabric

Si todavía no lo ha hecho, configure la caché de AppFabric mediante la herramienta de configuración de Microsoft AppFabric 1.1 para Windows Server (use la configuración predeterminada). En el ejemplo se supone que se ha configurado una memoria caché de AppFabric con las opciones predeterminadas (cacheHostName=AppFabricCachingService y cacheName=default).

Inicio del clúster de caché

  1. Abra una ventana de comandos de Windows PowerShell en un modo con privilegios elevados y ejecute el comando siguiente para agregar el módulo de administración de caché distribuida:

    Import-Module DistributedCacheAdministration
    
  2. Ejecute el comando siguiente para conceder a la cuenta de usuario acceso al clúster de caché como cliente. Indique el nombre de usuario y de dominio.

    Grant-CacheAllowedClientAccount domain\username
    
  3. Use el comando Get-CacheAllowedClientAccounts para comprobar si se ha concedido acceso a la cuenta de usuario.

  4. Para iniciar el clúster, use el comando Start-CacheCluster.

Generación y ejecución de este ejemplo

El ejemplo se vincula automáticamente con los archivos DLL de la memoria caché de AppFabric Microsoft.ApplicationServer.Caching.Client.dll y Microsoft.ApplicationServer.Caching.Core.dll) de la GAC.

  1. Abra la solución DiskVersusCachePerformance.sln en Visual Studio.

  2. Abra un símbolo del sistema y cambie el directorio a: <Ubicación del ejemplo>\CacheVersusDiskPerformance\DiskVersusCachePerformance\bin\Debug

  3. En este ejemplo, es necesario pasar un parámetro de línea de comandos: la ruta de acceso al directorio de recursos compartidos que forma parte de la carpeta DiskVersusCachePerformance. También se puede agregar a las propiedades del proyecto en la sección “Argumentos de línea de comandos”.

  4. Ejecute el archivo .exe para iniciar la prueba de ejemplo:

    <Location of the sample>\CacheVersusDiskPerformance\DiskVersusCachePerformance\bin\Debug> DiskVersusCachePerformance.exe ..\..\..\fileshare
    

Las acciones que realiza la muestra se describen en el archivo useractions.xml de la carpeta de recursos compartidos. Se admiten las acciones siguientes.

Acción Parámetro(s) Descripción

PageSize

Size

Define el tamaño de página (número de archivos de lectura)

LogIn

UserName

Inicio de sesión del usuario

LogOut

UserName

Fin de sesión del usuario

ViewAlbum

AlbumIndex

Desplazamiento a la carpeta “album[Index]”

ViewPage

PageIndex

Lectura de archivos [PageIndex*PageSize - PageIndex*(PageSize+1)-1]

ViewNextPage

N/D

Desplazamiento al siguiente grupo de archivos [(PageIndex+1)*PageSize - PageIndex*(PageSize+2)-1]

ViewPrevPage

N/D

Desplazamiento al grupo de archivos anterior

Las secuencias de acciones se definen como se describe a continuación.

  <useraction>    <action>PageSize</action>     <data>500</data>      </useraction>
  <useraction>    <action>LogIn</action>        <data>tom</data>      </useraction>
  <useraction>    <action>ViewAlbum</action>    <data>0</data>        </useraction>
  <useraction>    <action>ViewPage</action>     <data>0</data>        </useraction>
  <useraction>    <action>ViewNextPage</action> <data>null</data>     </useraction>
  <useraction>    <action>ViewPrevPage</action> <data>null</data>     </useraction>
  <useraction>    <action>LogOut</action>       <data>tom</data>      </useraction>

Interpretación del segmento anterior:

  1. Definir el número de elementos por página en 500

  2. Iniciar sesión en tom (permite el acceso a la página al usuario conectado)

  3. Seleccionar album0

  4. Ver primera página (leer archivos 0-499 del disco o caché)

  5. Ver página siguiente (intentar leer archivos 500-999 del disco)

  6. Ver página anterior (volver a leer archivos 0-499 de la caché ahora que están cargados)

  7. Cerrar sesión (revocar el permiso concedido)

Al cerrar sesión, el ejemplo notifica una comparación de rendimiento del acceso a los archivos del disco y a los de la memoria caché de AppFabric.

Nota

Para cada ejecución subsiguiente de este ejemplo, use el comando Restart-CacheCluster para borrar la memoria caché y espere entre 10 y 15 segundos.

Nota

Al ejecutar este ejemplo, puede que aparezcan mensajes como [size2_il.cur-DiskRead- error 2 Delay (ticks) 7128]. Este error indica la diferencia entre el tamaño de archivo que notifica FileInfo y el tamaño real del archivo del disco que se lee. Puede ignorar esta diferencia, ya que los datos almacenados en la memoria caché tienen el mismo tamaño que los datos que se leen del disco.

Solución de problemas

Si no se agregan los datos a la caché, es posible que la directiva de expulsión de la caché lo impida. Para asegurarse de que la memoria caché no tiene ninguna directiva de expulsión configurada, ejecute los comandos siguientes para quitar la memoria caché predeterminada y volver a crearla sin directivas de expulsión:

Remove-Cache -CacheName default
New-Cache -CacheName default -Eviction None

Eliminación de este ejemplo

Use el comando Restart-CacheCluster para limpiar los datos de la caché y reiniciar el clúster de caché.

Vea también

Otros recursos

Ejemplos (Almacenamiento en caché de AppFabric 1.1)

  2012-03-05