Partager via


Comparaison de performance entre la lecture à partir d'un disque et d'un cache AppFabric

Cet exemple montre qu'il est plus efficace d'utiliser le cache d'AppFabric plutôt que le disque pour le stockage et la lecture.

L'exemple lit un certain nombre de fichiers image pour simuler des demandes d'accès aux fichiers à partir du disque ou du cache, puis compare le temps nécessaire au service des fichiers image.

Notes

Les exemples sont fournis à titre éducatif uniquement. Ils ne sont pas destinés à être utilisés dans un environnement de production et n'ont pas été testés à cet usage. Microsoft ne fournit aucune assistance technique pour ces exemples.

Conditions préalables

Idéalement, les utilisateurs doivent disposer de certaines connaissances relatives aux scripts Windows PowerShell.

Cet exemple repose sur les hypothèses suivantes :

  • Windows PowerShell 2.0 est installé.

  • Microsoft AppFabric 1.1 pour Windows Server est installé. (Cela ajoute les DLL requises au GAC.)

Configuration du cache d'AppFabric

Si ce n'est encore fait, configurez le cache d'AppFabric à l'aide de l'outil de configuration de Microsoft AppFabric 1.1 pour Windows Server (utilisez les paramètres par défaut). Cet exemple suppose qu'un cache AppFabric est configuré avec des paramètres par défaut (cacheHostName=AppFabricCachingService et cacheName=default).

Démarrage du cluster de cache

  1. Ouvrez une fenêtre de commande Windows PowerShell en mode d'exécution élevé, puis exécutez la commande suivante pour ajouter le module d'administration de cache distribué :

    Import-Module DistributedCacheAdministration
    
  2. Exécutez la commande suivante pour octroyer à un compte d'utilisateur l'accès au cluster de cache en tant que client. Fournissez vos nom d'utilisateur et de domaine.

    Grant-CacheAllowedClientAccount domain\username
    
  3. La commande Get-CacheAllowedClientAccounts permet de vérifier si votre compte d'utilisateur dispose d'un accès.

  4. Démarrez le cluster à l'aide de la commande Start-CacheCluster.

Créez et exécutez cet exemple.

L'exemple établit automatiquement une liaison avec les DLL de cache d'AppFabric (Microsoft.ApplicationServer.Caching.Client.dll et Microsoft.ApplicationServer.Caching.Core.dll) à partir du GAC.

  1. Ouvrez la solution DiskVersusCachePerformance.sln dans Visual Studio.

  2. Ouvrez une invite de commandes et remplacez le répertoire par : <Emplacement de l'exemple>\CacheVersusDiskPerformance\DiskVersusCachePerformance\bin\Debug

  3. Cet exemple doit transmettre un paramètre de ligne de commande : le chemin d'accès au répertoire du partage de fichiers (inclus dans le dossier DiskVersusCachePerformance). Vous pouvez également ajouter ce paramètre aux propriétés du projet, dans la section « Arguments de ligne de commande ».

  4. Exécutez le fichier .exe pour démarrer l'exemple de test :

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

Les actions effectuées par l'exemple sont décrites dans le fichier useractions.xml figurant dans le dossier de partage. Les actions suivantes sont prises en charge.

Action Paramètre(s) Description

PageSize

Taille

Définir la taille de page (nombre de fichiers à lire)

LogIn

Nom d'utilisateur

Connecter l'utilisateur

LogOut

Nom d'utilisateur

Déconnecter l'utilisateur

ViewAlbum

AlbumIndex

Déplacer vers le dossier « album[Index] »

ViewPage

PageIndex

Lire les fichiers [PageIndex*PageSize - PageIndex*(PageSize+1)-1]

ViewNextPage

Non applicable

Déplacer vers le jeu de fichiers suivant [(PageIndex+1)*PageSize - PageIndex*(PageSize+2)-1]

ViewPrevPage

Non applicable

Déplacer vers le jeu de fichiers précédent

Une séquence d'actions peut être définie comme suit.

  <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>

Le segment est interprété comme :

  1. Définir le nombre d'éléments par page sur 500

  2. Connecter tom (autorise l'utilisateur connecté à accéder à la page)

  3. Sélectionner l'album0

  4. Afficher la première page (lire les fichiers 0 à 499 à partir du disque ou du cache)

  5. Afficher la page suivante (essayer de lire les fichiers 500 à 999 à partir du disque)

  6. Afficher la page précédente (relire les fichiers 0 à 499 à partir du cache dans lequel ils sont actuellement chargés)

  7. Déconnecter (annuler l'autorisation octroyée)

À chaque déconnexion, l'exemple génère une comparaison entre les performances d'accès aux fichiers à partir du disque ou à partir du cache d'AppFabric.

Notes

Lors des exécutions suivantes de cet exemple, utilisez la commande Restart-CacheCluster pour effacer le cache, puis patientez entre 10 et 15 secondes.

Notes

Durant l'exécution de l'exemple, il se peut que vous rencontriez des messages tels que [size2_il.cur-DiskRead- error 2 Delay (ticks) 7128]. L'erreur indique la différence entre la taille de fichier rapportée par FileInfo et la taille réelle du fichier lu à partir du disque. Cette différence peut être ignorée car les données stockées dans le cache ont la même taille que celles lues sur le disque.

Résolution des problèmes

Si les données ne sont pas ajoutées au cache, il se peut que la stratégie d'éviction du cache soit en cause. Pour vérifier que celle-ci n'est pas définie, exécutez les commandes suivantes pour supprimer le cache par défaut, puis recréez-le sans stratégie d'éviction :

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

Suppression de l'exemple

Redémarrez le cluster de cache à l'aide de la commande Restart-CacheCluster pour nettoyer les données du cache.

Voir aussi

Autres ressources

Exemples (mise en cache d'AppFabric 1.1)

  2012-03-05