web-dev-qa-db-fra.com

Comment la compression NTFS affecte-t-elle les performances?

J'ai entendu dire que la compression NTFS pouvait réduire les performances en raison d'une utilisation accrue du processeur, mais j'ai lu des rapports selon lesquels elle pourrait en fait augmenter les performances en raison d'une lecture réduite du disque. Comment la compression NTFS affecte-t-elle exactement les performances du système?

Remarques:

  • J'utilise un ordinateur portable avec un disque dur à 5 400 tr/min, et beaucoup de choses que je fais dessus sont liées aux entrées/sorties.
  • Le processeur est un processeur AMD Phenom II à quatre cœurs fonctionnant à 2,0 GHz.
  • Le système est défragmenté régulièrement à l’aide de UltraDefrag .
  • La charge de travail est mixte lecture-écriture, les lectures se produisant un peu plus souvent que les écritures.
  • Les fichiers à compresser incluent un sous-ensemble sélectionné de documents personnels (pas le dossier de départ complet) et de programmes, y compris plusieurs jeux (moins exigeants) et Visual Studio (qui est généralement lié à des entrées/sorties).
55
bwDraco

J'ai entendu dire que la compression NTFS pouvait réduire les performances en raison d'une utilisation accrue du processeur, mais j'ai lu des rapports selon lesquels elle pourrait en fait augmenter les performances en raison d'une lecture réduite du disque.

Correct. En supposant que votre processeur, utilisant un algorithme de compression, puisse compresser à C Mo/s et décompresser à D Mo/s, et que votre disque dur a une vitesse d'écriture W et une vitesse de lecture R. Tant que C> W, vous obtenez un gain de performances lorsque l'écriture, et tant que D> R, vous obtenez un gain de performance lors de la lecture. Ceci est une hypothèse drastique en écriture, puisque l’algorithme de Lempel-Ziv (tel qu’implémenté dans le logiciel) a un taux de compression non déterministe (même s’il peut être contraint avec une taille de dictionnaire limitée).

Comment la compression NTFS affecte-t-elle exactement les performances du système?

Eh bien, c’est exactement en s’appuyant sur les inégalités ci-dessus. Tant que votre processeur peut supporter un taux de compression/décompression supérieur à la vitesse d'écriture de votre disque dur, vous devez bénéficier d'un gain de vitesse. Toutefois, cela a un effet sur les fichiers volumineux, qui peuvent subir une fragmentation importante (due à l'algorithme), ou ne pas être compressés du tout .

Cela peut être dû au fait que l'algorithme de Lempel-Ziv ralentit à mesure que la compression progresse (car le dictionnaire continue de croître, nécessitant davantage de comparaisons à mesure que des bits entrent). La décompression correspond presque toujours au même taux, quelle que soit la taille du fichier, dans l'algorithme de Lempel-Ziv (le dictionnaire pouvant uniquement être adressé à l'aide d'un schéma base + décalage).

La compression affecte également la manière dont les fichiers sont disposés sur le disque . Par défaut, une seule "unité de compression" correspond à 16 fois la taille d'un cluster (la plupart des systèmes de fichiers NTFS de 4 ko nécessiteront donc des morceaux de 64 ko pour stocker les fichiers), sans dépasser 64 ko. Toutefois, cela peut affecter la fragmentation et les besoins en espace sur le disque.

En conclusion, la latence est une autre valeur intéressante de la discussion. Bien que le temps réel nécessaire pour compresser les données introduise effectivement une latence, lorsque la vitesse d'horloge de la CPU est en gigahertz (chaque cycle d'horloge est inférieur à 1 ns), la latence introduite est négligeable par rapport aux vitesses de recherche de disque dur ordre de millisecondes, ou millions de cycles d'horloge).


Pour savoir si vous ferez l'expérience d'un gain de vitesse, vous pouvez essayer quelques solutions. La première consiste à analyser votre système avec un algorithme de compression/décompression basé sur Lempel-Ziv. Si vous obtenez de bons résultats (c.-à-d. C> W et D> R), vous devriez alors essayer d'activer la compression sur votre disque.

À partir de là, vous voudrez peut-être faire plus de tests sur les performances réelles du disque dur. Une référence vraiment importante (dans votre cas) serait de voir à quelle vitesse vos jeux se chargent et à quelle vitesse vos projets Visual Studio se compilent.

TL, DR: La compression pourrait être viable pour un système de fichiers utilisant de nombreux petits fichiers nécessitant un débit élevé et une latence faible. Les fichiers volumineux ne sont (et ne devraient pas être) affectés en raison de problèmes de performances et de latence.

35
Breakthrough

Vous avez un disque assez lent, votre question a donc du mérite. La compression NTFS nécessite beaucoup de ressources processeur et est conçue pour la vitesse plutôt que pour l'efficacité de la compression.

Je m'attendrais à ce que vous voyiez une (très) petite amélioration pour les opérations de lecture. Cependant, lors de l'accès à un fichier résidant dans la mémoire cache du système, vous aurez un impact négatif sur les performances car il devra être décompressé à nouveau à chaque accès.

Vous verrez bien sûr que les opérations d'écriture seront plus lentes à cause de la compression supplémentaire.

La copie de fichiers sur ce même disque NTFS nécessite une décompression et une compression, de sorte que ce sont eux qui en souffriront le plus.

La compression NTFS peut également augmenter considérablement la fragmentation, mais cela ne pose pas de problème pour la plupart des ordinateurs "typiques" soumis à des charges de travail "typiques".

De nombreux types de fichiers, tels que les images JPEG ou les fichiers vidéo ou les fichiers .Zip, sont fondamentalement incompressibles. Par conséquent, leur utilisation sera plus lente et l’espace économisé.

Les fichiers plus petits qu'un cluster de disques (généralement 4K) ne sont pas compressés, car ils ne génèrent aucun gain. Cependant, une taille de cluster encore plus petite est parfois conseillée lors de la compression du volume entier.

La compression NTFS est recommandée pour les volumes ou fichiers relativement statiques. Il n'est jamais recommandé pour les fichiers système ou le dossier Utilisateurs.

Toutefois, la configuration matérielle variant d’un modèle d’ordinateur à l’autre, en fonction du disque, du bus, de RAM et du processeur, seuls les tests permettent de déterminer l’effet exact de la compression sur votre modèle d’ordinateur.

7
harrymc

Je l'ai expliqué ici dans l'entrée Wikpedia pour NTFS:


NTFS peut compresser des fichiers en utilisant l'algorithme LZNT1 (une variante du LZ77 [23]). Les fichiers sont compressés en morceaux de 16 grappes. Avec des clusters de 4 ko, les fichiers sont compressés en morceaux de 64 ko. Si la compression réduit les 64 Ko de données à 60 Ko ou moins, NTFS traite les pages inutiles de 4 Ko comme des clusters de fichiers fragmentés vides: elles ne sont pas écrites. Cela permet des temps d'accès aléatoires non déraisonnables. Cependant, les fichiers compressibles volumineux deviennent très fragmentés car chaque fragment de 64 Ko devient un fragment plus petit. [24] [25] Microsoft ne recommande pas la compression pour les fichiers de plus de 30 Mo en raison de l'impact négatif sur les performances.

La meilleure utilisation de la compression concerne les fichiers répétitifs, écrits rarement, généralement accédés de manière séquentielle et non eux-mêmes compressés. Les fichiers journaux sont un exemple idéal. La compression de fichiers de moins de 4 ko ou déjà compressés (tels que .Zip ou .jpg ou .avi) peut les rendre plus volumineux et plus lents. [Citation requise] Les utilisateurs doivent éviter de compresser les exécutables tels que .exe et .dll (ils peuvent être paginé en pages de 4 ko). La compression des fichiers système utilisés au démarrage, tels que les pilotes, NTLDR, winload.exe ou BOOTMGR, peut empêcher le système de démarrer correctement. [26]

Bien que l'accès en lecture-écriture aux fichiers compressés soit souvent transparent, mais pas toujours [27], Microsoft recommande d'éviter la compression sur les systèmes de serveur et/ou les partages réseau contenant des profils itinérants, car cela représente une charge considérable pour le processeur [28].

Les systèmes mono-utilisateur avec un espace disque limité peuvent bénéficier de la compression NTFS pour les petits fichiers, de 4 Ko à 64 Ko ou plus, en fonction de la compressibilité. Les fichiers de moins de 900 octets environ sont stockés avec l'entrée de répertoire dans la MFT. [29]

Le lien le plus lent sur un ordinateur n’est pas le processeur, mais la vitesse du disque dur. La compression NTFS permet donc de mieux utiliser l’espace de stockage limité et lent, en termes d’espace et (souvent) de vitesse. [30] (Cela suppose que les fragments de fichier compressés soient stockés consécutivement.)


Je recommande la compression uniquement pour les fichiers compressés à 64 Ko ou moins (1 pièce). Sinon, votre fichier sera composé de nombreuses fractions de 64 Ko ou moins.

MyDefrag fait un meilleur travail de défragmentation.

4
TomTrottier

Cela ralentira les opérations. Malheureusement, nous ne pouvons pas mesurer exactement dans quelle mesure cela affectera votre système. Lorsqu'un fichier compressé est ouvert, le processeur est nécessaire pour le décompresser afin que le système puisse l'utiliser. Lorsque vous avez terminé et que vous cliquez sur Enregistrer, il utilise davantage de puissance de traitement pour le compresser à nouveau. Cependant, vous seul pouvez mesurer la performance.

1
Canadian Luke