Leistung und Best Practices für Cloud Storage FUSE

Auf dieser Seite werden die Leistung von Cloud Storage FUSE in Bezug auf Latenz, Bandbreite und Wiederholungsversuche sowie Best Practices für die Verwendung von Cloud Storage FUSE beschrieben.

Lese- und Schreibvorgänge

Cloud Storage FUSE bietet eine bessere Leistung bei sequenziellen Lese- und Schreibarbeitslasten als zufällige Lese- und Schreibarbeitslasten. Cloud Storage FUSE verwendet eine Heuristik, um zu erkennen, wann eine Datei nacheinander gelesen wird. Dadurch kann Cloud Storage FUSE weniger große Leseanfragen über dieselbe TCP-Verbindung senden.

Zur Optimierung der sequenziellen Leseleistung wird empfohlen, Dateien mit einer Größe von 5 MB und 200 MB hochzuladen. Zur Optimierung der zufälligen Leseleistung wird empfohlen, Dateien mit einer Größe von etwa 2 MB hochzuladen und zu lesen.

Caching

Die Verwendung von Cloud Storage FUSE mit Datei, Statistik, Typ oder allen drei Cache-Typen kann die Leistung erhöhen und die Kosten senken, aber auch die Konsistenz reduzieren.

Statistik- und Typ-Cache

Die Statistik- und Typ-Caches können die Anzahl serieller Aufrufe an Cloud Storage bei wiederholten Lesevorgängen für dieselbe Datei reduzieren. Dies verbessert die Leistung. Legen Sie Statistik- und Typ-Caches entsprechend der Anzahl der Dateien fest, die wiederholte Lesevorgänge haben und von Caching profitieren könnten. Sie können die Anzahl der Dateien verwenden, um die ungefähre Größe des Caches darzustellen. Wir empfehlen für jeden Cache-Typ die folgenden Limits:

  • stat-cache-max-size-mb: Verwenden Sie den Standardwert 32,wenn Ihre Arbeitslast bis zu 20.000 Dateien umfasst. Wenn Ihre Arbeitslast mehr als 20.000 Dateien enthält, erhöhen Sie den Wert für stat-cache-max-size-mb für alle weiteren 6.000 Dateien um etwa 1.500 Byte pro Datei.

    stat-cache-max-size-mb ist ein Limit auf Bereitstellungsebene und die tatsächliche Speichernutzung kann unter dem von Ihnen angegebenen Wert liegen. Alternativ können Sie stat-cache-max-size-mb auf -1 setzen, damit der Statistik-Cache so viel Arbeitsspeicher wie nötig verwendet.

  • type-cache-max-size-mb: Verwenden Sie den Standardwert 4,wenn die maximale Anzahl von Dateien in einem einzelnen Verzeichnis aus dem bereitgestellten Bucket maximal 20.000 Dateien umfasst. Wenn die maximale Anzahl von Dateien in einem einzelnen Verzeichnis, das Sie bereitstellen, mehr als 20.000 Dateien enthält, erhöhen Sie den Wert type-cache-max-size-mb um 1 pro 5.000 Dateien, ca. 200 Byte pro Datei.

    type-cache-max-size-mb ist ein Limit auf Bereitstellungsebene und die tatsächliche Speichernutzung kann geringer als der angegebene Wert sein. Alternativ können Sie den Wert type-cache-max-size-mb auf -1 setzen, damit der Typ-Cache so viel Speicher wie nötig verwenden kann.

Wir empfehlen die Ausführung einer vollständigen Auflistung. Dazu übergeben Sie vor dem Ausführen der Arbeitslast ls -R an Ihren bereitgestellten Bucket, um die Leistung bei der ersten Ausführung zu verbessern. Dazu wird der Typ-Cache vorab in einer schnelleren Batchmethode ausgefüllt.

Best Practices für das Datei-Caching

Achten Sie darauf, dass Ihr gesamtes Dataset der Cache-Kapazität entspricht, um eine optimale Leistung zu erzielen und das Cache-Seitenflattern zu vermeiden. Berücksichtigen Sie auch die maximale Kapazität und Leistung, die Ihre Cache-Medien bieten können. Wenn Sie die maximale Leistung, das Kapazitätslimit oder beides des bereitgestellten Caches erreichen, ist es sinnvoll, direkt aus Cloud Storage zu lesen, das deutlich höhere Limits als Cloud Storage FUSE hat.

IOPS (Abfragen pro Sekunde)

Filestore ist eine bessere Option als Cloud Storage FUSE für Arbeitslasten, die hohe sofortige Eingabe/-Ausgabevorgänge pro Sekunde (IOPS) erfordern, die in Cloud Storage auch als „Abfragen pro Sekunde“ bezeichnet werden: Filestore ist auch die bessere Option für sehr hohe IOPS auf einem einzelnen Dateisystem und geringere Latenz.

Alternativ können Sie auch das Cloud Storage FUSE-Dateicache-Feature verwenden, um auf den Leistungsmerkmalen der zugrunde liegenden Cache-Medien aufzubauen, wenn es hohe IOPS und niedrige Latenz bietet.

Latenz und Durchsatz

Cloud Storage FUSE hat eine höhere Latenz als ein lokales Dateisystem. Der Durchsatz wird reduziert, wenn Sie kleine Dateien einzeln lesen oder schreiben, da dies zu mehreren separaten API-Aufrufen führt. Wenn Sie mehrere große Dateien gleichzeitig lesen oder schreiben, können Sie den Durchsatz erhöhen. Verwenden Sie die Cache-Funktion von Cloud Storage FUSE, um die Leistung für kleine und zufällige E/A-Vorgänge zu verbessern.

Die Dateisystemlatenz von Cloud Storage FUSE wirkt sich auf rsync aus, das jeweils nur eine Datei liest und schreibt. Wenn Sie mehrere Dateien parallel in oder aus Ihrem Bucket übertragen möchten, verwenden Sie die Google Cloud CLI, indem Sie gcloud storage rsync ausführen. Weitere Informationen finden Sie in der Dokumentation zu rsync.

Maximalen Durchsatz erreichen

Verwenden Sie eine Maschine mit genügend CPU-Ressourcen, um den Durchsatz zu erhöhen und die Netzwerkschnittstellenkarte (Network Interface Card, NIC) zu sättigen, um einen maximalen Durchsatz zu erzielen. Unzureichende CPU-Ressourcen können zu einer Drosselung durch Cloud Storage FUSE führen.

Wenn Sie Google Kubernetes Engine verwenden, erhöhen Sie die CPU-Zuweisung dem Cloud Storage FUSE-Sidecar-Container, wenn Ihre Arbeitslasten einen höheren Durchsatz benötigen. Sie können die vom Sidecar-Container verwendeten Ressourcen erhöhen oder unbegrenzte Ressourcen zuweisen.

Ratenbegrenzung

Um die Rate zu begrenzen, die Cloud Storage FUSE an Cloud Storage sendet, können Sie die folgenden Optionen als Teil Ihres gcsfuse-Befehls verwenden:

  • Die Option --limit-ops-per-sec steuert die Rate, mit der Cloud Storage FUSE Anfragen an Cloud Storage sendet.

  • Die Option --limit-bytes-per-sec steuert die Bandbreite, mit der Cloud Storage FUSE Daten aus Cloud Storage herunterlädt.

Weitere Informationen zu diesen Optionen finden Sie in der Dokumentation zur gcsfuse-Befehlszeile.

Alle Ratenbegrenzungen sind ungefähre Angaben und werden über ein Zeitfenster von 8 Stunden ausgeführt. Standardmäßig werden keine Ratenbegrenzungen angewendet.

Steuerung des Uploadverfahrens

Standardmäßig werden fehlgeschlagene Anfragen von Cloud Storage FUSE an Cloud Storage mit exponentiellem Backoff wiederholt, bis eine festgelegte maximale Backoff-Dauer erreicht wurde, die standardmäßig den Wert 30s (30 Sekunden) hat. Wenn die Backoff-Dauer die angegebene maximale Dauer überschreitet, wird der Wiederholungsversuch mit der angegebenen maximalen Dauer fortgesetzt. Sie können die Option --max-retry-sleep als Teil eines gcsfuse-Aufrufs verwenden, um die Backoff-Dauer anzugeben.

Weitere Informationen zur Option --max-retry-sleep finden Sie in der Dokumentation zur gcsfuse-Befehlszeile.

Verzeichnissemantik

Cloud Storage arbeitet mit einem flachen Namespace, das heißt, dass Verzeichnisse innerhalb von Cloud Storage eigentlich nicht existieren. Verzeichnisse werden stattdessen durch Objektnamen dargestellt, die mit einem Schrägstrich (/) enden (z. B. steht im Objektnamen my-bucket/directory/file.txt, my-bucket/directory/ für ein Verzeichnis). Verzeichnisse, die als Teil von Objektnamen, aber nicht als tatsächliche Objekte vorhanden sind, werden als implizit definierte Verzeichnisse bezeichnet.

Wenn Sie einen Bucket mit implizit definierten Verzeichnissen bereitstellen, kann Cloud Storage FUSE diese Verzeichnisse standardmäßig nicht ableiten oder darauf zugreifen. Cloud Storage FUSE kann nur explizit definierte Verzeichnisse ableiten, d. h. das Verzeichnis ist im Cloud Storage-Bucket als tatsächliches Objekt vorhanden.

Sie stellen beispielsweise einen Bucket namens my-bucket bereit, der das Objekt my-bucket/directory/file1.txt enthält. Wenn Sie ls am Bucket-Bereitstellungspunkt ausführen, kann Cloud Storage FUSE nicht auf das my-bucket/directory/-Verzeichnis oder das darin enthaltene file1.txt-Objekt zugreifen, da directory nicht als ein Objekt in Cloud Storage existiert. Damit Cloud Storage FUSE Verzeichnisse und die darin enthaltenen Objekte ableiten kann, können Sie die Verzeichnisse explizit definieren. Dazu erstellen Sie sie mit dem Befehl mkdir in Ihrem lokalen Dateisystem oder fügen die Option --implicit-dirs im Befehl gcsfuse ein.

Weitere Informationen zur Verzeichnissemantik sowie zum Bereitstellen von Buckets mit vorhandenen Präfixen finden Sie unter Dateien und Verzeichnisse in der GitHub-Dokumentation. Weitere Informationen zur Option --implicit-dirs finden Sie in der Dokumentation zur Cloud Storage FUSE-Befehlszeile.

Überlegungen zum Auflisten von Objekten

Wenn Sie alle Objekte in einem bereitgestellten Bucket auflisten (z. B. durch Ausführen von ls), ruft Cloud Storage FUSE die Objects: list API in Cloud Storage auf. Die API paginiert Ergebnisse. Das bedeutet, dass Cloud Storage FUSE möglicherweise mehrere Aufrufe ausführen muss, je nachdem, wie viele Objekte sich im Bucket befinden. Beachten Sie, dass dadurch ein Auflistenvorgang teuer und langsam werden kann.

Benchmarks

Eine Anleitung zur Durchführung von Lasttests in Cloud Storage FUSE finden Sie in der Dokumentation „Leistungsbenchmarks in der GitHub“.

Logging

Zum Konfigurieren des Loggings für Cloud Storage FUSE-Aktivitäten, einschließlich der Logrotation, geben Sie die Felder unter dem Schlüssel logging in einer Cloud Storage FUSE-Konfigurationsdatei an. Standardmäßig werden Logdateien rotiert und verbrauchen ungefähr 1 GiB Speicherplatz.