Cloud Storage FUSE bietet vier 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.
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
unda3-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.
Dateicache aktivieren und konfigurieren
Der Dateicache ist standardmäßig deaktiviert und kann mit einer Cloud Storage FUSE-Konfigurationsdatei aktiviert und konfiguriert werden. Sie können das Caching-Verhalten mit den folgenden Feldern steuern:
max-size-mb
: Damit wird die maximale Kapazität Ihres Cache-Ordners gesteuert, die von im Cache gespeicherten Daten belegt werden kann. Das Feldmax-size-mb
ist standardmäßig so eingestellt, dass die im Cache gespeicherten Daten wachsen können, bis sie die gesamte verfügbare Kapazität im Cacheverzeichnis belegen.cache-dir
: Gibt ein Verzeichnis zum Speichern von Dateicache-Daten an. Die Angabe eines Cache-Verzeichnisses ist eine Voraussetzung für die Aktivierung des Datei-Caches.ttl-secs
: Bestimmt, wann im Cache gespeicherte Daten veraltet sind und aus Cloud Storage aktualisiert werden müssen. Standardmäßig läuft das Feldttl-secs
nach 60 Sekunden Inaktivität ab und wird aus Cloud Storage aktualisiert. Wir empfehlen, diesen Wert zu erhöhen.Informationen zum Steuern der Cachedaten-Entwertung finden Sie unter Cachedaten-Entwertung konfigurieren. Weitere Informationen zur Bereinigung von im Cache gespeicherten Daten finden Sie unter Bereinigung.
enable-parallel-downloads
: Beschleunigt die Leseleistung für große Dateien mit einer Größe von über 1 GB, einschließlich des ersten Lesens, indem mehrere Worker eine Datei parallel herunterladen und dabei das Dateicache-Verzeichnis als Prefetch-Puffer verwenden. Wir empfehlen, parallele Downloads für das Serving und das Wiederherstellen von Checkpoints zu aktivieren. Weitere Informationen zum Aktivieren und Konfigurieren paralleler Downloads finden Sie unter Parallele Downloads konfigurieren.
Zufällige und teilweise Lesevorgänge
Wenn der erste Dateilesevorgang am Anfang der Datei (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.
Persistenz
Cloud Storage FUSE-Caches werden beim Trennen und Neustart nicht beibehalten. Beim Datei-Caching werden die Metadateneinträge, die zum Bereitstellen von Dateien aus dem Cache erforderlich sind, beim Aushängen und Neustarten entfernt. Die Daten im Dateicache befinden sich jedoch möglicherweise noch im Dateiverzeichnis. Sie sollten Daten im Dateicache-Verzeichnis nach dem Trennen oder Neustarten löschen.
Sicherheit
Wenn Sie das Caching aktivieren, verwendet Cloud Storage FUSE das Cache-Verzeichnis, das Sie mit dem Feld cache-dir
angegeben haben, als zugrunde liegendes Verzeichnis für den Cache, 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. Daher empfehlen wir, dasselbe Cache-Verzeichnis nicht für verschiedene Cloud Storage FUSE-Prozesse zu verwenden.
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 -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. Weitere Informationen zum Statistik-Caching finden Sie in der Semantik-Dokumentation auf GitHub.
Der Statistik-Cache ist standardmäßig aktiviert und kann mit einer Cloud Storage FUSE-Konfigurationsdatei konfiguriert werden. Die maximale Größe des Caches wird über das Feld stat-cache-max-size-mb
gesteuert, das den Standardwert 32
(32 MB) hat. Die TTL des Cache wird über das Feld ttl-secs
gesteuert, das den Standardwert 60
(60 Sekunden) hat.
Best Practices
Für das Statistik-Caching empfehlen wir den Standardwert 32
für das Feld stat-cache-max-size-mb
, wenn Ihre Arbeitslast bis zu 20.000 Dateien umfasst.
Wenn Ihre Arbeitslast mehr als 20.000 Dateien enthält, erhöhen Sie den Wert stat-cache-max-size-mb
um 10 pro weitere 6.000 Dateien, also etwa 1.500 Byte pro Datei.
stat-cache-max-size-mb
ist ein Limit auf Bereitstellungsebene. 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.
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. Weitere Informationen zum Typ-Caching finden Sie in der Semantik-Dokumentation auf GitHub.
Der Typ-Cache ist standardmäßig aktiviert und kann mit einer Cloud Storage FUSE-Konfigurationsdatei konfiguriert werden. Die maximale Größe des Caches wird über das Feld type-cache-max-size-mb
gesteuert, das den Standardwert 4
(4 MB) hat. Die TTL des Cache wird über das Feld ttl-secs
gesteuert, das den Standardwert 60
(60 Sekunden) hat.
Best Practices
Für das Typ-Caching empfehlen wir, den Standardwert 4
für das Feld type-cache-max-size-mb
zu verwenden,wenn die maximale Anzahl von Dateien in einem einzelnen Verzeichnis des bereitgestellten Buckets 20.000 Dateien oder weniger beträgt. 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 unter dem angegebenen Wert liegen. Alternativ können Sie den Wert für type-cache-max-size-mb
auf -1
festlegen, damit der Typ-Cache so viel Arbeitsspeicher wie erforderlich verwenden kann.
Caching-Übersicht auflisten
Der Listen-Cache von Cloud Storage FUSE ist ein Cache für Verzeichnis- und Dateilisten oder ls
, Antworten zur Verbesserung der Geschwindigkeit von Listenvorgängen. Das Caching von Listen ist besonders nützlich für Arbeitslasten, die im Rahmen der Ausführung vollständige Verzeichniseinträge wiederholen, z. B. KI/ML-Trainingsläufe.
Der Listen-Cache wird im Arbeitsspeicher des Seitencache gespeichert. Dieser wird vom Kernel basierend auf der Arbeitsspeicherverfügbarkeit gesteuert. Im Gegensatz dazu werden Statistik- und Typ-Caches im Arbeitsspeicher Ihres Computers gespeichert und von Cloud Storage FUSE gesteuert.
Listen-Caching aktivieren
Der Listen-Cache ist standardmäßig deaktiviert.
Sie können das Listen-Caching mit dem Feld kernel-list-cache-ttl-secs
mit einem der folgenden Werte aktivieren:
Ein positiver Wert, der die Gültigkeitsdauer (Time to Live, TTL) in Sekunden darstellt, um die Antwort der Verzeichnisliste im Seitencache des Kernels zu speichern.
Der Wert
-1
, um den Ablauf des Eintrags zu umgehen und die Listenantwort aus dem Cache zurückzugeben, wenn sie verfügbar ist.
Weitere Informationen zum Aktivieren und Konfigurieren des Listen-Cachings finden Sie in der Konfigurationsdatei für Cloud Storage FUSE.
Cache-Entwertung konfigurieren
In den folgenden Abschnitten wird beschrieben, wie Sie die Cache-Entwertung für alle Cache-Typen konfigurieren.
Datei-, Statistik- und Typ-Cache-Entwertung
Für Datei-, Statistik- und Typ-Caches gibt das Feld ttl-secs
die TTL in Sekunden an, für die im Cache gespeicherte Metadaten ab dem Zeitpunkt verwendet werden, zu dem sie aus Cloud Storage abgerufen werden, bis sie ablaufen und aktualisiert werden müssen.
Sie können ttl-secs
in einer Cloud Storage FUSE-Konfigurationsdatei konfigurieren.
Das Feld ttl-secs
ist standardmäßig auf 60
gesetzt.
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.
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. Wenn ein Metadateneintrag ungültig wird, werden nachfolgende Lesevorgänge von Cloud Storage abgefragt.
Sie können nicht nur Werte angeben, die eine bestimmte TTL in Sekunden darstellen, bevor die im Cache gespeicherten Metadaten ablaufen und aktualisiert werden müssen. Mit den folgenden Werten können Sie auch angeben, wie die Datei gelesen wird:
ttl-secs
-Wert von0
: Sorgt dafür, dass die Datei mit den aktuellsten Daten gelesen wird. Es wird einGET
-Metadatenaufruf an Cloud Storage gesendet, 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 Angabe eines anderen Werts als0
kann zu einer geringeren Leistung führen, 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 Metadaten-AufrufGET
mit Konsistenz aus dem Cache bereitgestellt.ttl-secs
-Wert von-1
: Sorgt dafür, dass die Datei immer aus dem Cache gelesen wird, 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.
Cache-Entwertung auflisten
Die Invalidation des Listen-Caches wird festgelegt, indem im Feld kernel-list-cache-ttl-secs
ein Wert größer als 0
angegeben wird. Die Antwort der Verzeichnisliste wird auf der Cache-Seite des Kernels gespeichert und bleibt für die von Ihnen angegebene Zeit gültig.
Standardmäßig ist der Listen-Cache deaktiviert und auf den Wert 0
festgelegt. Wenn Sie den Wert
-1
, Cloud Storage FUSE deaktiviert den Listen-Cache-Ablauf und gibt die Listenantwort aus dem Cache zurück, wenn sie verfügbar ist.
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. Informationen zum Verbessern der Leistung beim ersten Lesen finden Sie unter Leseleistung beim ersten Lesen verbessern.
Hinweise
Wenn Sie das Datei-, Statistik-, Typ- oder Listen-Caching aktivieren, kann die Leistung erhöht, aber die Konsistenz verringert werden. Das tritt in der Regel auf, wenn Sie mit mehreren Clients mit hoher Änderungsrate auf denselben Bucket zugreifen. Um die Auswirkungen auf die Konsistenz zu minimieren, empfehlen wir, Speicherorte als schreibgeschützt zu mounten. Weitere Informationen zum Caching-Verhalten finden Sie in der Semantik-Dokumentation zu Cloud Storage FUSE 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.
Achten Sie darauf, dass Ihr gesamter Datensatz in den Cache passt, um ein Überschreiben des Caches zu vermeiden. Berücksichtigen Sie auch die maximale Kapazität und Leistung, die Ihre Cache-Medien bieten können. Wenn Sie die maximale Leistung oder das Kapazitätslimit des bereitgestellten Caches oder beides erreichen, ist es sinnvoll, direkt aus Cloud Storage zu lesen, da dieses deutlich höhere Limits als Cloud Storage FUSE hat.