Performances de disque lentes lorsque la fonctionnalité Cache en écriture est activée

Traductions disponibles Traductions disponibles
Numéro d'article: 332023 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Symptômes

Vous pouvez constater un ralentissement de certaines opérations d'écriture sur disque dur si le disque dur implémente un cache en écriture et que votre ordinateur utilise l'un des systèmes d'exploitation suivants :
  • Windows 2000 Service Pack 3
  • Windows 2000 Service Pack 2 avec le correctif décrit dans l'article suivant de la Base de connaissances Microsoft :
    281672Perte de données possible après activation de la fonctionnalité « Cache en écriture activée »
  • Windows XP
Plus précisément, les performances des opérations d'écriture sur le disque dur peuvent être plus lentes qu'avec les versions de Windows 2000 antérieures au Service Pack 3. Par ailleurs, sur un ordinateur en cluster, les opérations d'écriture vers des disques partagés peuvent entraîner d'importantes différences de performances entre les noeuds.

Cause

Les versions de Windows 2000 antérieures au Service Pack 3 contiennent un bogue qui empêche l'exécution de certaines commandes du disque. Ces commandes ne sont envoyées qu'aux disques où la fonctionnalité de cache en écriture est activée. Elles forcent l'écriture immédiate des données critiques sur les périphériques de disque, ces données ne restant donc pas temporairement retenues dans le cache en écriture.

Pour plus d'informations concernant ce bogue, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
281672Perte de données possible après activation de la fonctionnalité « Cache en écriture activée »

Le correctif décrit dans l'article 281672 de la Base de connaissances corrige ce bogue et les commandes en question sont correctement envoyées au disque lorsque la fonctionnalité de cache en écriture est activée. Ce correctif est inclus dans Windows 2000 Service Pack 3 (SP3). Un correctif semblable est également inclus dans Windows XP.

De par leur conception, ces commandes sacrifient une partie des performances au profit de la sécurité des données critiques. Elles garantissent l'écriture immédiate de ces données critiques sur le disque. Ces commandes ne sont émises que si la fonctionnalité de cache en écriture est activée pour un périphérique de disque spécifique et si elle peut être détectée à l'aide de mécanismes standard. Lorsque ce comportement sécurisé est appliqué à des disques qui implémentent la fonctionnalité de cache en écriture, vous constatez une perte de performances pendant certaines opérations sur disque. Pour plus de détails, reportez-vous à la section « Plus d'informations » de cet article. Par ailleurs, sur un ordinateur en cluster, les informations sur disque dur peuvent ne pas être livrées à un noeud qui prend le relais d'une ressource du cluster lorsque celle-ci subit un basculement. Il existe donc des différences de performances des opérations d'écriture sur disque entre les divers noeuds.

Résolution

Pour les ordinateurs qui exécutent Windows 2000

Avertissement Si vous implémentez ce correctif (en installant les pilotes mis à jour et en activant l'option de cache en écriture Protection de l'alimentation), vous supprimez les protections qui sont intégrées aux pilotes de disque Windows 2000 pour que les données critiques soient écrites sur le disque immédiatement et non ultérieurement à partir du cache intégré du disque. N'implémentez ce correctif que si votre ordinateur et tous les disques durs connectés sont protégés contre les coupures d'alimentation accidentelles par des équipements tels que des batteries d'alimentation redondantes. Contactez les fournisseurs de votre ordinateur et de vos périphériques de stockage pour déterminer le degré de protection de votre matériel. N'implémentez ce correctif que si vous comprenez et acceptez le niveau de risque que cela peut représenter et si vous êtes sûr que ce risque a été atténué par une protection de l'alimentation appropriée. Sur un ordinateur en cluster, il est possible de résoudre le problème des performances variables des opérations d'écriture sur des disques partagés entre les noeuds en définissant l'option de cache en écriture Protection de l'alimentation sur chaque noeud.

Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
281672Perte de données possible après activation de la fonctionnalité « Cache en écriture activée »

Partie 1 : Installation de la mise à jour de Windows 2000

Une fonctionnalité prise en charge qui modifie le comportement par défaut du produit est désormais disponible auprès de Microsoft, mais elle est uniquement destinée à modifier le comportement décrit dans cet article. Elle ne doit être appliquée qu'aux systèmes en ayant un besoin spécifique. Cette fonction peut être soumise à des tests supplémentaires. Par conséquent, si vous n'êtes pas sérieusement concerné par ce problème, nous vous recommandons d'attendre la prochaine version du Service Pack Windows 2000 qui contiendra cette fonction.

Pour obtenir cette fonctionnalité immédiatement, contactez les services de Support technique Microsoft. Pour obtenir la liste complète des numéros de téléphone des services de Support technique Microsoft et des informations sur les frais engendrés, reportez-vous au site Web de Microsoft à l'adresse suivante :
http://support.microsoft.com/default.aspx?scid=fh;FR;CNTACTMS
La version anglaise de ce correctif dispose des attributs de fichier répertoriés dans le tableau suivant ou ceux d'une version ultérieure. Les date et heure de création de ces fichiers sont exprimées en temps universel coordonné (UTC). Lorsque vous affichez les informations des fichiers, les données sont converties à l'heure locale. Pour connaître le décalage entre l'heure UTC et l'heure locale, utilisez l'onglet Fuseau horaire de l'outil Date et heure du Panneau de configuration.
   Date        Heure  Version        Taille  Nom de fichier
   -------------------------------------------------------
   15/01/2003  19:42  5.0.2195.6655  34 832  Classpnp.sys
   15/01/2003  19:43  5.0.2195.6655  30 768  Disk.sys
				
Remarque Les fichiers fournis avec ce correctif présentent des numéros de version ultérieurs au Service Pack 3, mais ils peuvent être utilisés sur les ordinateurs exécutant Windows 2000 avec le Service Pack 2 ou le Service Pack 3 installé. Le package du correctif s'installe sur les ordinateurs exécutant Windows 2000 avec le Service Pack 2 ou le Service Pack 3 installé.

Partie 2 : Configuration de l'option de cache en écriture Protection de l'alimentation

Après avoir installé la mise à jour de Windows 2000 et redémarré l'ordinateur de façon à charger les pilotes mis à jour, vous devez également activer l'option de cache en écriture Protection de l'alimentation pour chaque disque dur sur lequel le cache d'écriture est activé et sur lequel le cache en écriture est protégé contre les coupures de courant accidentelles. Si l'option de cache en écriture Protection de l'alimentation n'est pas activée, cette mise à jour n'apporte aucun changement au comportement ni aux performances des disques.

Pour configurer l'option de cache en écriture Protection de l'alimentation sur les disques sélectionnés, utilisez l'outil Dskcache.exe. Vous pouvez vous procurer Dskcache.exe séparément. Pour plus d'informations sur l'outil Dskcache.exe et la façon d'activer l'option de cache en écriture « Protection de l'alimentation », cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
811392 Procurez-vous l'outil Dskcache.exe pour configurer l'option de cache en écriture « Protection de l'alimentation »
Remarque L'option de cache en écriture Protection de l'alimentation ne peut être activée que pour des disques qui sont présents. Par défaut, l'option Protection de l'alimentation est désactivée. Par conséquent, cette option est désactivée pour tous les disques durs ajoutés après l'application de ce paramètre. Si vous ajoutez des disques, activez l'option de cache en écriture Protection de l'alimentation pour ces disques si vous souhaitez leur appliquer le paramètre.

Pour les ordinateurs qui exécutent Windows XP

En raison de différences de conception entre Windows 2000 et Windows XP, il n'est pas prévu pour le moment de publier une mise à jour résolvant ce comportement pour Windows XP.

Statut

Ce comportement est voulu par la conception même du produit.

Plus d'informations

De nombreux périphériques de disque fournissent des performances accrues par le biais d'un cache intégré qui assure les fonctions de cache de lecture anticipée pour les données lues sur le disque et de cache d'écriture (ou d'écriture différée) pour les données écrites sur le disque. Dans certains cas, il est important que les données soient écrites immédiatement sur le disque physique au lieu d'être retenues dans le cache en écriture intégré du disque pour être écrites plus tard, à la faveur d'une activité moindre du disque. Cela évite de perdre ou d'endommager ces données si, par exemple, le disque ou le contrôleur (où le cache en écriture est implémenté) est brutalement privé d'alimentation.

Deux commandes sont généralement utilisées pour forcer l'écriture immédiate des données en mémoire cache sur le disque physique :
  • Une commande flush buffers, disponible pour les périphériques de disque SCSI et IDE/ATAPI, demande au disque d'écrire immédiatement toutes les données en mémoire cache. Pour les disques SCSI, il s'agit d'envoyer la commande SYNCHRONIZE CACHE au disque. Pour les disques IDE/ATAPI, la commande FLUSH CACHE est envoyée. Cette commande est généralement émise par un programme Windows qui appelle l'API FlushFileBuffers. Par exemple, une opération d'écriture dans le Registre provoque l'appel de l'API FlushFileBuffers et l'envoi de la commande SYNCHRONIZE CACHE au disque.
  • Une commande Write Through, disponible uniquement pour les périphériques SCSI, est implémentée par l'envoi d'une commande WRITE au disque avec le bit ForceUnitAccess (FUA) défini. Ce type de commande demande au périphérique d'écrire immédiatement le paquet de données en cours sur le disque sans passer par le cache en écriture intégré. Elle est le plus souvent le résultat d'un programme Windows qui appelle l'API WriteFile pour écrire dans un fichier qu'il a ouvert en appelant l'API CreateFile API avec l'indicateur FILE_FLAG_WRITE_THROUGH défini. Les logiciels d'analyse antivirus ouvrent généralement les fichiers avec l'indicateur FILE_FLAG_WRITE_THROUGH défini. La prise en charge du bit FUA est facultative et seuls quelques périphériques SCSI et FC (Fiber Channel) implémentent cette fonctionnalité (il s'agit essentiellement de disques individuels et non de baies RAID).
En raison de leur conception même, ces commandes sacrifient une partie des performances (qui serait fournie par le cache en écriture intégré du disque) pour préserver la sécurité des données en cours d'écriture sur le disque. Si les données ne sont pas écrites immédiatement par ces commandes et si le disque est brutalement privé d'alimentation, les données sont perdues et le fichier en cours d'écriture peut être endommagé.

Dans les versions de Windows 2000 antérieures au Service Pack 3, ces commandes ne sont pas correctement émises vers les périphériques de disque au moment opportun. Par exemple, la commande SYNCHRONIZE CACHE n'est pas envoyée lorsqu'un programme appelle FlushFileBuffers et le bit FUA n'est pas défini pour les commandes WRITE lorsque le fichier est ouvert avec l'indicateur FILE_FLAG_WRITE_THROUGH défini. Le correctif qui est décrit dans l'article 281672 de la Base de connaissances résout le problème, de sorte que ces commandes sont émises comme prévu et assurent donc la protection attendue contre la perte de données critiques.

Remarque Microsoft SQL Server fait un usage intensif de l'indicateur FILE_FLAG_WRITE_THROUGH sur les données des bases de données locales, les fichiers journaux et les fichiers de sauvegarde. Les données des bases de données locales peuvent être stockées sur des lecteurs SCSI ou SAN, mais pas sur des lecteurs NAS. Si la fonctionnalité de protection de l'alimentation n'est pas activée sur le matériel qui protège le cache d'écriture continue, les performances de SQL Server peuvent baisser pendant le processus de point de contrôle d'une base de données volumineuse.

Lorsque l'option Cache en écriture activée est configurée pour un périphérique de disque dans le Gestionnaire de périphériques, deux opérations ont lieu :
  • Une commande visant à activer ou désactiver le cache d'écriture est envoyée au périphérique.
  • Une valeur est enregistrée dans le Registre pour permettre au pilote du disque de déterminer s'il doit ou non envoyer des commandes de gestion du cache d'écriture (Flush, Write-Through) vers le disque.
Le correctif décrit dans cet article fournit une option de configuration supplémentaire, l'option de cache en écriture Protection de l'alimentation. Lorsque les options Cache en écriture et Protection de l'alimentation sont toutes les deux activées, le cache d'écriture du disque est activé et reconnu comme tel par le pilote du disque, mais ce dernier n'envoie pas de commandes de gestion du cache d'écriture (Flush, Write-Through). Cela permet d'éviter la perte de performances qui découlerait d'un vidage continuel du cache d'écriture vers le disque, mais au prix d'un risque de perte ou d'altération des données du disque si une panne d'alimentation se produit alors que le cache contient des données qui n'ont pas encore été écrites sur le disque.

Le tableau suivant résume les effets des options Cache en écriture et Protection de l'alimentation.
Réduire ce tableauAgrandir ce tableau
Cache en écritureProtection de l'alimentation
Effet
Désactivée N/A Le disque ne place pas les données à écrire en mémoire cache.
Le pilote n'émet pas les commandes Flush/Write-through.
(Seul comportement possible pour les lecteurs où la fonctionnalité de cache en écriture n'est pas activée dans le matériel.)
Activée Désactivée Le disque place les opérations d'écriture en mémoire cache.
Le pilote émet les commandes Flush/Write-through.
(Comportement par défaut à partir du Service Pack 3, et avec cette mise à jour appliquée, pour les lecteurs où la fonctionnalité de cache en écriture est activée dans le matériel.)
Activée Activée Le disque place les opérations d'écriture en mémoire cache.
Le pilote n'émet pas les commandes Flush/Write-through.
(Comportement résultant du bogue antérieur au Service Pack 3 pour les lecteurs où la fonctionnalité de cache en écriture est activée dans le matériel.)

Propriétés

Numéro d'article: 332023 - Dernière mise à jour: jeudi 19 octobre 2006 - Version: 12.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Windows XP Professionnel
  • Microsoft Windows XP Édition familiale
  • Microsoft Windows 2000 Service Pack 3
  • Microsoft Windows 2000 Service Pack 2
  • Microsoft Windows 2000 Service Pack 3
  • Microsoft Windows 2000 Service Pack 2
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Service Pack 3
Mots-clés : 
kbbug kbfix kbqfe kbhotfixserver KB332023
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com