Sur un système moderne, l'utilisation de la compression de disque me donnera-t-elle de meilleures performances globales?

10

Il semble que les augmentations de CPU aient dépassé la vitesse du disque pendant un certain temps. En supposant un ordinateur de bureau ou un ordinateur portable avec un processeur Intel / AMD double cœur moderne et un disque SATA moyen unique, la compression sur la plupart des disques donnerait-elle de meilleures performances globales? Fondamentalement, la réduction de la bande passante du disque fait-elle plus que compenser l'augmentation de la charge du processeur? Je suis sûr que la vraie réponse est "cela dépend de ce que vous faites". En posant cette question, j'espère avoir quelqu'un qui a fait ce tuyau et donner quelques exemples ou pièges.

kbyrd
la source
définir les performances? Comme dans l'augmentation de la vitesse ou de l'espace? Vous ne remarquerez probablement pas d'augmentation de vitesse, mais vous trouverez certainement les octets de rechange utiles! :-p
Christopher Lightfoot

Réponses:

9

Oui, la compression du disque peut fournir de meilleures performances dans des circonstances particulières:

  • Votre application est liée au débit du disque: les processeurs modernes et les algorithmes de (dé) compression peuvent fonctionner à une bande passante beaucoup plus élevée que les disques modernes dans les longs transferts. Toute réduction de la quantité de données se déplaçant vers ou depuis des plateaux de disques est une victoire dans cette circonstance
  • Il faut moins de temps pour (dé) compresser les données qui vont sur des plateaux de disques que la différence de temps de transfert, et vous avez des cycles CPU à épargner

Il y a une raison pour laquelle ZFS et Btrfs, deux conceptions récentes en champ vert, incluent des dispositions pour la compression.

Dans l'espace HPC, lorsqu'une application effectue un point de contrôle de la mémoire vers le disque, les CPU ne font souvent rien d'utile. Cette fois-ci est essentiellement des frais généraux. Toute utilisation des CPU pour réduire ce temps est une victoire.

Phil Miller
la source
Les disques de streaming multimédia sont probablement le seul endroit où les avantages se produisent car la taille des morceaux est suffisamment grande. Les disques OS standard * prendront toujours un coup.
Ryaner
5
Le streaming multimédia n'est pas une application convaincante pour la compression au niveau du système de stockage. Les données doivent déjà être compressées dans un format spécifique à l'application bien meilleur.
Phil Miller le
5

La compression du disque ne vous donnera jamais de meilleures performances.

Cela peut vous donner presque aucune pénalité en raison des processeurs modernes et rapides, mais c'est une chose entièrement différente.

Vous supposez que le transfert de moins de données de / vers le disque peut améliorer les performances; mais les transferts de big data ne sont presque jamais un goulot d'étranglement d'E / S: les vrais goulots d'étranglement sont la recherche de temps et de latence. Les disques durs modernes sont vraiment rapides sur les transferts de données soutenus avec de gros fichiers, ce qui les ralentit, ce sont de petits transferts de partout sur le disque.

Quelques scénarios:

  • Fichiers multimédias. Ceux-ci sont généralement déjà compressés seuls (JPEG, MPEG, MP3), donc les compresser au niveau du système de fichiers ne va pas aider du tout; cela va au contraire aggraver les choses, car les ressources CPU sont déjà nécessaires pour les encoder / décoder.
  • Bases de données. Ceux-ci sont généralement lus à partir de / écrits dans de petites rafales aléatoires, donc leur compression n'aura pas seulement aucun avantage, mais dégradera également les performances, car le SGBD ne peut pas identifier correctement où se trouvent sur le disque les données physiques auxquelles il doit accéder. stockée.
  • Fichier de page. C'est généralement assez volumineux, mais le système d'exploitation doit traiter de très petits morceaux de données et doit le faire très précisément ("Lire 4K à l'adresse physique X"); la compression n'est généralement pas possible, mais même si elle l'était, ce serait une perte totale de temps et de ressources: elle fournirait une compression presque nulle, en raison de la nature des "données aléatoires complètes" de ce fichier.
Massimo
la source
1
Le transfert de moins de données depuis le disque ne présente donc aucun avantage?
kbyrd
Modifié pour répondre à cela :-)
Massimo
3
jamais un mot très étroit d'esprit. La bande passante brute du disque et via le bus PCI est souvent le goulot d'étranglement avec une partie du travail que je fais. La compression peut grandement améliorer les performances, surtout si vous avez déjà pris des mesures pour supprimer certains des autres goulots d'étranglement que vous mentionnez
JamesRyan
1
J'hésiterais également à dire "jamais". Il peut y avoir des scénarios où la bande passante du disque est le goulot d'étranglement. Mais vous avez probablement raison de dire que ce n'est pas le cas typique.
sleske
2
les
E / S
3

Il existe des situations spécifiques qui le font déjà au niveau de chaque application, comme la compression vidéo - un système qui ne pouvait pas lire assez rapidement des vidéos brutes de qualité HD à partir d'un dsk peut lire les informations compressées et les étendre en utilisant la mémoire et la puissance du processeur . Il n'y a aucune raison que cela ne puisse pas être le cas pour d'autres situations spécifiques, mais cela peut être mieux géré au niveau de l'application, de sorte que les méthodes de compression utilisées sont optimisées à leur fin.

Gardez à l'esprit que la surcharge de performances de la décompression vaut la peine si tout le débit augmente, donc l'idée ne doit pas être rejetée d'emblée - je ne pense pas que nous soyons encore prêts pour une compression de boost de performance à usage général mais c'est théoriquement possible pour échanger une ressource dont vous disposez en excès (CPU et mémoire) pour un boost ailleurs (total des données lues sur le disque dur)

DrStalker
la source
3

Vous avez répondu à votre propre question! cela dépend est en effet la réponse.

La meilleure généralisation que je puisse faire est:

Si vous avez une application de base de données dont la lecture sur disque est limitée , alors oui! les performances sont meilleures.

Je ne pense pas que ce soit le cas pour la plupart des activités que vous effectuerez sur un ordinateur de bureau / portable.

Dans mon domaine (SQL Server), je sais que les bases de données de rapports soumises à de fortes charges de lecture peuvent obtenir de meilleures performances si la compression est utilisée. Je sais que la même chose est vraie pour mysql.

Microsoft a un livre blanc sur leurs fonctionnalités de compression dans SQL Server 2008. Pas exactement une lecture légère sauf si vous êtes un DBA, mais voici un graphique qui prend en charge ma généralisation:

texte alternatif

Nick Kavadias
la source
0

Les vitesses du processeur ont toujours été plus rapides que les vitesses du disque. À mon humble avis, la compression va augmenter les frais généraux et donc diminuer les performances.

joeqwerty
la source
mais cela dépend de ce que vous faites :-)
Josh
Comment? Une surcharge supplémentaire est une surcharge accrue. Vous ne pouvez pas acheter d'argent en dépensant de l'argent (sauf s'il s'agit de fausse monnaie, mais c'est une autre histoire).
Mark Henderson le
La fonction de compression et de décompression des fichiers, qu'ils soient plus petits ou non en raison de la compression, va introduire une surcharge de performances. Lorsque le fichier est lu du disque dans la mémoire, il doit être décompressé. Lorsqu'il est écrit de la mémoire sur le disque, il doit être compressé.
joeqwerty le
3
mais si votre processeur est assis à ne rien faire et que la bande passante de votre disque est le goulot d'étranglement, votre processeur finira par faire plus de travail mais les performances globales augmenteront. Cela dépend vraiment du type de données que vous récupérez et de ce que vous en faites.
JamesRyan
0

Je lisais quelque chose de similaire hier à propos d'OSX et c'est la compression du système de fichiers - Fondamentalement, la réponse tourne autour de ce que vous voulez compresser - dans cet exemple, il parle des données "FAT"; structures de fichiers, propriétés, métadonnées, etc. qui, lorsqu'ils sont stockés ensemble, peuvent être compressés pour économiser de l'espace et être lus dans le processeur plus rapidement que de rechercher la tête partout pour trouver les données de chaque fichier ...

Quoi qu'il en soit, vaut la peine d'être lu si vous pensez à de telles choses :-p

Mais la compression ne consiste pas seulement à économiser de l'espace disque. C'est également un exemple classique d'échange de cycles CPU pour une latence d'E / S et une bande passante réduites. Au cours des dernières décennies, les performances du processeur se sont améliorées (et les ressources informatiques sont plus abondantes - plus à ce sujet plus tard) à un rythme beaucoup plus rapide que les performances du disque ont augmenté. Les temps de recherche de disque dur modernes et les retards de rotation sont toujours mesurés en millisecondes. En une milliseconde, un processeur à 2 GHz passe par deux millions de cycles. Et puis, bien sûr, il y a encore le temps de transfert de données réel à considérer.

Certes, plusieurs niveaux de mise en cache dans le système d'exploitation et le matériel fonctionnent puissamment pour masquer ces retards. Mais ces bits doivent sortir du disque à un moment donné pour remplir ces caches. La compression signifie que moins de bits doivent être transférés. Étant donné la surabondance presque comique des ressources du processeur sur un Mac multicœur moderne dans des conditions normales d'utilisation, le temps total nécessaire pour transférer une charge utile compressée à partir du disque et utiliser le processeur pour décompresser son contenu en mémoire sera généralement bien inférieur au temps il faudrait pour transférer les données sous forme non compressée.

Cela explique les avantages potentiels en termes de performances du transfert de moins de données, mais l'utilisation d'attributs étendus pour stocker le contenu des fichiers peut également accélérer les choses. Tout cela a à voir avec la localisation des données.

S'il y a une chose qui ralentit un disque dur plus que de transférer une grande quantité de données, c'est de déplacer ses têtes d'une partie du disque à une autre. Chaque mouvement signifie que la tête doit commencer à bouger, puis s'arrêter, puis s'assurer qu'elle est correctement positionnée sur l'emplacement souhaité, puis attendre que le disque en rotation place les bits souhaités en dessous. Ce sont toutes des parties réelles, physiques et mobiles, et il est étonnant qu'elles fassent leur danse aussi rapidement et efficacement qu'elles le font, mais la physique a ses limites. Ces mouvements sont les véritables tueurs de performances pour le stockage en rotation comme les disques durs.

Le format de volume HFS + stocke toutes ses informations sur les fichiers (métadonnées) dans deux emplacements principaux sur le disque: le fichier de catalogue, qui stocke les dates, les autorisations, la propriété et bien d'autres choses, et le fichier d'attributs, qui stocke les «fourches nommées . "

Les attributs étendus dans HFS + sont implémentés en tant que fourches nommées dans le fichier d'attributs. Mais contrairement aux fourchettes de ressources, qui peuvent être très volumineuses (jusqu'à la taille de fichier maximale prise en charge par le système de fichiers), les attributs étendus dans HFS + sont stockés "en ligne" dans le fichier d'attributs. En pratique, cela signifie une limite d'environ 128 octets par attribut. Mais cela signifie également que la tête de disque n'a pas besoin de se déplacer vers une autre partie du disque pour obtenir les données réelles.

Comme vous pouvez l'imaginer, les blocs de disques qui composent les fichiers de catalogue et d'attributs sont fréquemment consultés, et donc plus susceptibles que la plupart d'être dans un cache quelque part. Tout cela conspire à faire du stockage complet d'un fichier, y compris ses métadonnées dans ses données, dans les fichiers de catalogue et d'attributs structurés en arborescence B un gain de performance global. Même une charge utile de huit octets qui monte à 25 octets n'est pas un problème, tant qu'elle est toujours inférieure à la taille du bloc d'allocation pour le stockage de données normal, et tant qu'elle tient toutes dans un nœud d'arbre B dans le fichier d'attributs qui l'OS doit quand même lire dans son intégralité.

Il existe d'autres contributions importantes à la réduction de l'encombrement du disque de Snow Leopard (par exemple, la suppression des localisations inutiles et des fichiers "designable.nib"), mais la compression HFS + est de loin la plus intéressante sur le plan technique.

De: http://arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars/3

Christopher Lightfoot
la source
J'y ai déjà pensé, mais cet article précis m'a incité à poser cette question.
kbyrd
lol. Intéressant :-p
Christopher Lightfoot
0

La compression Microsoft Disk est laide OLD. Il est difficilement comparable dans les rapports avec la méthode ARJ des années 80. Mais, même la compression de Microsoft PEUT fournir de meilleures performances sur des disques durs très lents (portables). Surtout s'il y a suffisamment de RAM pour la mise en cache en écriture et pour éviter des écritures excessives.

Le processus d'écriture est un point faible de toute méthode de compression activée par l'accès aléatoire.

Donc, si vous voulez un lecteur compressé, vous feriez mieux de passer à une sorte de Linux.

La compression de disque est également très adaptée aux lecteurs RAM, pas besoin de vous dire pourquoi.

Vigoureux
la source
1
Pourriez-vous ajouter des données de support, peut-être une comparaison des performances entre les solutions basées sur Windows et Linux?
psarossy
Oui, si vous allez heurter un fil de 3,5 ans, vous feriez mieux d'apporter de nouveaux faits durs.
MDMarra
-1

Sans aucun doute. La compression et la décompression impliquent plus que le disque et le CPU; en particulier, il y aura beaucoup de transfert de données vers et depuis la mémoire (en plus de la surcharge de transfert standard sans compression) qui sera vraiment néfaste en termes de défauts de page.

Maximus Minimus
la source
-1

En bref, non, vous ne gagnerez probablement pas en performances.

Bien que la compression améliore les performances de votre stockage, elle dégrade considérablement la vitesse de votre processeur. Cela dépend probablement du type de fichiers que vous allez décompresser. Si vous ne travaillez qu'avec Word, Excel et d'autres types de fichiers de base, allez-y et compressez-les. Si les fichiers individuels sont plus volumineux, vous allez sacrifier plus de temps.

tempête
la source