Bei Laufwerk- und Netzwerkeingabe-/-ausgabevorgängen verwendet die Confidential VM einen bestimmten Bereich im Arbeitsspeicher, den „Software Input Output Translation Lookaside Buffer“ (SWIOTLB) mit einer Standardgröße von 64 MB. Der SWIOTLB ist Teil des gesamten verfügbaren RAMs auf dem Gast.
Wenn Sie prüfen möchten, ob bei einer Confidential VM-Instanz der Fehler swiotlb buffer is full aufgetreten ist, stellen Sie eine Verbindung zur Instanz her und führen Sie den folgenden Befehl aus, um die dmesg-Logs abzufragen:
dmesg | grep 'swiotlb buffer is full'
Zur Behebung dieses Problems erhöhen Sie die SWIOTLB-Größe. Prüfen Sie vor dem Erhöhen der Größe, ob der Gast genügend RAM für den SWIOTLB und das Betriebssystem hat. Wenn Sie eine zu große SWIOTLB-Größe festlegen, kann die VM-Instanz die Arbeitsspeicherlimits überschreiten, was zu OOM-Fehlern (Out-of-Memory) oder Startfehlern führen kann.
SWIOTLB-Größe erhöhen
Hängen Sie die folgende Zeile an
/etc/default/gruban, um die Größe des SWIOTLB zu erhöhen:GRUB_CMDLINE_LINUX_DEFAULT=".... swiotlb=SIZE_IN_BYTES"Das folgende Beispiel zeigt, wie Sie die Größe des SWIOTLB auf 512 MB erhöhen:
GRUB_CMDLINE_LINUX_DEFAULT=".... swiotlb=262144"Abhängig von der Ubuntu-Version müssen Sie den String in der
grub-Datei aktualisieren. Wenn Sie beispielsweise Ubuntu 18.04 verwenden, müssen Sie denGRUB_CMDLINE_LINUXString anstelle desGRUB_CMDLINE_LINUX_DEFAULTStrings aktualisieren.Führen Sie den folgenden Befehl aus, um
grub.cfgneu zu generieren:Ubuntu
sudo update-grubAndere Distributionen
grubcfg="/etc/grub2-efi.cfg" cp $grubcfg $grubcfg.bak grub2-mkconfig -o $grubcfgStarten Sie die VM neu.
Weitere Informationen finden Sie unter How to increase SWIOTLB limit.