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
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
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
La commande Get-CacheAllowedClientAccounts permet de vérifier si votre compte d'utilisateur dispose d'un accès.
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.
Ouvrez la solution DiskVersusCachePerformance.sln dans Visual Studio.
Ouvrez une invite de commandes et remplacez le répertoire par : <Emplacement de l'exemple>\CacheVersusDiskPerformance\DiskVersusCachePerformance\bin\Debug
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 ».
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 :
Définir le nombre d'éléments par page sur 500
Connecter tom (autorise l'utilisateur connecté à accéder à la page)
Sélectionner l'album0
Afficher la première page (lire les fichiers 0 à 499 à partir du disque ou du cache)
Afficher la page suivante (essayer de lire les fichiers 500 à 999 à partir du disque)
Afficher la page précédente (relire les fichiers 0 à 499 à partir du cache dans lequel ils sont actuellement chargés)
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