2014-06-28 8 views
5

Ich lese TLPI (Linux Programming Interface), und sie scheinen 1024 als Standard-Puffergröße für Dateioperationen zu verwenden. Ich frage mich, warum diese Größe gewählt wird. Gibt es eine "beste" Dateigröße?Wie werden die Puffergrößen ausgewählt?

Um zu erarbeiten und hoffentlich bekommen Sie weitere Erkenntnisse: In welchen Situationen würde die Verwendung von 512 oder 2048 Bytes etwas brechen? Ich nehme an, wenn 1024 sicher ist, 512 ist auch sicher, aber nur langsamer, weil Sie Daten mit doppelt so vielen Schritten verschieben müssen. Also, wenn mein Denken richtig ist, je größer die Puffergröße ist, desto schneller ist die Operation, aber dies erhöht auch das Fehlerpotenzial?

+0

1K ist die Menge an Daten, die Computer gerne werfen. z.B. IP-Protokoll –

+1

Ein Großteil des Kapitels 13 von TLPI wird damit verbracht, solche Dinge zu diskutieren. – Duck

Antwort

1

Jederzeit Linux-Code bezieht sich auf block size, es ist fast immer 1024 bytes. Linux verwendet 1024-Byte-Blöcke für den Puffer-Cache usw.

Natürlich implementieren Linux-Dateisysteme oft alternative Blockgrößen. Eine standardmäßige ext3-Dateisystemblockgröße beträgt üblicherweise 4096 Bytes.

6

Obwohl ich in der Regel philosophische Fragen wie deine abgelehnt und geschlossen gesehen habe, mag ich sie immer noch und die Diskussion, die sie ermutigen. (Ich habe versucht, alles in den Kommentar zu passen, aber es würde nicht ganz funktionieren.)

Die kurze Antwort ist, dass relativ kleine Puffer sicher sind, und sie sind in der Regel gewählt, um den kleinsten gemeinsamen Nenner der Struktur zu sein wird betrieben (wie Ihr Beispiel, 1.024, aufgrund der Tatsache, dass die meisten Dateisysteme Blöcke in einigen Vielfachen von einem Kilobyte, dh 1.024 Bytes zuweisen). Die längere Antwort ist, dass variable Puffergrößen (normalerweise größer als die sicheren Standardwerte) eine sehr tiefe Rolle bei der optimalen Leistung der Software spielen, da sie mit der Hardware und sogar der Art der Arbeitslast interagiert. Es gibt keine optimale Größe für alle Hardware- und Betriebssystemumgebungen. Die Optimierung der Puffergrößen ist eine günstige Möglichkeit, Programme auf Ihrem System besser zu nutzen. Als solches wird es auch von einigen unehrlichen Softwareentwicklern benutzt, um so zu tun, als wäre ihre Software besser. Betrachten Sie beispielsweise die Web-Server-Software. Sie könnten behaupten, dass Ihre Webserver-Software eine bessere Leistung hat, indem Sie alle Puffergrößen optimieren und dann mit einer Apache-Installation mit einer Standardkonfiguration vergleichen. Sie können die Software auch extern unterbinden, indem Sie die Kernel-Optimierung verwenden, die mit der Konfiguration einer Software übereinstimmt, aber eine andere beispielsweise dazu veranlasst, für jede Anforderung einen zusätzlichen Rahmen zu verwenden.

Das Tuning auf diese Weise ist ebenfalls gefährlich, da es die Durchführung von Denial-of-Service-Attacken wie "Slow Loris"/Ressourcenerschöpfung erleichtern kann. Also wieder kleiner, ist sicherer, obwohl nicht unbedingt "besser" abhängig von Ihrer Priorisierung von Sicherheit versus Leistung.

Verwandte Themen