Übersicht über das Caching in Cloud Storage FUSE

Cloud Storage FUSE bietet drei Arten von optionalem Caching, um die Leistung des Datenabrufs zu erhöhen:

Datei-Caching – Übersicht

Der Cloud Storage FUSE-Datei-Cache ist ein clientbasierter Lese-Cache, mit dem Dateilesevorgänge wiederholt werden können, um sie von einem schnelleren Cache-Speicher Ihrer Wahl bereitzustellen. Der Datei-Cache ist standardmäßig deaktiviert.

Vorteile des Datei-Caching

  • Verbesserte Leistung: Datei-Caching verbessert Latenz und Durchsatz, da Lesevorgänge direkt aus den Cache-Medien bereitgestellt werden. Kleine und zufällige E/A-Vorgänge können erheblich schneller sein, wenn sie aus dem Cache bereitgestellt werden.

  • Vorhandene Kapazität nutzen: Beim Datei-Caching kann die vorhandene bereitgestellte Maschinenkapazität für das Cache-Verzeichnis verwendet werden, ohne dass zusätzlicher Speicher in Rechnung gestellt wird. Hierzu gehören lokale SSDs, die im Lieferumfang von Cloud GPU-Maschinentypen enthalten sind, z. B. a2-ultragpu und a3-highgpu, Persistent Disk (also das Bootlaufwerk, das von jeder VM verwendet wird) oder In-Memory-/tmpfs.

  • Reduzierte Gebühren: Cache-Treffer werden lokal bereitgestellt und es fallen keine Cloud Storage-Vorgangs- oder Netzwerkgebühren an.

  • Verbesserte Gesamtbetriebskosten für KI- und ML-Training: Datei-Caching erhöht die Cloud-GPUs und die Cloud TPU-Auslastung, da Daten schneller geladen werden, was die Trainingszeit verkürzt und ein höheres Preis-Leistungs-Verhältnis für KI- und ML-Trainingsarbeitslasten bietet.

Datei-Cache aktivieren und konfigurieren

Wenn Sie das Caching-Feature für Dateien aktivieren, legen Sie Felder in einer Cloud Storage FUSE-Konfigurationsdatei fest. In der folgenden Liste werden die Felder beschrieben, mit denen Sie das Datei-Caching steuern können:

  • Sie können die maximale Kapazität, die die im Cache gespeicherten Daten in Ihrem angegebenen Cache-Verzeichnis belegen können, über max-size-mb steuern.

    Das Feld max-size-mb ist standardmäßig auf den Wert -1 gesetzt, sodass die im Cache gespeicherten Daten wachsen können, bis sie die gesamte verfügbare Kapazität in dem Verzeichnis belegen, das Sie als Wert für cache-dir festlegen.

  • Mit dem Feld cache-dir können Sie ein Verzeichnis zum Speichern von Datei-Cache-Daten angeben. Beachten Sie, dass die Angabe eines Cache-Verzeichnisses eine Voraussetzung für die Aktivierung des Datei-Caches ist.

  • Sie können den Zeitpunkt steuern, zu dem Daten im Cache mit dem Feld ttl-secs entwertet werden. Standardmäßig ist das Feld ttl-secs auf 60 gesetzt, was 60 Sekunden angibt. Wir empfehlen, den Wert zu erhöhen.

    Weitere Informationen zur Steuerung der Entwertung von im Cache gespeicherten Daten finden Sie unter Cache-Datenentwertung konfigurieren. Weitere Informationen zum Entfernen von im Cache gespeicherten Daten finden Sie unter Bereinigung.

Zufällige und teilweise Lesevorgänge

Wenn der erste Dateilesevorgang am Anfang der Datei oder dem Offset 0 beginnt, nimmt der Cloud Storage FUSE-Dateicache die gesamte Datei auf und lädt sie in den Cache, auch wenn Sie nur aus einer kleinen Bereichsuntergruppe lesen. Dadurch können nachfolgende zufällige oder partielle Lesevorgänge aus demselben Objekt direkt aus dem Cache bereitgestellt werden.

Wenn der erste Lesevorgang einer Datei von einem anderen Ort als dem Offset 0 beginnt, löst Cloud Storage FUSE standardmäßig keinen asynchronen vollständigen Dateiabruf aus. Um dieses Verhalten zu ändern, sodass Cloud Storage FUSE bei einem ersten zufälligen Lesevorgang eine Datei in den Cache aufnimmt, setzen Sie das Flag cache-file-for-range-read auf true. Wir empfehlen, das Flag cache-file-for-range-read zu aktivieren, wenn viele verschiedene zufällige oder partielle Lesevorgänge für dasselbe Objekt ausgeführt werden.

Bereinigung

Das Entfernen von im Cache gespeicherten Metadaten und Daten basiert auf einem am weitesten in der Vergangenheit verwendeten (LRU)-Algorithmus, der beginnt, sobald der pro max-size-mb-Limit konfigurierte Speicherplatzgrenzwert erreicht ist. Wenn der Eintrag basierend auf seiner TTL abläuft, wird zuerst ein Get-Metadatenaufruf an Cloud Storage ausgeführt, der Netzwerklatenzen unterliegt. Da die Daten und Metadaten separat verwaltet werden, kann es sein, dass eine Entität entfernt oder ungültig wird und die andere nicht.

Leistung

Das Caching von Cloud Storage FUSE funktioniert mit jedem benutzerdefinierten Verzeichnis, das durch den von Ihnen ausgewählten Speicher gesichert ist, z. B. lokale SSD, nichtflüchtiger Speicher, In-Memory-tmpfs oder Filestore. Die Cache-Leistung von Cloud Storage FUSE entspricht mit minimalem Aufwand dem zugrunde liegenden Speicher, der vom Cache verwendet wird. Weitere Informationen zur Caching-Leistung finden Sie unter Cloud Storage FUSE-Caching-Leistung und Best Practices.

Persistenz

Cloud Storage FUSE-Caches werden beim Trennen und Neustart nicht beibehalten, wenn alle Metadateneinträge entfernt wurden. Daten im Dateicache werden jedoch nicht bereinigt und sollten vom Nutzer gelöscht werden oder können in nachfolgenden Bereitstellungsvorgängen wiederverwendet werden, sobald die Metadaten wieder ausgefüllt wurden.

Sicherheit

Wenn Sie das Caching aktivieren, verwendet Cloud Storage FUSE das angegebene cache-dir, das Sie als zugrunde liegendes Verzeichnis für den Cache festlegen, um Dateien aus Ihrem Cloud Storage-Bucket in einem unverschlüsselten Format zu speichern. Jeder Nutzer oder Prozess, der Zugriff auf dieses Cache-Verzeichnis hat, kann auf diese Dateien zugreifen. Wir empfehlen, den Zugriff auf dieses Verzeichnis einzuschränken.

Direkter oder Mehrfachzugriff auf den Dateicache

Die Verwendung eines anderen Prozesses als Cloud Storage FUSE für den Zugriff auf oder die Änderung einer Datei im Cache-Verzeichnis kann zu Datenbeschädigungen führen. Cloud Storage FUSE-Caches sind für jeden ausgeführten Cloud Storage FUSE-Prozess spezifisch, ohne Kenntnis der verschiedenen Cloud Storage FUSE-Prozesse, die auf demselben oder verschiedenen Computern ausgeführt werden. Anschließend sollte dasselbe Cache-Verzeichnis nicht von verschiedenen Cloud Storage FUSE-Prozessen verwendet werden.

Wenn mehrere Cloud Storage FUSE-Prozesse auf demselben Computer ausgeführt werden müssen, sollte jeder Cloud Storage FUSE-Prozess ein eigenes spezifisches Cache-Verzeichnis erhalten oder eine der folgenden Methoden verwenden, um sicherzustellen, dass Ihre Daten nicht beschädigt werden:

  • Alle Buckets mit einem freigegebenen Cache bereitstellen: Verwenden Sie die dynamische Bereitstellung, um alle Buckets, auf die Sie Zugriff haben, in einem einzigen Prozess mit einem freigegebenen Cache bereitzustellen. Weitere Informationen finden Sie unter Dynamische Bereitstellung von Cloud Storage FUSE.

  • Caching für einen bestimmten Bucket aktivieren: Sie können das Caching nur für einen bestimmten Bucket mithilfe der statischen Bereitstellung aktivieren. Weitere Informationen finden Sie unter Statische Bereitstellung von Cloud Storage FUSE.

  • Nur einen bestimmten Ordner oder ein bestimmtes Verzeichnis im Cache speichern: Anstatt einen ganzen Bucket bereitzustellen, können Sie mit der –only-dir-Option nur einen bestimmten Ordner auf Bucket-Ebene bereitstellen und im Cache speichern. Weitere Informationen finden Sie unter Verzeichnis in einem Bucket bereitstellen.

Caching von Statistiken

Der Statistik-Cache von Cloud Storage FUSE ist ein Cache für Objektmetadaten, der die Leistung für Vorgänge verbessert, die für Dateiattribute spezifisch sind, z. B. Größe, Änderungszeit oder Berechtigungen. Die Verwendung des Statistik-Cache verbessert die Latenz, da die im Cache gespeicherten Daten zum Ausführen von Vorgängen verwendet werden, anstatt eine Statistik-Objektanfrage an Cloud Storage zu senden. Standardmäßig ist der Statistik-Cache mit einem stat-cache-max-size-mb-Wert von 32 MB und einem ttl-secs-Wert auf 60 Sekunden aktiviert. Wir empfehlen, beide Werte zu erhöhen. Weitere Informationen zum Statistik-Caching finden Sie in der Semantik-Dokumentation auf GitHub.

Typ-Caching – Übersicht

Der Cache des Cloud Storage FUSE-Typs ist ein Metadaten-Cache, der die Leistung für Metadatenvorgänge beschleunigt, die für das Vorhandensein von Dateien oder Verzeichnissen spezifisch sind. Die Verwendung des Typcache verbessert die Latenz, da die Anzahl der Anfragen an Cloud Storage reduziert wird, um zu prüfen, ob eine Datei oder ein Verzeichnis vorhanden ist, indem diese Informationen lokal gespeichert werden. Standardmäßig ist der Typcache mit einem type-cache-max-size-mb-Wert von 4 MB und einem ttl-secs-Wert von 60 Sekunden aktiviert. Wir empfehlen, beide Werte zu erhöhen. Weitere Informationen zum Typ-Caching finden Sie in der Semantik-Dokumentation auf GitHub.

Cache-Entwertung konfigurieren

Das Feld ttl-secs gibt an, wie lange Metadaten im Dateicache gültig bleiben. Das Feld stellt die Gültigkeitsdauer (TTL) von im Cache gespeicherten Daten dar, wobei die im Cache gespeicherten Daten nach Ablauf der TTL ungültig werden. Wenn ein Metadateneintrag ungültig wird, werden nachfolgende Lesevorgänge von Cloud Storage abgefragt.

Sie können ttl-secs in einer Cloud Storage FUSE-Konfigurationsdatei konfigurieren.

Wenn Sie einen Wert für ttl-secs angeben, der größer als 0 ist, bleiben die Metadaten für den Dateicache nur für den von Ihnen angegebenen Zeitraum gültig. Ein Standardwert von 60 ist für alle Cache-Typen festgelegt. Für das Datei-Caching empfehlen wir, den Wert ttl-secs basierend auf der erwarteten Zeit zwischen wiederholten Lesevorgängen zu erhöhen, während Sie Konsistenzanforderungen ausgleichen. Abhängig von der Wichtigkeit und Häufigkeit der Datenänderungen empfehlen wir, den Wert ttl-secs so hoch wie möglich für Ihre Arbeitslast festzulegen.

Neben der Angabe eines Werts, der die Anzahl der Sekunden darstellt, unterstützt das Flag ttl-secs auch die Werte von 0 und -1.

  • ttl-secs-Wert von 0: Wenn Sie den Wert 0 eingeben, sorgt das Flag ttl-secs dafür, dass die aktuellste Datei gelesen wird. Einen Get-Metadatenaufruf an Cloud Storage, der die bereitgestellte Datei prüft, um sicherzustellen, dass der Cache konsistent ist. Wenn die Datei im Cache aktuell ist, wird sie direkt aus dem Cache bereitgestellt. Die Leistung ist weniger effektiv als bei der Angabe eines anderen ttl-secs-Werts als 0, da immer ein Aufruf an Cloud Storage erfolgen muss, damit zuerst die Metadaten geprüft werden. Befindet sich die Datei im Cache und hat sich nicht geändert, wird die Datei nach dem Aufruf der "Get-Metadaten" mit Konsistenz aus dem Cache bereitgestellt.

  • ttl-secs-Wert von -1: Wenn Sie den Wert -1 eingeben, wird die Datei immer aus dem Cache gelesen, sofern sie verfügbar ist, ohne auf Konsistenz zu prüfen. Dateien, die ohne Konsistenzprüfung bereitgestellt werden, können inkonsistente Daten liefern. Daher sollten sie nur vorübergehend für Arbeitslasten verwendet werden, die in Jobs mit nicht ändernden Daten ausgeführt werden. Die Verwendung eines Werts von -1 ist beispielsweise für das Training mit maschinellem Lernen nützlich, bei dem dieselben Daten über mehrere Epochen ohne Änderungen gelesen werden.

Lesepfad für im Cache gespeicherte Daten

Der Cloud Storage FUSE-Cache beschleunigt wiederholte Lesevorgänge, nachdem sie in den Cache aufgenommen wurden. Sowohl erstmalige Lesevorgänge als auch Cache-Fehler werden direkt an Cloud Storage übertragen und unterliegen den normalen Cloud Storage-Netzwerklatenzen.

Hinweise

  • Die Verwendung von Cloud Storage FUSE mit Datei-Caching, Statistik-Caching oder Typ-Caching kann die Leistung erhöhen, aber die Konsistenz verringern. Weitere Informationen finden Sie in der Semantics-Dokumentation auf GitHub.

  • Wenn ein Datei-Cache-Eintrag noch nicht anhand seiner TTL abgelaufen ist und sich die Datei im Cache befindet, wird der gesamte Vorgang vom lokalen Client-Cache bereitgestellt, ohne dass eine Anfrage an Cloud Storage gesendet wird.

  • Wenn ein Datei-Cache-Eintrag basierend auf seiner TTL abgelaufen ist, wird zuerst ein "Get-Metadatenaufruf" an Cloud Storage ausgeführt. Wenn sich die Datei nicht im Cache befindet, wird die Datei aus Cloud Storage abgerufen. Beide Vorgänge unterliegen Netzwerklatenzen. Wenn der Metadateneintrag ungültig wurde, sich die Datei jedoch im Cache befindet und sich die Objektgenerierung nicht geändert hat, wird die Datei erst dann vom Cache bereitgestellt, wenn der Aufruf der Metadaten aufgerufen wurde, um zu prüfen, ob die Daten gültig sind.

  • Wenn ein Cloud Storage FUSE-Client eine im Cache gespeicherte Datei oder ihre Metadaten ändert, wird die Datei sofort ungültig und die Konsistenz wird beim folgenden Lesen durch denselben Client gewährleistet. Wenn jedoch verschiedene Clients auf dieselbe Datei oder ihre Metadaten zugreifen und ihre Einträge im Cache gespeichert sind, wird die im Cache gespeicherte Version der Datei oder der Metadaten gelesen und nicht die aktualisierte Version, bis die Datei durch diese bestimmte TTL-Einstellung des jeweiligen Clients entwertet wird.

Nächste Schritte