完全な SWIOTLB

ディスクとネットワークの入出力オペレーションに対して、Confidential VM は SWIOTLB(Software Input Output Translation Lookaside Buffer)というメモリ内の特定の領域を使用します(デフォルトのサイズは 64 MB)。SWIOTLB はゲストで使用可能な RAM の合計容量に含まれます。

Confidential VM インスタンスで swiotlb buffer is full エラーが発生したかどうかを確認するには、インスタンスに接続し、次のコマンドを実行して dmesg ログをクエリします。

dmesg | grep 'swiotlb buffer is full'

この問題を解決するには、SWIOTLB のサイズを増やします。サイズを増やす前に、SWIOTLB とオペレーティング システムに十分な RAM 容量がゲストに残っていることを確認してください。

SWIOTLB のサイズを増やす

  1. SWIOTLB のサイズを増やすには、次の行を /etc/default/grub に追加します。

    GRUB_CMDLINE_LINUX_DEFAULT=".... swiotlb=SIZE_IN_BYTES"
    

    次の例は、SWIOTLB のサイズを 512 MB に増やす方法を示しています。

    GRUB_CMDLINE_LINUX_DEFAULT=".... swiotlb=262144"
    

    Ubuntu のバージョンに基づいて、grub ファイルの文字列を更新する必要があります。たとえば、Ubuntu 18.04 を使用している場合は、GRUB_CMDLINE_LINUX_DEFAULT 文字列ではなく GRUB_CMDLINE_LINUX 文字列を更新する必要があります。

  2. 次のコマンドを実行して grub.cfg を再生成します。

    Ubuntu

    sudo update-grub
    

    その他のディストリビューション

    grubcfg="/etc/grub2-efi.cfg"
    cp $grubcfg $grubcfg.bak
    grub2-mkconfig -o $grubcfg
    
  3. VM を再起動します。

詳細については、SWIOTLB の上限を増やす方法をご覧ください。