Unterschied zwischen Lese- und Schreibsuchzeit

4

Gibt es einen Unterschied zwischen der Suchzeit für Lese- und Schreibanforderungen?

Ich habe versucht, die Suchzeit zu testen, indem ich gemessen habe, wie lange es dauert, bis zwei Anforderungen vorliegen, eine am Anfang und eine am Ende der Festplatte (daher sollten sie sich in den verschiedenen Zylindern befinden). Beim Schreiben dauert es im Vergleich zum Lesen viel länger, bis die Abfolge der Anforderungen abgeschlossen ist. Liegt es daran, dass die Suchzeit für das Schreiben länger ist? Oder liegt es an einem anderen Faktor, zB der Übertragungszeit?

Hier füge ich eine Latenz beim Schreiben pro Lesen hinzu, um Daten zu sortieren. Wie zu sehen ist, beträgt die Schreibverzögerung bei einer kleinen Anforderungsgröße (die Übertragungszeit sollte klein sein und die Zeit für die Festplattensuche wird sich stärker auf die io-Zeit auswirken) fast das 300-fache der Leselatenz.

Schreiben per Lesen zum Größenvergleich

Vielen Dank

Algorithmusman
quelle
Dies impliziert einen Low-Level-Test. Welches Tool benutzt du? Wenn Sie nicht in einen zusammenhängenden Bereich schreiben, kann das Schreiben möglicherweise länger dauern. Das könnte mehrere Suchvorgänge erfordern. Sie müssen also sicherstellen, dass Ihre Tests keine Grenzüberschreitungen erfordern und dass keine Auffüllung erforderlich ist. Mit einem Schreibvorgang (Metadaten, ACL usw.) kann auch ein Buchhaltungsaufwand verbunden sein.
Yorik
1
Ich benutze fio. Ja, das ist in der Tat ein Teil der Frage, warum das Schreiben in einer nicht zusammenhängenden Region länger dauern könnte. Erfordert das Lesen nicht mehrere Suchvorgänge oder die anderen oben genannten Faktoren?
Algorithman
1) es liegt wirklich über meiner Gehaltsstufe (sozusagen); 2) Ich weiß, dass es von HD zu HD und von FS zu FS sehr unterschiedlich sein wird. Ich weiß, dass das Aktivieren von Zugriffssteuerungslisten die E / A-Zeit (Mikrosekunden; Lesen und Schreiben) um Größenordnungen verlängern kann. Ich gehe davon aus, dass mit nichts zu zitieren, dass Datei-Metadaten ("Buchhaltung") für einen Lesevorgang vollständig vermieden werden könnten.
Yorik,
Gute Frage. Ich komme zu spät zur Party, aber könntest du irgendwelche spezifischen Nummern nennen, könntest du auch das Diskettenmodell bereitstellen? Ist es ein Desktop-Setup oder ein spezialisierter Speicher?
Dmitri
@DmitriChubarov danke für dein Interesse, ich habe meinem Beitrag neue numerische Daten hinzugefügt. Ich verwende eine Remote-Festplatte, die derzeit offline ist, sodass ich sie nicht überprüfen konnte. Ich bin jedoch der Meinung, dass es sich um eine normale Desktop-Festplattenkonfiguration handelt.
Algorithman

Antworten:

1

Die Frage ist etwas weit und unklar. Ich kenne dieses von Ihnen erwähnte „fio“ -Tool nicht und ein kurzer Blick auf die Webseite ergab keine Details zur Funktionsweise (dh was ist es?).

  • Wie duDE bereits sagte, sollte die Suchzeit - die Zeit, die erforderlich ist, um den / die E / A-Kopf (e) von dem Zylinder, in dem sie sich befinden, zu dem Zylinder zu bewegen, in dem Sie eine E / A-Operation ausführen möchten - unabhängig von der Operation sein dass Sie am Zielzylinder tun wollen. Ich glaube, dass es üblich ist, dass ein Plattentreiber zwei separate Befehle ausgibt - suchen und dann lesen oder suchen und dann schreiben -, sodass die Platte nicht einmal weiß, ob es sich um eine Lese- oder eine Schreibsuche handelt .

Aber wie ich in meinem ersten Absatz sagte, weiß ich nicht, was „fio“ misst. Ich weiß nicht, wie ein Programm die tatsächliche Suchzeit ohne Kernel-Tests messen kann. Möglicherweise wird die Zeit für eine E / A-Operation auf API-Ebene gemessen.

  • Sogar auf Hardwareebene kann auf eine Schreiboperation automatisch ein Lesevorgang derselben Daten folgen, um die Richtigkeit zu überprüfen.
  • Wenn Sie auf Hardware-Ebene über redundanten Speicher (wie RAID) verfügen, in dem dieselben Daten auf zwei oder mehr unabhängigen Laufwerken gespeichert sind, verweilt der E / A-Kopf eines Laufwerks in der Regel an einem Zylinder mit niedriger Nummer (z. B. 0,25 × MAXCYL), während der E / A-Kopf des anderen Laufwerks dazu neigt, an einem Zylinder mit hoher Nummer (z. B. 0,75 × MAXCYL) zu verweilen. Ein Lesevorgang wird zu dem Laufwerk geleitet, dessen Kopf näher am Zielzylinder liegt, sodass der größte Suchvorgang 0,25 × MAXCYL beträgt, während der Schreibvorgang zu beiden Laufwerken geleitet wird, sodass möglicherweise bis zu 0,75 Suchvorgänge erforderlich sind × MAXCYL.
  • Auf Betriebssystem- / Dateisystemebene

    • Ein Lesevorgang kann die Zugriffszeit einer Datei aktualisieren oder nicht. Einige Systeme deaktivieren dies insgesamt. Andere setzen möglicherweise nur ein Flag (z. B. in dem entsprechenden speicherresidenten Inode oder einem gleichwertigen), in dem die Datei gelesen wurde. Der festplattenresidente Inode wird möglicherweise erst einige Zeit später (asynchron) aktualisiert.
    • Ein schreiben

      • Wahrscheinlich muss die Änderungszeit der Datei aktualisiert werden.
      • Wenn Sie erstreckt , die Datei ( und nicht nur Überschreiben von Daten in der Nähe von Ende), es
        • erfordert, dass die Dateigröße geändert wird (dh in der Inode), und
        • Möglicherweise müssen Blöcke aus der freien Liste (oder einer gleichwertigen Liste) zugewiesen werden.

      und es wird wahrscheinlich nicht möglich sein, diese Aktivitäten aufzuschieben.

  • Wenn Sie für Ihre Tests eine alte Datei verwenden und den Datenträger seit der Erstellung der Datei defragmentiert haben, die Datei aber seitdem erweitert haben (auch wenn Sie die Datei in diesen Tests nicht erweitern ), kann dies der Fall sein Der Dateianfang wird in einem zusammenhängenden Bereich gespeichert, das Dateiende jedoch nicht. Aber die einzige Implikation, die ich daraus ersehen kann, ist, dass der Zugriff auf die Vorderseite der Datei möglicherweise schneller ist als der Zugriff auf das Ende. Ich verstehe nicht, wie dies zu einem Unterschied zwischen Lesen und Schreiben führen kann.
Scott
quelle
1

IMHO gibt es nur eine Suchzeit :

Die Suchzeit ist die Zeit, die ein Festplattencontroller benötigt, um ein bestimmtes Stück gespeicherter Daten zu lokalisieren. Andere Verzögerungen umfassen die Übertragungszeit (Datenrate) und die Rotationsverzögerung (Latenz).

Wenn etwas auf ein Laufwerk gelesen oder geschrieben wird, muss sich der Lese- / Schreibkopf der Disc in die richtige Position bewegen. Die tatsächliche physische Positionierung des Schreib- / Lesekopfs der Disc wird als Suchen bezeichnet. Die Zeit, die der Lese- / Schreibkopf der Platte benötigt, um sich von einem Teil der Platte zu einem anderen zu bewegen, wird als Suchzeit bezeichnet.

Kumpel
quelle
Während die physische Bewegung ähnlich viel Zeit in Anspruch nimmt, gibt es bei einigen Laufwerken geringfügige Unterschiede und große Unterschiede bei der tatsächlichen Verwendung aufgrund des Zusammenspiels von Caches, Toleranzen usw.
Qasdfdsaq