Kann ich mit der Festplattenkomprimierung auf einem modernen System eine bessere Gesamtleistung erzielen?

10

Es scheint, dass CPU-Erhöhungen die Festplattengeschwindigkeit für eine Weile übertroffen haben. Angenommen, ein Desktop oder Laptop mit einer modernen Intel / AMD-Dual-Core-CPU und einer einzigen durchschnittlichen SATA-Festplatte würde eine Komprimierung auf fast allen Festplatten zu einer besseren Gesamtleistung führen? Grundsätzlich gleicht die reduzierte Festplattenbandbreite die erhöhte CPU-Auslastung mehr als aus? Ich bin sicher, die wirkliche Antwort lautet "es hängt davon ab, was Sie tun". Wenn ich diese Frage stelle, hoffe ich, jemanden zu haben, der diese Pfeife gemacht hat, und einige Beispiele oder Fallstricke zu nennen.

kbyrd
quelle
Leistung definieren? Wie bei Geschwindigkeitssteigerung oder Raumerhöhung? Sie würden wahrscheinlich keine Geschwindigkeitssteigerung bemerken, würden aber die Ersatzbytes definitiv nützlich finden! :-p
Christopher Lightfoot

Antworten:

9

Ja, die Festplattenkomprimierung kann unter bestimmten Umständen eine bessere Leistung bieten:

  • Ihre Anwendung ist an den Festplattendurchsatz gebunden: Moderne CPUs und (De-) Komprimierungsalgorithmen können bei langen Übertragungen mit einer viel höheren Bandbreite als moderne Festplatten ausgeführt werden. Eine Reduzierung der Datenmenge, die auf oder von Plattenplatten verschoben wird, ist unter diesen Umständen ein Gewinn
  • Das (De-) Komprimieren von Daten, die auf Plattenplatten übertragen werden, dauert weniger lange als der Unterschied in den Übertragungszeiten, und Sie haben CPU-Zyklen zu sparen

Es gibt einen Grund, warum sowohl ZFS als auch Btrfs, beide neuere Green-Field-Designs, Bestimmungen für die Komprimierung enthalten.

Wenn eine Anwendung im HPC-Bereich vom Speicher auf die Festplatte prüft, tun die CPUs häufig überhaupt nichts Nützliches. Diese Zeit ist im Wesentlichen reiner Overhead. Jede Verwendung der CPUs zur Verkürzung dieser Zeit ist ein Gewinn.

Phil Miller
quelle
Media-Streaming-Disks sind wahrscheinlich der einzige Ort, an dem Vorteile auftreten, da die Blockgröße groß genug ist. Standard-Betriebssystemdisketten * werden immer getroffen.
Ryaner
5
Media Streaming ist keine überzeugende Anwendung für die Komprimierung auf Speichersystemebene. Die Daten sollten bereits in einem viel besseren anwendungsspezifischen Format komprimiert sein.
Phil Miller
5

Durch die Festplattenkomprimierung erhalten Sie niemals eine bessere Leistung.

Es kann Ihnen aufgrund schneller moderner CPUs fast keine Strafe geben , aber das ist eine ganz andere Sache.

Sie gehen davon aus, dass weniger Daten von / auf die Festplatte übertragen werden müssen, um die Leistung zu verbessern. Big-Data-Übertragungen sind jedoch fast nie ein E / A-Engpass: Die eigentlichen Engpässe sind Suchzeit und Latenz. Moderne Festplatten sind bei dauerhaften Datenübertragungen mit großen Dateien sehr schnell. Was sie verlangsamt, sind kleine Übertragungen von überall auf der Festplatte.

Einige Szenarien:

  • Media-Dateien. Diese sind normalerweise bereits selbst komprimiert (JPEG, MPEG, MP3), sodass das Komprimieren auf Dateisystemebene überhaupt nicht hilft. Es wird stattdessen die Dinge verschlechtern, da bereits CPU-Ressourcen benötigt werden, um sie zu codieren / decodieren.
  • Datenbanken. Diese werden normalerweise in kleinen zufälligen Bursts gelesen / beschrieben, sodass das Komprimieren nicht nur keinen Vorteil hat, sondern auch die Leistung beeinträchtigt, da das DBMS nicht richtig erkennen kann, wo sich auf der Festplatte die physischen Daten befinden, auf die zugegriffen werden muss gelagert.
  • Auslagerungsdatei. Dies ist normalerweise ziemlich groß, aber das Betriebssystem muss sehr kleine Datenblöcke darauf adressieren und dies sehr genau tun ("4K an physischer Adresse X lesen"); Eine Komprimierung ist normalerweise nicht möglich, aber selbst wenn dies der Fall wäre, wäre dies eine völlige Verschwendung von Zeit und Ressourcen: Aufgrund der "vollständigen Zufallsdaten" -Natur dieser Datei würde eine Komprimierung nahezu Null erzielt.
Massimo
quelle
1
Das Übertragen von weniger Daten von der Festplatte bietet also keinen Vorteil?
2.
Bearbeitet, um das zu beantworten :-)
Massimo
3
Niemals ist ein sehr engstirniges Wort. Rohe Bandbreite von der Festplatte und über den PCI-Bus ist oft der Engpass bei einigen meiner Arbeiten. Komprimierung kann die Leistung
erheblich verbessern
1
Ich würde auch zögern, "nie" zu sagen. Es kann durchaus Szenarien geben, in denen die Festplattenbandbreite der Engpass ist. Aber Sie haben wahrscheinlich Recht, dass dies nicht der typische Fall ist.
Sleske
2
Disk I / O ist fast immer ein Engpass in Datenbanken
Nick Kavadias
3

Es gibt bestimmte Situationen, in denen dies bereits auf Anwendungsebene geschieht, z. B. die Videokomprimierung. Ein System, das Rohvideos in HD-Qualität nicht schnell genug von einem DSK lesen konnte, kann stattdessen komprimierte Informationen lesen und mithilfe von Speicher und CPU-Leistung erweitern . Es gibt keinen Grund, warum dies nicht auch für andere, spezifische Situationen der Fall sein könnte, aber dies kann am besten auf Anwendungsebene gehandhabt werden, damit die verwendeten Komprimierungsmethoden für ihren Zweck optimiert werden.

Denken Sie daran, dass sich der Leistungsaufwand für die Dekomprimierung lohnt, wenn sich der gesamte Durchsatz erhöht, sodass die Idee nicht sofort verworfen werden sollte. Ich denke, wir sind noch nicht bereit für eine allgemeine Leistungssteigerung, aber die Komprimierung ist theoretisch möglich um eine Ressource, über die Sie verfügen (CPU & Speicher), gegen einen Boost an anderer Stelle einzutauschen (Gesamtdaten, die von der Festplatte gelesen wurden)

DrStalker
quelle
3

Sie haben Ihre eigene Frage beantwortet! es kommt darauf an ist ja die antwort.

Die beste Verallgemeinerung, die ich machen kann, ist:

Wenn Sie eine Datenbankanwendung haben, deren Lesezugriff eingeschränkt ist , dann ja! Leistung ist besser.

Ich glaube nicht, dass dies bei den meisten Aktivitäten auf einem Desktop / Laptop der Fall ist.

In meiner Domäne (SQL Server) weiß ich, dass Berichtsdatenbanken unter hoher Leselast eine bessere Leistung erzielen können, wenn die Komprimierung verwendet wird. Ich weiß, dass dies auch für MySQL gilt.

Microsoft hat ein Whitepaper zu den Komprimierungsfunktionen in SQL Server 2008 veröffentlicht. Nur wenn Sie ein DBA sind, ist dies eine gute Lektüre. Hier ist jedoch ein Diagramm, das meine Verallgemeinerung unterstützt:

Alt-Text

Nick Kavadias
quelle
0

Die CPU-Geschwindigkeit war immer höher als die Festplattengeschwindigkeit. IMHO wird die Komprimierung den Overhead erhöhen und dadurch die Leistung verringern.

Joeqwerty
quelle
aber es hängt davon ab, was du tust :-)
Josh
Wie? Ein erhöhter Overhead ist ein erhöhter Overhead. Sie können kein Geld kaufen, indem Sie Geld ausgeben (es sei denn, es ist Falschgeld, aber das ist eine andere Geschichte).
Mark Henderson
Die Funktion zum Komprimieren und Dekomprimieren von Dateien, unabhängig davon, ob sie aufgrund der Komprimierung kleiner sind oder nicht, führt zu einem Leistungsaufwand. Wenn die Datei von der Festplatte in den Speicher gelesen wird, muss sie dekomprimiert werden. Wenn es vom Speicher auf die Festplatte geschrieben wird, muss es komprimiert werden.
Joeqwerty
3
Wenn Ihre CPU jedoch nichts tut und Ihre Festplattenbandbreite der Engpass ist, wird Ihre CPU am Ende mehr Arbeit leisten, aber die Gesamtleistung wird steigen. Es hängt wirklich davon ab, welche Art von Daten Sie abrufen und was Sie damit machen.
James Ryan
0

Ich habe gestern etwas Ähnliches über OSX und die Komprimierung des Dateisystems gelesen. Grundsätzlich dreht sich die Antwort um das, was Sie komprimieren möchten. In diesem Beispiel spricht er über die "FAT" -Daten. Dateistrukturen, Eigenschaften, Metadaten usw., die zusammen gespeichert werden können, um Platz zu sparen und schneller in die CPU eingelesen zu werden, als überall nach dem Kopf zu suchen, um die Daten für jede Datei zu finden ...

Auf jeden Fall eine Lektüre wert, wenn Sie über solche Dinge nachdenken :-p

Bei der Komprimierung geht es jedoch nicht nur darum, Speicherplatz zu sparen. Es ist auch ein klassisches Beispiel für den Handel mit CPU-Zyklen gegen verringerte E / A-Latenz und Bandbreite. In den letzten Jahrzehnten hat sich die CPU-Leistung viel schneller verbessert (und die Rechenressourcen sind umfangreicher - dazu später mehr) als die Festplattenleistung. Moderne Festplatten-Suchzeiten und Rotationsverzögerungen werden immer noch in Millisekunden gemessen. In einer Millisekunde durchläuft eine 2-GHz-CPU zwei Millionen Zyklen. Und dann ist natürlich noch die tatsächliche Datenübertragungszeit zu berücksichtigen.

Zugegeben, mehrere Ebenen des Caching im gesamten Betriebssystem und auf der Hardware arbeiten stark daran, diese Verzögerungen zu verbergen. Aber diese Bits müssen irgendwann von der Festplatte kommen, um diese Caches zu füllen. Komprimierung bedeutet, dass weniger Bits übertragen werden müssen. Angesichts der fast komischen Überlastung der CPU-Ressourcen auf einem modernen Multi-Core-Mac bei normaler Nutzung ist die Gesamtzeit, die erforderlich ist, um eine komprimierte Nutzlast von der Festplatte zu übertragen und die CPU zum Dekomprimieren ihres Inhalts in den Speicher zu verwenden, in der Regel weitaus kürzer als die Zeit Es würde dauern, die Daten in unkomprimierter Form zu übertragen.

Dies erklärt die potenziellen Leistungsvorteile der Übertragung weniger Daten, aber die Verwendung erweiterter Attribute zum Speichern von Dateiinhalten kann die Dinge auch schneller machen. Alles hat mit der Datenlokalität zu tun.

Wenn es eine Sache gibt, die eine Festplatte mehr verlangsamt als das Übertragen einer großen Datenmenge, bewegt sie ihre Köpfe von einem Teil der Festplatte zu einem anderen. Jede Bewegung bedeutet, dass der Kopf Zeit hat, sich zu bewegen, dann anzuhalten, sicherzustellen, dass er korrekt über der gewünschten Stelle positioniert ist, und dann darauf wartet, dass die sich drehende Scheibe die gewünschten Teile darunter legt. Dies sind alles reale, physische, bewegliche Teile, und es ist erstaunlich, dass sie genauso schnell und effizient tanzen wie sie, aber die Physik hat ihre Grenzen. Diese Bewegungen sind die wirklichen Leistungskiller für die Rotationsspeicherung wie Festplatten.

Das HFS + -Volume-Format speichert alle Informationen zu Dateien - Metadaten - an zwei primären Speicherorten auf der Festplatte: in der Katalogdatei, in der Dateidaten, Berechtigungen, Besitzverhältnisse und eine Vielzahl anderer Dinge gespeichert sind, und in der Attributdatei, in der "benannte Gabeln" gespeichert sind . "

Erweiterte Attribute in HFS + werden als benannte Gabeln in der Attributdatei implementiert. Im Gegensatz zu Ressourcengabeln, die sehr groß sein können (bis zu der vom Dateisystem unterstützten maximalen Dateigröße), werden erweiterte Attribute in HFS + "inline" in der Attributdatei gespeichert. In der Praxis bedeutet dies eine Grenze von ungefähr 128 Bytes pro Attribut. Dies bedeutet jedoch auch, dass der Plattenkopf keine Reise zu einem anderen Teil der Platte unternehmen muss, um die tatsächlichen Daten abzurufen.

Wie Sie sich vorstellen können, wird häufig auf die Festplattenblöcke zugegriffen, aus denen die Katalog- und Attributdateien bestehen, und daher befindet sie sich mit größerer Wahrscheinlichkeit als die meisten anderen irgendwo in einem Cache. All dies führt dazu, dass die vollständige Speicherung einer Datei, einschließlich ihrer Metadaten in ihren Daten, in den B-Tree-strukturierten Katalog- und Attributdateien zu einem allgemeinen Leistungsgewinn führt. Selbst eine 8-Byte-Nutzlast, die auf 25 Byte steigt, ist kein Problem, solange sie immer noch kleiner als die Zuordnungsblockgröße für die normale Datenspeicherung ist und alles in einen B-Baumknoten in der Attributdatei passt Das Betriebssystem muss ohnehin vollständig lesen.

Es gibt andere wichtige Beiträge zur Reduzierung des Speicherbedarfs von Snow Leopard (z. B. das Entfernen unnötiger Lokalisierungen und "designable.nib" -Dateien), aber die HFS + -Komprimierung ist bei weitem die technisch interessanteste.

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

Christopher Lightfoot
quelle
Ich habe schon früher darüber nachgedacht, aber genau dieser Artikel hat mich dazu veranlasst, diese Frage zu stellen.
4.
lol. Interessant :-p
Christopher Lightfoot
0

Die Microsoft Disk-Komprimierung ist hässlich ALT. In Verhältnissen mit der ARJ-Methode aus den 80er Jahren ist es kaum vergleichbar. Aber selbst die Komprimierung von Microsoft KANN eine bessere Leistung auf sehr langsamen (Laptop-) Festplatten bieten. Vor allem, wenn genügend RAM für das Zwischenspeichern von Schreibvorgängen und das Verhindern übermäßiger Schreibvorgänge vorhanden ist.

Der Schreibprozess ist eine Schwachstelle jeder Komprimierungsmethode mit aktiviertem Direktzugriff.

Wenn Sie also ein komprimiertes Laufwerk möchten, sollten Sie besser auf eine Art Linux umsteigen.

Die Festplattenkomprimierung eignet sich auch sehr gut für RAM-Laufwerke. Sie müssen nicht angeben, warum.

Gesund
quelle
1
Könnten Sie einige unterstützende Daten hinzufügen, möglicherweise einen Leistungsvergleich zwischen Windows- und Linux-basierten Lösungen?
Psarossy
Ja, wenn Sie einen 3,5 Jahre alten Thread anstoßen, bringen Sie besser einige neue, harte Fakten mit.
MDMarra
-1

Zweifellos. Die Komprimierung und Dekomprimierung umfasst mehr als nur die Festplatte und die CPU. Insbesondere wird es eine Menge Datenübertragungen zum und vom Speicher geben (zusätzlich zum Standardübertragungsaufwand ohne Komprimierung), was in Bezug auf Seitenfehler wirklich schaden wird.

Maximus Minimus
quelle
-1

Kurz gesagt, nein, Sie werden wahrscheinlich nicht an Leistung gewinnen.

Durch die Komprimierung wird zwar die Leistung Ihres Speichers verbessert, die Prozessorgeschwindigkeit wird jedoch erheblich beeinträchtigt. Es kommt wahrscheinlich darauf an, welche Art von Dateien Sie dekomprimieren werden. Wenn Sie sich nur mit Word-, Excel- und anderen grundlegenden Dateitypen beschäftigen, komprimieren Sie diese. Wenn die einzelnen Dateien umfangreicher sind, werden Sie mehr Zeit verlieren.

Sturm
quelle