Was ist der Grund für die Option, eine Leistung von 1000 anstelle von 1024 in df zu verwenden?

7

Ich bin neugierig , df -Hund df -hdann man dfsagt mir:

   -h, --human-readable
          print sizes in human readable format (e.g., 1K 234M 2G)

   -H, --si
          likewise, but use powers of 1000 not 1024

Was ist der Grund für den Einsatz von Potenzen von 1000?

Vielleicht eine Nebenfrage (oder sogar eine verwandte):

root@host:~# df
Filesystem     1K-blocks      Used Available Use% Mounted on

Ist KBlock 1024 oder 1000?

CppLearner
quelle

Antworten:

9

Ich spekuliere, dass dies darauf zurückzuführen ist, dass Speicherhersteller die SI-Dezimalpräfixe nahezu universell verwenden.

Weiter unten in der Manpage (unter der Annahme von GNU df):

   SIZE  is  an  integer and optional unit (example: 10M is 10*1024*1024).
   Units are K, M, G, T, P, E, Z, Y (powers of 1024) or KB, MB, ...  (pow‐
   ers of 1000).

1K ist also 1024.

In einem anderen GNU-Tool bietet dddiese Fehlerdiskussion einige Einblicke:

Ich erinnere mich, dass ich dies in Betracht gezogen habe, als ich GNU dd 2004 diese Art von Diagnose hinzufügte und mit Abkürzungen mit einer Potenz von 1000 ging, da sekundäre Speichergeräte normalerweise auf diese Weise gemessen werden. Aus diesem Grund erwarte ich, dass viele Benutzer hier Potenzen von 1000 bevorzugen. Dies gilt insbesondere für Übertragungsraten: "GiB / s" sind in der realen Prosa selten zu sehen.

Das Commit , zu dem diese Funktion df1997 hinzugefügt wurde, sagt nur was und nicht warum.

muru
quelle
wow du rockst! Sie haben sogar das Commit gefunden. Darf ich fragen wie? Danke: D
CppLearner
4
Der übliche Weg, ein Commit zu finden, das etwas verursacht hat, ist die Halbierung . Ich habe 1997 angefangen, bin 2005 gegangen, dann 2001, dann 1999, dann 1998 und so weiter.
Muru
4

Wenn Sie 15 bis 20 Jahre zurückgehen, war die Potenz-von-2-Mathematik sinnvoll, da sie mit den Speicherblöcken übereinstimmte, wie in anderen Antworten erwähnt. Dann stoßen wir auf den Trägheitsfaktor, bei dem "wir haben es immer so gemacht" einsetzt. Und der kleine Unterschied zwischen ^ 2 und ^ 10 summierte sich nie zu viel. Softwareanbieter verwendeten aus Gründen der Bequemlichkeit (und Trägheit) ^ 2, Laufwerkshersteller ^ 10, weil sie eine größere Anzahl auf der Box produzierten.

Als die Laufwerke Kapazitäten von Hunderten von Gigabyte und dann von mehreren Terabyte erreichten, wurde der Unterschied ziemlich groß und somit für den Durchschnittsverbraucher spürbar. 30 + Gb Differenz konnten nicht als "Betriebssystem-Overhead" ausgegeben werden. Durch die wenigen Codezeilen in der Programmierung wurden viele Anrufe beim Support Desk vermieden. Ja, df wird vom durchschnittlichen Mac-Benutzer nicht täglich verwendet, aber es (oder seine Funktionen / Bibliotheken / Codebasis) wird von einem übergeordneten UI-Programm verwendet.

paul
quelle
Eine weitere gute Antwort. Danke für die Erklärung.
CppLearner
3

Wenn ein bestimmtes Speichermedium Zuordnungseinheiten von z. B. 1024 Byte verwendet, bedeutet das Wissen, dass eine Datei 260 KB auf der Festplatte benötigt, 260 Speichereinheiten. Wenn stattdessen der Speicherplatz als 260 KB gemeldet würde, wäre unklar, ob dies 253 Speichereinheiten (259.072, auf 260 aufgerundet) oder 254 Speichereinheiten (260.096 Byte) bedeutet. Die Vermeidung einer solchen Mehrdeutigkeit war ein gutes Argument für die Verwendung von Zweierpotenzeinheiten.

Da Festplattenhersteller jedoch anfingen, dezimale statt binäre Präfixe zu verwenden, und die Größe einzelner Speichereinheiten einen zunehmend trivialen Teil der Kapazität eines Laufwerks ausmacht, haben binäre Präfixe nicht mehr den gleichen Vorteil wie früher.

Superkatze
quelle