Performances de disque lentes lorsque la mise en cache en écriture est activée

Symptômes

Les performances d’écriture sur disque certaine opérations peuvent être plus lentes que prévu si le disque dur implémente la mise en cache en écriture et que votre ordinateur utilise l’un des systèmes d’exploitation suivants :
  • Windows 2000 Service Pack 3 (SP3)
  • Windows 2000 Service Pack 2 (SP2) sur lequel vous avez installé le correctif qui est décrit dans l’article suivant de la Base de connaissances Microsoft :
    281672 perte de données possible après activation de la fonctionnalité « Cache en écriture activée »
  • Windows XP
Plus précisément, les performances d’écriture du disque dur peuvent être plus lentes qu’avec les versions de Windows 2000 antérieures au Service Pack 3. Également, sur un ordinateur en cluster, les opérations d’écriture de disque pour les disques partagés peuvent entraîner des grandes différences de performances entre les noeuds.

Cause

Versions de Windows 2000 antérieures au Service Pack 3 contiennent un bogue qui empêche l’émission de certaines commandes du disque. Ces commandes sont émises uniquement pour les disques qui disposent de cache d’écriture activé. Elles forcent les données critiques d’être écrites sur des périphériques de disque immédiatement plutôt que conservés temporairement dans le cache d’écriture différée.

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

Le correctif qui est décrit dans l’article 281672 de la Base de connaissances corrige ce bogue et les commandes à délivrer sur le disque comme prévu lorsque le cache d’écriture est activé. Ce correctif est inclus dans Windows 2000 SP3. Un correctif similaire est également compris dans Windows XP.

Par conception, ces commandes sacrifient une partie des performances pour la sécurité des données critiques. Ils vous assurer que les données critiques soient écrites immédiatement sur le disque. Ces commandes ne sont émises que si la mise en 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 mise en cache d’écriture, vous obtiendrez la perte de performances pendant certaines opérations sur disque. Consultez la section « Informations supplémentaires » de cet article pour plus de détails. Également, sur un ordinateur en cluster, les informations sur le disque dur peuvent ne pas remies à un nœud qui est sur une ressource de cluster lorsque la ressource est basculée. Par conséquent, les différences dans les performances des opérations d’écriture sur disque entre chaque nœud se produit.

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 ), les protections qui sont intégrées aux pilotes de disque Windows 2000 pour vous assurer que les données critiques soient écrites sur le disque immédiatement et non sur le disque ultérieurement à partir du cache du disque intégrées sont supprimées. N’implémentez pas ce correctif, sauf si votre ordinateur et tous les disques durs connectés sont protégés contre les coupures d’alimentation accidentelles grâce à une conception matérielle qui peut inclure des fonctionnalités telles que les blocs d’alimentation redondants avec batterie de secours. Contactez les fournisseurs de périphériques de votre ordinateur et stockage pour déterminer le degré de protection de votre matériel. N’implémentez pas ce correctif, sauf si vous comprenez et acceptez le niveau de risque qui peut-être être impliqués et êtes sûr que ce risque a été atténué par une protection de l’alimentation appropriée. Par ailleurs, sur un ordinateur en cluster, les différences dans les performances d’écriture sur le disque dur des opérations des disques partagés entre les nœuds peuvent être résolues en définissant la Protection de l’alimentation écrire option de cache sur chaque nœud.

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

Partie 1 : Installation mise à jour de Windows 2000

Une fonctionnalité prise en charge qui modifie le comportement par défaut du produit est disponible auprès de Microsoft. Toutefois, cette fonctionnalité est conçue pour modifier uniquement le comportement décrit dans cet article. Appliquer cette fonctionnalité uniquement aux systèmes ayant un besoin spécifique.

Si la fonctionnalité est disponible pour le téléchargement, il existe une section « Téléchargement de correctif logiciel disponible » au début de cet article de la Base de connaissances. Si cette section n’apparaît pas, contactez le Service clientèle de Microsoft et prise en charge pour obtenir la fonctionnalité.

Remarque Si des problèmes supplémentaires se produisent ou si des procédures de dépannage sont nécessaires, vous devrez peut-être formuler une demande de service distincte. Les coûts habituels du support technique s’appliqueront aux autres questions et problèmes qui ne relèvent pas de cette fonctionnalité spécifique. Pour une liste complète des numéros de téléphone service clientèle de Microsoft ou pour créer une demande de service distincte, visitez le site Web de Microsoft à l’adresse suivante :Remarque Le formulaire « Téléchargement de correctif logiciel disponible » affiche les langues pour lesquelles la fonctionnalité est disponible. Si vous ne voyez pas votre langue, il est parce que la fonctionnalité n’est pas disponible pour cette langue. La version anglaise de ce correctif dispose des attributs de fichier (ou version ultérieure) répertoriés dans le tableau suivant. Les dates et heures de ces fichiers sont répertoriés dans le temps universel coordonné (UTC). Lorsque vous affichez les informations de fichier, elles sont converties en heure locale. Pour trouver la différence entre l’UTC et l’heure locale, utilisez l’onglet Fuseau horaire dans l’outil Date et heure dans le Panneau de configuration.
   Date         Time   Version        Size    File name
-------------------------------------------------------
15-Jan-2003 19:42 5.0.2195.6655 34,832 Classpnp.sys
15-Jan-2003 19:43 5.0.2195.6655 30,768 Disk.sys

Remarque Les fichiers qui sont inclus dans ce correctif présentent des numéros de version de post-SP3, mais ils peuvent être utilisés sur les ordinateurs basés sur Windows 2000 SP2 et basée sur le Service Pack 3 de Windows. Le package de correctifs va installer sur des ordinateurs à la fois basé sur Windows 2000 SP2 et basé sur Windows 2000 SP3.

Partie 2 : Configurer l’Option de Cache en écriture « Protection de l’alimentation »

Après avoir installé la mise à jour de Windows 2000 et que vous redémarrez votre ordinateur afin que les pilotes mis à jour sont chargés, que vous devez également activer l’option de cache en écriture Protection de l’alimentation pour chaque disque d’écriture mise en cache activée et a le cache en écriture 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’implémente pas de toute modification du comportement de disque ou les performances.

Pour configurer le
Option de cache en écriture Protection de l’alimentation sur les disques sélectionnés, utilisez l’outil Dskcache.exe. Dskcache.exe est disponible séparément. Pour plus d’informations sur l’outil Dskcache.exe et comment activer la « protection de l’alimentation » option de cache en écriture, 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 les disques qui sont présents. Par défaut, l’option de cache en écriture Protection de l’alimentation est désactivée. Par conséquent, cette option est désactivée pour tous les disques qui peuvent être ajoutés après l’application de ce paramètre. Si des disques supplémentaires sont ajoutés, la Protection de l’alimentation écriture cache option activée pour ces disques pour le paramètre prenne effet.

Pour les ordinateurs qui exécutent Windows XP

En raison de différences de conception entre Windows 2000 et Windows XP, il n’est actuellement pas prévu pour libérer une prise en charge de la mise à jour pour ce comportement pour Windows XP.

État

Ce comportement est voulu par la conception.

Plus d'informations

De nombreux périphériques de disque fournissent des performances améliorées par l’utilisation d’un cache intégré, qui fournit la mise en cache de lecture anticipée pour les données qui sont lues à partir du disque et le cache en écriture différée (ou écritures différées ou écrit « paresseux ») pour les données qui sont écrites sur le disque. Dans certains cas, il est important que les données soient écrites immédiatement sur le disque physique et ne sont pas conservées dans le cache en écriture intégré du disque pour être écrites plus tard pendant un moment d’inactivité. Cela empêche la perte ou altération de ces données si le disque ou le contrôleur (où le cache en écriture est implémenté) brutalement privé d’alimentation, par exemple.

Il existe deux commandes sont généralement utilisées pour forcer les données mises en cache pour être écrites immédiatement sur le disque physique :
  • Une commande de vidage des mémoires tampon , qui est disponible pour les périphériques de disque SCSI et IDE/ATAPI, demande au disque d’écrire immédiatement les données toutes les mises en cache sur le disque. Pour les disques SCSI, ceci est implémenté à l’aide de la commande SYNCHRONIZE CACHE sur le disque. Pour les disques IDE/ATAPI, la commande FLUSH CACHE est envoyée sur le disque. Cette commande est généralement émise par un programme Windows appelant l’API FlushFileBuffers . Écriture dans le Registre est un exemple d’une opération qui entraîne l’API appelée FlushFileBuffers et la commande SYNCHRONIZE CACHE envoyé sur le disque.
  • Une commande Write Through , qui est uniquement disponible pour les périphériques SCSI, est implémentée par l’émission d’une commande d’écriture sur le disque avec le bit ForceUnitAccess (FUA) défini. Ce type de commande demande au périphérique d’écrire de paquet de données en cours sur le disque immédiatement, en contournant le cache en écriture intégré. Cela se produit généralement à la suite d’un programme Windows qui appelle l’API WriteFile pour écrire dans un fichier qu’il a ouvert en appelant l' CreateFile API avec l’indicateur FILE_FLAG_WRITE_THROUGH défini. Antivirus logiciel ouvre les fichiers avec l’indicateur FILE_FLAG_WRITE_THROUGH défini. Cette prise en charge pour le bit FUA est facultatif et seuls quelques périphériques SCSI et Fibre Channel (FC), des disques individuels (par opposition à baies RAID), mettre en œuvre cette fonctionnalité.
Par conception, 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 sont écrites sur le disque. Si ces données ne sont pas écrit sur le disque immédiatement par ces commandes et si la panne de courant soudainement, les données sont perdues, et le fichier qui est en cours d’écriture peut être endommagé.

Dans les versions Windows 2000 antérieures au Service Pack 3, ces commandes ne sont pas correctement émises vers les périphériques de disque lorsque attendu. Par exemple, la commande SYNCHRONIZE CACHE n’est pas émise sur un disque lorsqu’un programme appelle FlushFileBuffers, et le bit FUA n’est pas défini pour écrire les commandes 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, afin que ces commandes sont émises comme prévu et, par conséquent, fournissent la protection attendue contre la perte de données critiques.

Note
Microsoft SQL Server utilise de manière intensive FILE_FLAG_WRITE_THROUGH sur les données de la base de données locale, les fichiers journaux et les fichiers de sauvegarde. Données de la base de données locale peuvent inclure des données sur des disques SCSI ou SAN, mais pas les données sur des lecteurs NAS. Si la fonctionnalité de stockage protégé d’alimentation n’est pas activée sur le matériel qui protège le cache d’écriture continue, les performances de SQL Server peuvent être affectés pendant le processus de point de contrôle d’une grande base de données.

Lorsque l’option de Cache en écriture activée est configurée pour un périphérique de disque dans le Gestionnaire de périphériques, deux choses se produisent :
  • Une commande pour activer ou désactiver le cache en écriture est envoyée au périphérique de disque.
  • Une valeur de Registre est enregistrée dans le pilote de disque utilise pour déterminer ou non d’émettre des commandes de gestion du cache d’écriture (Flush, Write-Through) vers le disque.
Le correctif qui est décrit dans cet article fournit une option de configuration supplémentaire, qui est l’option de cache en écriture Protection de l’alimentation . Lorsque les options de Cache en écriture et de Protection de l’alimentation sont activées, le cache d’écriture est activé et reconnu comme tel par le pilote de disque, mais le pilote de disque n’émet pas les commandes de gestion du cache d’écriture (Flush, Write-Through) vers le disque. Cela permet d’éviter l’altération des performances qui découlerait en vidant les données dans le cache d’écriture vers le disque, mais présente un risque de perte ou d’altération des données du disque si l’alimentation est perdue tout est toujours les données dans le cache d’écriture du disque qui n’ont pas été écrites sur le disque.

Le tableau suivant résume les effets des options de Cache en écriture et Protection de l’alimentation :
Le cache d’écritureProtégée de l’alimentation
Effet
DésactivéN/ADisque ne met pas en cache les écritures.

Pilote n’émet pas les commandes Flush/Write-Through.
(Seul comportement possible pour les lecteurs qui n’ont pas le cache d’écriture activée dans le matériel.)
ActivéDésactivéDisque met en cache des écritures.

Pilote émet les commandes Flush/Write-Through.
(Comportement par défaut à SP3, et cette mise à jour appliquée, pour les lecteurs qui ont cache en écriture activée dans le matériel.)
ActivéActivéDisque met en cache des écritures.

Pilote n’émet pas les commandes Flush/Write-Through.
(Comportement résultant du bogue antérieur au Service Pack 3 pour les lecteurs où le cache d’écriture activée dans le matériel.)
Propriétés

ID d'article : 332023 - Dernière mise à jour : 27 janv. 2017 - Révision : 2

Commentaires